The Wayback Machine - https://web.archive.org/web/20090820213841/http://cssmake.ru:80/component/content/article/11/166.html

Возникающие конфликты

( 0 - user rating )

Оригинал: What happens when conflicts occur?

Существуют ситуации, когда для одного элемента создаются правила несколько раз. При этом, если описываются одни и те же свойства несколько раз, то могут возникнуть конфликты между ними. Когда такие конфликты возникают, то используется то правило, у которого больший приоритет. Как же определяется приоритет? В качестве примера будет использоватся элемент <h2> с вымышленными стилями.

1. Найти все определения свойства для элемента

После проверки всех возможных стилей для элемента <h2>, мы можем показать все стили используемые для этого элемента: Браузерные стили могут включать в себя следующие свойства:
  1. h2 {
  2. font-size:1.5em;
  3. margin:.83em 0;
  4. color:black ;
  5. }
Пользовательские стили могут включать в себя следующие:
  1. h2 {
  2. color:brown !important;
  3. }
Авторские стили могут включать в себя следующие:
  1. h2 {
  2. color:green ;
  3. font-size:1.2em ;
  4. padding:10px ;
  5. }
  6. h2#main {
  7. color:red ;
  8. }
  9. h2.navigation {
  10. color:blue ;
  11. }

2. Сортировка свойств по приоритету

Указанные выше свойства дальше сортируются по приоритету и происхождениию. Для обычных свойств авторские стили перекрывают стили браузера и пользователя. Если же в пользовательских стилях используется !important для свойства, то это свойство перекроет авторские стили и стили браузера.

Для элементов <h2>, которые используются без классов и id стили будут такими:
  1. font-size:1.2em ;
  2. margin:.83em 0 ;
  3. padding:10px ;
  4. color:green ;
Пользователи, которые установили !important для своих стилей, будут видеть элементы <h2> с такими стилями:
  1. font-size:1.2em ;
  2. margin:.83em 0 ;
  3. padding:10px ;
  4. color:brown ;

2. Сортировка элементов согласно специфике

Даже если стили для элемента <h2> уже остортированы, все еще могут возникать конфликты. Что же происходит с элементами <h2>, для которых применялся id #main ?

Согласно специфике использования селекторов более конкретные описания перекрывают общие. Расчет перекрытия стилей основывается на следующих правилах:

  • Подсчет количества id для селектора
  • Подсчет количества селекторов в селекторе
  • Подсчет количества элементов в селекторе
Представим эти 3 расчета в письменном виде:
  1. h2 {
  2. font-size:1.5em ;
  3. margin:.83em 0 ;
  4. color:black ;
  5. }
  6. 0-0-1 > спецификация = 1
  7. h2 {
  8. color:brown !important;
  9. }
  10. 0-0-1 > спецификация = 1
  11. h2 {
  12. color:green ;
  13. font-size:1.2em ;
  14. padding:10px ;
  15. }
  16. 0-0-1 > спецификация = 1
  17. h2#main {
  18. color:red ;
  19. }
  20. 1-0-1 > спецификация = 101
  21. h2.navigation {
  22. color:blue ;
  23. }
  24. 0-1-1 > спецификация = 11

Исходя из этого можно сделать вывод, что стили описанные для h2#main имеют наибольший приоритет, затем идут стили описанные для h2.navigation

Для пользователей, у которых не будут затронуты пользовательские стили заголовков, h2#main будут такие:

  1. color:red ;
Заголовки с классом .navigation будут:
  1. color:blue ;
Если будут пересекатся заголовки описанные для #main и .navigation, то будут применены стили:
  1. color:red ;

3. Сортировка согласно спецификации

Если два правила описанные в css имеют одинаковый приоритет, то использоваться будут те, которые описаные ниже в файле стилей.
  1. h2 {
  2. color:blue ;
  3. }
  4. h2 {
  5. color:green ;
  6. }
В этом случае использоваться будет второе правило, так как оно описано ниже в файле стилей.

Добавить комментарий


Защитный код
Обновить

odnaknopka.ru/kolyan.cz
Morty Proxy This is a proxified and sanitized view of the page, visit original site.

Переводы


Узнайте как создать блог за 5 минут
astralux швейные машины

Selectutorial

Селекторы в действии

listutorial

Изображения для маркеров списка

Неплохое обучение forex Арск, система скидок.
статьи
Morty Proxy This is a proxified and sanitized view of the page, visit original site.