CSS: происхождение каскадирования

Происхождение каскадирования

Таблицы стилей могут иметь три разных источника: автор, пользователь и пользовательский агент.

* Автор: Автор указывает таблицы стилей для исходного документа в соответствии с соглашениями, принятыми на языке документа. Например, в HTML таблицы стилей могут быть включены в документ или связаны извне.
* Пользователь: пользователь может иметь возможность указать информацию о стиле для конкретного документа. Например, пользователь может указать файл, содержащий таблицу стилей, или пользовательский агент может предоставить интерфейс, который генерирует пользовательскую таблицу стилей (или ведет себя так, как если бы он это делал).
* Пользовательский агент: соответствующие пользовательские агенты должны применять таблица стилей по умолчанию (или вести себя так, как если бы они действовали) раньше всех остальных таблиц стилей для документа. Таблица стилей пользовательского агента по умолчанию должна представлять элементы языка документа таким образом, чтобы удовлетворить общие ожидания представления для языка документа (например, для визуальных браузеров элемент EM в HTML представлен с использованием курсивного шрифта). См. «Образец таблицы стилей для HTML 4.0 «для рекомендованной таблицы стилей по умолчанию для документов HTML 4.0.

Обратите внимание, что таблица стилей по умолчанию может измениться, если пользователь изменяет системные настройки (например, системные цвета). Однако из-за ограничений внутренней реализации пользовательского агента может быть невозможно изменить значения в таблице стилей по умолчанию.

Таблицы стилей из этих трех источников будут перекрываться по области действия и взаимодействовать в соответствии с каскадом.

Каскад CSS назначает вес каждому правилу стиля. Когда применяется несколько правил, приоритет имеет одно с наибольшим весом.

По умолчанию правила в авторских таблицах стилей имеют больший вес, чем правила в пользовательских таблицах стилей. Однако для правил «! Important» приоритет обратный. Все правила пользователя и автора имеют больший вес, чем правила в таблице стилей по умолчанию UA.

Импортированные таблицы стилей также каскадируются, и их вес зависит от порядка их импорта. Правила, указанные в данной таблице стилей, переопределяют правила, импортированные из других таблиц стилей. Импортированные таблицы стилей могут сами импортировать и переопределять другие таблицы стилей рекурсивно, и применяются те же правила приоритета.

Порядок каскадирования

Чтобы найти значение для комбинации элемент/свойство, пользовательские агенты должны применять следующий порядок сортировки:

1. Найдите все объявления, которые применяются к запросу элемента и свойства для целевого типа носителя. Объявления применяются, если связанный селектор соответствует рассматриваемому элементу.

2. В основном объявления сортируются по весу и происхождению: для обычных объявлений авторские таблицы стилей переопределяют пользовательские таблицы стилей, которые переопределяют таблицу стилей по умолчанию. Для объявлений «! Important» пользовательские таблицы стилей переопределяют авторские таблицы стилей, которые переопределяют таблицу стилей по умолчанию. Объявление «! important» имеет приоритет над обычными объявлениями. Импортированная таблица стилей имеет то же происхождение, что и таблица стилей, которая ее импортировала.

3. Вторичная сортировка зависит от специфики селектора: более конкретные селекторы имеют приоритет над более общими. Псевдоэлементы и псевдоклассы считаются нормальными элементами и классами соответственно.

4. Наконец, выполните сортировку по указанному порядку: если два правила имеют одинаковый вес, происхождение и специфичность, последнее указанное правило выигрывает. Правила в импортированных таблицах стилей считаются перед любыми правилами в самой таблице стилей.

Помимо параметра «! important» для отдельных объявлений, эта стратегия придает таблицам стилей автора больший вес, чем таблицы читателей. Поэтому важно, чтобы пользовательский агент давал пользователю возможность отключать влияние определенной таблицы стилей, например, через раскрывающееся меню.

Оцените статью
nanomode.ru
Добавить комментарий