CSS: Происхождение каскадирования
Происхождение Каскад
Таблицы стилей могут иметь три разных источника: автор, пользователь и пользовательский агент.
* Автор: Автор определяет таблицы стилей для исходного документа в соответствии с соглашениями языка документа. Например, в HTML таблицы стилей могут быть включены в документ или иметь внешнюю ссылку.
* Пользователь: пользователь может указывать информацию о стиле для конкретного документа. Например, пользователь может указать файл, который содержит таблицу стилей, или пользовательский агент может предоставить интерфейс, который генерирует таблицу стилей пользователя (или ведет себя так, как если бы он это сделал).
* Пользовательский агент: Соответствующие пользовательские агенты должны применять таблицу стилей по умолчанию (или вести себя так, как будто они это сделали) перед всеми другими таблицами стилей для документа. Таблица стилей агента пользователя по умолчанию должна представлять элементы языка документа способами, которые удовлетворяют общим ожиданиям представления для языка документа (например, для визуальных браузеров элемент EM в HTML представлен с использованием курсивного шрифта). См. «Образец таблицы стилей для HTML 4.0» для рекомендуемой таблицы стилей по умолчанию для документов HTML 4.0.
Обратите внимание, что таблица стилей по умолчанию может измениться, если системные настройки изменены пользователем (например, системные цвета). Однако из-за ограничений во внутренней реализации пользовательского агента может быть невозможно изменить значения в таблице стилей по умолчанию.
Таблицы стилей из этих трех источников будут перекрываться по объему, и они взаимодействуют в соответствии с каскадом.
Каскад CSS назначает вес каждому правилу стиля. Когда применяются несколько правил, приоритет имеет тот, который имеет наибольший вес.
По умолчанию правила в авторских таблицах стилей имеют больший вес, чем правила в пользовательских таблицах стилей. Однако для «! Важных» правил приоритет меняется. Все правила пользователя и автора имеют больший вес, чем правила в таблице стилей UA по умолчанию.
Импортируемые таблицы стилей также каскадные, и их вес зависит от порядка импорта. Правила, указанные в данной таблице стилей, переопределяют правила, импортированные из других таблиц стилей. Импортированные таблицы стилей могут рекурсивно импортировать и переопределять другие таблицы стилей, и применяются те же правила приоритета.
Орден Каскадирования
Чтобы найти значение для комбинации элемент / свойство, пользовательские агенты должны подать заявку на следующий порядок сортировки:
1. Найдите все объявления, которые относятся к рассматриваемому элементу и свойству, для целевого типа носителя. Объявления применяются, если связанный селектор соответствует рассматриваемому элементу.
2. Основной вид объявлений по весу и происхождению: для обычных объявлений авторские таблицы стилей переопределяют пользовательские таблицы стилей, которые переопределяют таблицу стилей по умолчанию. Для объявлений "! Important" таблицы стилей пользователя переопределяют таблицы стилей автора, которые переопределяют таблицу стилей по умолчанию. Декларация "важный" переопределяет обычные объявления. Импортированная таблица стилей имеет то же происхождение, что и таблица стилей, которая ее импортировала.
3. Вторичная сортировка зависит от специфики селектора: более специфичные селекторы переопределяют более общие. Псевдоэлементы и псевдоклассы считаются нормальными элементами и классами соответственно.
4. Наконец, сортируйте по указанному порядку: если два правила имеют одинаковый вес, происхождение и специфику, последнее указанное побеждает. Правила в импортированных таблицах стилей считаются перед любыми правилами в самой таблице стилей.
Помимо настройки «! Важно» в отдельных декларациях, эта стратегия дает авторам таблицы стилей весомее, чем у читателя. Следовательно, важно, чтобы пользовательский агент давал пользователю возможность отключить влияние определенной таблицы стилей, например, с помощью выпадающего меню.
Предыдущий: SCSS Каскадирование
Далее: Наследование CSS
Новый контент: Composer: менеджер зависимостей для PHP , R программирования