Css наивысшим приоритетом обладают: Приоритет стилей — CSS

Содержание

Приоритет стилей — CSS

Говоря о каскадности, возникает вопрос: «А что произойдет, если в разных источниках будут одинаковые правила для элемента, но с разными значениями?». В таком случае есть правила, определяющие приоритеты стилей из разных источников. По степени важности список выглядит следующим образом:

  • Стили в атрибуте тега
  • Стили в отдельном файле
  • Стили по умолчанию, которые добавляет браузер

Если в одном из источников правила дублируются, то применятся те, которые были указаны последними.

.blue {
  color: blue;
}

.blue {
  color: red;
}

/* В данном случае текст в блоках с классом .blue будет красным, так как будет использовано последнее указанное правило */

У селекторов также существуют приоритеты. Для определения приоритета можно использовать таблицу, где каждому селектору даётся «вес»:

  • Селектор по тегу: 1
  • Селектор по классу: 10
  • Селектор по ID: 100
  • Стиль в атрибуте тега: 1000
<style>
  . blue {
    color: blue;
  }

  #red-block {
    color: red;
  }
</style>

<div>Текст</div>

Какого цвета будет текст внутри блока? Воспользуемся таблицей выше, из которой следует, что селектор по классу (.blue) имеет приоритет 10, а селектор по id (#red-block) имеет приоритет 100. Значит, правило для id #red-block «перебьёт» правило для класса .blue. Помимо этого у нас есть инлайн стиль style="color: white;", который имеет «вес» 1000, а это значит, что он обладает наивысшим приоритетом.

Таким образом текст внутри блока будет белым.

Задание

Добавьте в редактор p с классом border и id no-border. Установите следующие правила:
* Для класса border установите сплошную рамку любого цвета толщиной 1px.
* Для id no-border отмените рамку. Используйте значение none у правила border-style.

Стили запишите в теге style.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics

Учебник CSS 3. Статья «Каскадность в CSS»

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


Прежде всего, что такое каскадность? Каскадность – это правила, по которым определяется какие стилевые свойства задаются браузером элементам на странице (последовательность применения стилей к определённым элементам и разрешение при необходимости, возникающих конфликтов).


Давайте рассмотрим следующее изображение, на нем отображены основные источники информации о стилях, которые образуют каскад:

Рис. 30 Основные источники информации о стилях.

К основным источникам информации о стилях относятся:

  • Встроенные стили браузера по умолчанию.
  • Стили, заданные автором документа, их в свою очередь можно указать в трех местах:
    • Внешний CSS файл (с использованием элемента <link>, который размещается внутри элемента <head>).
    • В теле документа (в настоящее время разрешается размещать стили только в начале документа — стили помещаются внутри парного тега <style>, который в свою очередь должен находиться внутри элемента <head>).
    • Внутри элемента (стили, которые задаются с использованием глобального HTML атрибута style).
  • Стили, заданные пользователем (в некоторых современных браузерах возможность определить свои стили для конкретного сайта доступна встроенными средствами в настройках, для других требуется расширение для браузера). Это позволит стилизовать какой-то сайт по своему усмотрению и вкусу, или убрать с него какие-то блоки, которые Вам не хотелось бы видеть.

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


Главное надо понять, что если на странице применяется несколько стилей к одному элементу, то браузер объединит свойства этих стилей, при условии, что они не конфликтуют между собой (имеют различные значения для однотипных свойств). А если конфликтуют?


Давайте перейдем к практической части.

Предположим, что у нас есть абзац (элемент <p>), в котором указана определенная гиперссылка (элемент <a>). HTML код может выглядеть следующим образом:

<p class = "main"> Для перехода к основной статье нажмите <a href = "#"> вот на это место. </a></p>

На нашу страницу добавим следующие стили:

a { /* используем селектор типа */
color: brown; /* устанавливаем цвет текста */
}
p a { /* используем селектор потомков */
font-weight: bold; /* устанавливаем жирное начертание шрифта */
}
.main a { /* используем селектор потомков */
background-color: orange; /* задаем цвет заднего фона */
text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */
}

Создадим разметку и добавим стили в наш документ:

<!DOCTYPE html>
<html>
<head>
	<meta charset = "UTF-8">
	<title>Каскадность в CSS</title>
<style>
a { /* используем селектор типа */
color: brown; /* устанавливаем цвет текста */
}
p a { /* используем селектор потомков */
font-weight: bold; /* устанавливаем жирное начертание шрифта */
}
. main a { /* используем селектор потомков */
background-color: orange; /* задаем цвет заднего фона */
text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */
}
</style>
</head>
	<body>
		<p class = "main">Для перехода к основной статье нажмите <a href = "#"> вот на это место. </a></p>
	</body>
</html> 

Результат нашего примера:

Рис. 30а Каскадность в CSS.

Давайте рассмотрим какие стили были применены к элементу <a>:

Рис. 30б Применение стилей к элементу.

В данном примере вы можете увидеть, что все три наших селектора с различными стилями были применены к элементу <a>, а встроенные стили элемента — цвет и декорирование текста (нижнее подчеркивание) были заменены на авторские стили (стили автора документа) по той причине, что они имеют больший приоритет.

Система приоритетов в CSS

Давайте рассмотрим пример, где не всё так очевидно и однозначно. К примеру, с использованием свойства font-family зададим элементу <a> различный тип шрифта с использованием аналогичных селекторов:

<!DOCTYPE html>
<html>
<head>
	<meta charset = "UTF-8">
	<title>Конфликты стилей в CSS</title>
<style>
a { /* используем селектор типа */
color: brown; /* устанавливаем цвет текста */
font-family: Arial; /* устанавливаем тип шрифта Arial */
}
p a { /* используем селектор потомков */
font-weight: bold; /* устанавливаем жирное начертание шрифта */
font-family: Helvetica; /* устанавливаем тип шрифта Helvetica */
}
. main a { /* используем селектор потомков */
background-color: orange; /* задаем цвет заднего фона */
text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */
font-family: Courier; /* устанавливаем тип шрифта Courier */
}
</style>
</head>
	<body>
		<p class = "main">Для перехода к основной статье нажмите <a href = "#"> вот на это место. </a></p>
	</body>
</html> 

Результат нашего примера:

Рис. 31 Пример конфликтования стилей.

Давайте рассмотрим какой шрифт получил элемент <a>:

Рис. 31a Выбор типа шрифта при конфликте стилей.

Обратите внимание, что для нашего элемента был установлен шрифт Courier.
Как мы видим в «инструментах разрабочика» браузера Chrome этот шрифт выбран из селектора потомков в котором используется как селектор класса, так и селектор типа (.main a), а в остальных селекторах тип шрифта для элемента перечеркнут. Но почему?


Я уже обращал Ваше внимание на тот факт, что основное правило механизма каскадности — побеждает тот, у кого установлен самый явно определенный стиль.
Для этих целей в CSS существует своя система приоритетов, которая основана на присвоении значений в пунктах для каждого типа селекторов, чем выше это значение, тем выше его значимость:

  • Селектор типа, псевдоэлементы — 1 пункт.
  • Селектор класса, псевдоклассы — 10 пунктов.
  • Id селектор — 100 пунктов.
  • Встроенный (inline) стиль (стиль задается в самом элементе с использованием глобального HTML атрибута style) — 1000 пунктов.

Давайте перейдем к следующему примеру в котором рассмотрим как работает система приоритетов:

<!DOCTYPE html>
<html>
<head>
	<meta charset = "UTF-8">
	<title>Работа системы приоритетов в CSS</title>
<style>
#id_invite { /* id селектор — 100 пунктов */
color: red; /* устанавливаем цвет текста красный */
}
.class_invite { /* селектор класса — 10 пунктов */
color: blue; /* устанавливаем цвет текста синий */
}
p { /* селектор типа — 1 пункт */
color: green; /* устанавливаем цвет текста зеленый */
}
</style>
</head>
	<body>
		<!-- устанавливаем цвет текста внутри элемента span зеленый (inline стиль) -->
		<p class = "class_invite" id = "id_invite">Просто <span style = "color: green;">добавь</span> воды. </p>
	</body>
</html> 

В данном примере для элемента <p> был установлен красный цвет текста благодаря id селектору, который имеет более высокое значение в пунтах чем другие селекторы (100).
Кроме того, для демонстрации системы приоритетов мы применили встроенный (inline) стиль для элемента <span> и установили для него зеленый цвет шрифта. Обратите внимание, что на изображении, все значения селекторов перечеркнуты, так как встроенный стиль имеет самое высокое значение в пунктах (1000).

Рис 32 Пример системы приоритетов в CSS.

Чтобы подсчитать специфичность комбинированных селекторов необходимо их просто сложить между собой, например:

#id_invite a { /* id селектор (100 пунктов) + селектор типа (1 пункт) = 101 пункт  */
блок объявлений;
}
p:first-letter { /* селектор типа (1 пункт) + псевдоэлемент (1 пункт) = 2 пункта  */
блок объявлений;
}
.main:first-child { /* селектор класса (10 пунктов) + псевдокласс (10 пунктов) = 20 пунктов  */
блок объявлений;
}

Отмена значимости стилей

В некоторых случаях, два стиля могут иметь одинаковый приоритет (одинаковое количество пунктов), что доставляет сильную головную боль по той причине, что браузер в этом случае выбирает последний определенный стиль в таблице стилей, что может не соответствовать вашим ожиданиям.
Если вы поменяете местами конфликтующие стили, то действовать будет тот, который будет указан ниже в таблице стилей. Старайтесь избегать подобных ситуаций и запомните этот момент. Эти знания помогут Вам сэкономить большое количество времени.

В CSS предусмотрена возможность отменить значимость стилей (не учитывать количество пунктов). Для этого необходимо добавить к значению CSS свойства ключевое слово !important.

Давайте рассмотрим пример использования ключевого слова !important:

<!DOCTYPE html>
<html>
<head>
	<meta charset = "UTF-8">
	<title>Пример отмены значимости стилей</title>
<style>
a.rtfm { /* селектор типа (1 пункт) + селектор класса (10 пунков) = 11 пунктов  */
color: green; /* устанавливаем цвет текста зеленый */
}
a { /* селектор типа (1 пункт)  */
color: red !important; /* отменяем значимость стилей и устанавливаем цвет текста красный */
}
</style>
</head>
	<body>
		<a class =  "rtfm"  href =  "http://google. com">Найти</a>
	</body>
</html> 

В этом примере с использованием ключевого слова !important мы отменили значимость стилей и установили цвет текста для гиперссылки красный. В данном случае если бы мы не использовали ключевое слово !important, то цвет бы остался зеленым по той причине, что он имеет большую значимость (задан с использованием селектора класса).

Результат нашего примера:

Рис. 33 Пример отмены значимости стилей.


Обратите внимание, что !important указывается в конце каждого свойства и действует только на одно свойство, а не на весь блок объявлений!


Если вы указали значение !important для двух однотипных свойств различных стилей, то в этом случае браузер рассматривает их по принципу правил значимости (приоритет отдаётся более значимому свойству). Старайтесь избегать подобных ситуаций.

Сброс и нормализация встроенных стилей.

Ещё один необходимый метод для грамотного построения кроссбраузерных страниц — это необходимость сброса встроенных в браузер внутренних стилей (сброс стандартных стилей браузера). Другими словами, независимо какой браузер у пользователей, которые посещают Ваш сайт, отображение должно быть в одном стиле — с одинаковыми отступами, границами и форматированием.

Для этого существуют различные шаблоны, которые сбрасывают внутренние стили (reset.css). Как правило, шаблоны адаптируются под себя (под Ваши нужды) и служат для удаления полей и отступов, устанавливая например 100% размер шрифта, убирая выделения полужирным шрифтом, устанавливают пространство между строками в абзаце, убирают маркеры в списках и тому подобное.

В настоящее время часто в своей работе используют альтернативу традиционному reset.css (сбросу внутренних стилей), нормализовывая таблицы стилей — normalize.css.

Данный проект (normalize.css) появился после глубокого исследования различий между изначальными стилями браузера под руководством Николаса Галахера.
Основные задачи normalize.css заключаются в том, чтобы сохранить полезные настройки браузера, а не стирать их, и при этом нормализовать стили для широкого круга HTML элементов.

Как вы понимаете, normalize.css значительно отличается от reset.css. Впоследствии, я Вам рекомендую попробовать в своей работе оба метода, чтобы определиться, соответствует ли конкретный метод вашим предпочтениям в разработке.

Пример CSS reset — http://meyerweb.com/eric/tools/css/reset/
Проект normalize css — https://necolas.github.io/normalize.css/


Вопросы и задачи по теме

Перед тем как перейти к следующей статье ответьте на следующие вопросы:

  • подсчитайте специфичность комбинированного селектора:
    .main a { 
    блок объявлений;
    }
    

    Показать ответ

    .main a { /* селектор класса (10 пунктов) + селектор типа (1 пункт) = 11 пунктов  */
    блок объявлений;
    }
    
  • подсчитайте специфичность комбинированного селектора:
    #main #section { 
    блок объявлений;
    }
    

    Показать ответ

    #main #section { /* id селектор (100 пунктов) + id селектор (100 пунктов) = 200 пунктов  */
    блок объявлений;
    }
    
  • подсчитайте специфичность комбинированного селектора:
    table. header tr:hover { 
    блок объявлений;
    }
    

    Показать ответ

    table.header tr:hover { /* селектор типа (1 пункт) + селектор класса (10 пунктов) + селектор типа (1 пункт) + псевдокласс (10 пунктов) = 22 пункта  */
    блок объявлений;
    }
    

Каскадирование | htmlbook.ru

Аббревиатура CSS расшифровывается как Cascading Style Sheets (каскадные таблицы стилей), где одним из ключевых слов выступает «каскад». Под каскадом в данном случае понимается одновременное применение разных стилевых правил к элементам документа — с помощью подключения нескольких стилевых файлов, наследования свойств и других методов. Чтобы в подобной ситуации браузер понимал, какое в итоге правило применять к элементу, и не возникало конфликтов в поведении разных браузеров, введены некоторые приоритеты.

Ниже приведены приоритеты браузеров, которыми они руководствуются при обработке стилевых правил. Чем выше в списке находится пункт, тем ниже его приоритет, и наоборот.

  1. Стиль браузера.
  2. Стиль автора.
  3. Стиль пользователя.
  4. Стиль автора с добавлением !important.
  5. Стиль пользователя с добавлением !important.

Самым низким приоритетом обладает стиль браузера — оформление, которое по умолчанию применяется к элементам веб-страницы браузером. Это оформление можно увидеть в случае «голого» HTML, когда к документу не добавляется никаких стилей.

Как задавать пользовательский стиль рассказывалось в главе 1 (см. рис. 1.3 и 1.4).

!important

Ключевое слово !important играет роль в том случае, когда пользователи подключают свою собственную таблицу стилей. Если возникает противоречие, когда стиль автора страницы и пользователя для одного и того же элемента не совпадает, то !important позволяет повысить приоритет стиля или его важность, иными словами.

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

  • !important добавлен в авторский стиль — будет применяться стиль автора.
  • !important добавлен в пользовательский стиль — будет применяться стиль пользователя.
  • !important нет как в авторском стиле, так и стиле пользователя — будет применяться стиль пользователя.
  • !important содержится в авторском стиле и стиле пользователя — будет применяться стиль пользователя.

Синтаксис применения !important следующий.

Свойство: значение !important

Вначале пишется желаемое стилевое свойство, затем через двоеточие его значение и в конце после пробела указывается ключевое слово !important.

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

Специфичность

Если к одному элементу одновременно применяются противоречивые стилевые правила, то более высокий приоритет имеет правило, у которого значение специфичности селектора больше. Специфичность это некоторая условная величина, вычисляемая следующим образом. За каждый идентификатор (в дальнейшем будем обозначать их количество через a) начисляется 100, за каждый класс и псевдокласс (b) начисляется 10, за каждый селектор тега и псевдоэлемент (c) начисляется 1. Складывая указанные значения в определённом порядке, получим значение специфичности для данного селектора.

*              {} /* a=0 b=0 c=0 -> специфичность = 0   */
li             {} /* a=0 b=0 c=1 -> специфичность = 1   */
li:first-line  {} /* a=0 b=0 c=2 -> специфичность = 2   */
ul li          {} /* a=0 b=0 c=2 -> специфичность = 2   */
ul ol+li       {} /* a=0 b=0 c=3 -> специфичность = 3   */
ul li.red      {} /* a=0 b=1 c=2 -> специфичность = 12  */
li.red.level   {} /* a=0 b=2 c=1 -> специфичность = 21  */
#t34           {} /* a=1 b=0 c=0 -> специфичность = 100 */
#content #wrap {} /* a=2 b=0 c=0 -> специфичность = 200 */

Встроенный стиль, добавляемый к тегу через атрибут style, имеет специфичность 1000, поэтому всегда перекрывает связанные и глобальные стили. Однако добавление !important перекрывает в том числе и встроенные стили.

Если два селектора имеют одинаковую специфичность, то применяться будет тот стиль, что указан в коде ниже.

В примере 19.1 показано, как влияет специфичность на стиль элементов списка.

Пример 19.1. Цвет списка

HTML5CSS 2.1IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Список</title>
  <style>
   #menu ul li {
    color: green;
   }
   .two {
    color: red;
   }
  </style>
 </head>
 <body>
  <div>
   <ul>
    <li>Первый</li>
    <li>Второй</li>
    <li>Третий</li>
   </ul>
  </div>
 </body> 
</html>

В данном примере цвет текста списка задан зелёным, а второй пункт списка с помощью класса two выделен красным цветом. Вычисляем специфичность селектора #menu ul li — один идентификатор (100) и два тега (2) в сумме дают значение 102, а селектор . two будет иметь значение специфичности 10, что явно меньше. Поэтому текст окрашиваться красным цветом не будет. Чтобы исправить ситуацию, необходимо либо понизить специфичность первого селектора, либо повысить специфичность второго (пример 19.2).

Пример 19.2. Изменение специфичности

/* Понижаем специфичность первого селектора */
 ul li {...} /* Убираем идентификатор */
 .two  {...}

/* Повышаем специфичность второго селектора */
 #menu ul li {...}
 #menu  .two {...} /* Добавляем  идентификатор */

 #menu ul li {...}
 .two { color:  red !important; } /* Добавляем !important */

Добавление идентификатора используется не только для изменения специфичности селектора, но и для применения стиля только к указанному списку. Поэтому понижение специфичности за счёт убирания идентификатора применяется редко, в основном, повышается специфичность нужного селектора.

Вопросы для проверки

1. Какая специфичность будет у селектора table.forum tr:hover p?

  1. 14
  2. 22
  3. 23
  4. 32
  5. 41

2. Какая специфичность будет у селектора #catalog .col3 .height div?

  1. 301
  2. 203
  3. 121
  4. 40
  5. 31

Ответы

1. 23

2. 121

Виды и правила написания селекторов в CSS

Здравствуйте, уважаемые читатели блога MonetaVInternete.ru. в одной из прошлых статей я все же вернулся к теме создания сайтов, а конкретнее — начал рассказывать про каскадные таблицы стилей (CSS). Основную информацию вы можете прочесть по приведенной ссылке. В этой статье мы более подробно рассмотрим css селекторы — их виды, правила написания, а также примеры использования.

Как известно, язык css создан дабы оптимизировать описание внешнего вида документа. Без него практически любой html документ (более или менее нормально оформленный) выглядел бы довольно пугающе для поисковых систем, ведь они исследуют код страницы, который, в свою очередь, был бы наполнен разными тегами и атрибутами. С помощью CSS все параметры внешнего вида можно поместить в один файл, который потом можно просто подключить к документу.

В прошлой статьей по этой теме мы создали два файла, page.html и style.css — веб-документ и файл со стилями соответственно. Также мы выполнили подключение файла к документу (тег style в шапке страницы). Css файл был вот такого содержания:

А в страничке был такой код:

С подключенным файлом каскадной таблицы стилей она приобрела вот такой вид:

В прошлой статье я дал лишь основные, базовые знания о языке стилей, да и то не полностью. Поэтому сразу хочу начать с того, что еще не сказал.

Виды селекторов и правила их употребления

В языке стилей существуют так называемые приоритеты, более подробно мы их рассмотрим в следующей статьей этой рубрики. Самым низким приоритетом обладает стиль самого браузера. Да, у всех современных браузеров есть свой файл стилей, который будет использоваться в самую последнюю очередь. Следом за ним идут стили, заданные пользователем (вами). Вы сами можете создать файл стилей, записать в него свойства и этот файл действительно будет использоваться, но только в одном случае — если у сайта нет своих стилей, заданных автором.

Вот они и обладают наивысшим приоритетом — стили автора. CSS файл, который вы прикрепляете, свойства, которые прописываете в шапке или же отдельно в тегах, все это является стилем автора и ставится на первое место при обработке браузером документа (хотя и среди перечисленных элементов есть свои правила приоритетов). Но это далеко не все — в стилях автора имеют место свои правила приоритетов, которые зависят от иерархии, правил и селекторов. Вот с последних и начнем. Итак, виды css селекторов. Чтобы все не просто прочесть, но и изучить на практике, рекомендую использовать ранее созданные файлы html и css.

Универсальный селектор

Селектор, который задает стандартный стиль для всех элементов. Обозначается звездочкой. Имеет самый низкий приоритет. Вот такой свойство окрашивает все элементы в зеленый цвет:

 * {color:green;} 
Селекторы элемента

Задает стили для тегов. Помните картинку с прошлой записи, где я указывал что такое селектор и правило? Вот там был задан селектор элемента абзац (тег p). Результат — стандартный шрифт семейства cursive зеленого цвета

 p {
 font-family: cursive;
 font-weight: normal;
 color: green;
 }

Селекторы атрибутов

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

 [title] {color:blue;} 

Есть у этих селекторов и свои особенности. Например, для того, чтобы применить стили к атрибутам с конкретными значениями, нужно просто прописать эти значения:

 [title="какой-нибудь заголовок"] {color:red;} 

Если нужно изменить стиль атрибутов, в значении которых содержится какой-либо текст, даже если он является частью слова, то используем следующее :

 [title*="гол"] {color:red;} 

Если же нам нужно изменить стиль атрибута, в котором содержится слово целиком, то поможет такая конструкция:

 [title~="заголовок"] {color:red;} 

Если изменить атрибут, который начинается с определенного текста то делаем вот так:

 [title^="заг"] {color:red;} 

И, наконец, изменяем атрибут, который заканчивается на какой-либо текст:

 [title$="ловок"] {color:red;} 
Селектор классов

Здесь все основывается на универсальном атрибуте class, который применим ко всем тегам. Это одно из основных средств верстки сайта. Структура css стиля:

.abs {color:red;}

Так как атрибут универсальный, то можно применить его к любому тегу:

<div>Текст внутри тегов с классом abs</div>

Результат — все содержимое тегов, которые содержат класс abs, будет окрашено в красный цвет. Использовать можно сколь угодно много раз на странице. Также позволяется использовать сразу несколько классов для одного тега. Каждый записывается через пробел в атрибуте class:

<div>Текст внутри тегов с классом abs</div>

Вообще, селекторы классов являются самыми популярными, потому что с их помощью можно довольно легко управлять элементами сайта — изменять внешний вид, передвигать и т.д.

Селекторы идентификаторов

Отличаются от предыдущей группы только тем, что могут использоваться только 1 раз на странице. В теге используется атрибут id:

 <div> какой-нибудь текст

А в стилях такой селектор обозначается символом решетки #:

 #size {font-size:24px;}
Селекторы дочерних элементов

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

<p>Нужно сделать <a href="#">эту ссылку</a> красного цвета, а <span><a href="#">эту</a></span> не трогать</p>

Чтобы выполнить поставленную задачу используются селекторы потомков:

 p>a {color:red;}

Как видите, мы указали, что тег a является дочерним тегом p, и изменили его цвет. Если же вы хотите изменить все элементы-потомки, то вместо знака «больше» нужно вставить пробел:

 p a {color:red;}

В результате обе ссылки будут красного цвета.

Селектор сестринских элементов

Если вам нужно изменить стиль соседских элементов (по иерархии), то можно использовать следующую конструкцию:

span + a {color red;}
Селекторы потомков

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

 div. abs {color:red;}

Прошу заметить, div.abs пишется без пробелов. В этом случае все элементы, находящиеся в теге div с атрибутом будут окрашены в красный цвет. Пример:

<div>Текст красного цвета</div>

Если же нужно изменить стиль элементов с идентификатором, то вместо точки нужно будет поставить символ #.

Селекторы псевдоклассов

Псевдоклассы — классы, наличие которых зависит от состояния объекта или документа. Чаще всего их используют для изменения внешнего вида каких-либо форм или ссылок. В css стили для таких элементов задаются по следующему шаблону:

 a:hover {color:green;}

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

Вот вроде бы и все виды селекторов в CSS. Надеюсь, вы их опробовали на тех файлах, которые мы создавали на прошлом уроке. В следующей статье из рубрики «Основы HTML и CSS» мы поговорим о приоритетах в CSS, без знания которых будет довольно сложно работать с внешним видом сайта. До скорых встреч на страницах блога MonetaVInternete.ru!

Лекция на тему «Каскадные таблицы стилей CSS»

.

Стиль style1 можно использовать только для тега , поскольку в определении было указано font.style1.

Третий вариант задания через решетку (#). Как и в первом случае он определен для всех элементов, но задавать его нужно не через class, а через атрибут id: 

В последнем варианте мы просто указали название тега

Что такое CSS3

В последнее время часто можно встретить понятие CSS3. По сути это все тот же CSS, с набором новых аргументов, которые дают дополнительные возможности в плане различных эффектов. Например, свечение текста. Многие браузеры не поддерживают такие свойства, поэтому рекомендуется использовать такие эффекты в минимальных количествах.

В чём разница между CSS и HTML?

HTML это каркас вашей страницы, это ссылки, картинки, контент. А в CSS определяется то, как все это будет отображаться для пользователя. Так что HTML и CSS это разные вещи, но они связаны между собой. Причем правилом хорошего тона является разделение кодов между собой, чтобы не смешивать их на одной странице.

Как и где задавать стили CSS

Стиль задается в мета тегах head с помощью тега style:

<html>

<head>

<style typetext/css«>

.styletest {

color: blue;

font-size:12px;

font-family:Arial;

}

</style>

</head>

<body>

. ..

Тело страницы

</body>

</html>

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

<head>

<link relstylesheet» typetext/css» hrefstyle.css«/>

head>

Преимуществом такого подхода является так же и то, что этот файл кэшируется браузерами, что снижает «вес» сайта, тем самым он быстрее грузится. А это сейчас очень важно для SEO. См. как увеличить скорость загрузки сайта

Что дает CSS (плюсы)

  1. Легко менять дизайн. Достаточно поменять стиль лишь в одном месте и он изменится на каждой странице сайта

  2. Это единственный способ изменять дизайн

  3. Простота синтаксиса языка

Проблемы CSS с браузерами

Старые браузеры поддерживают не все возможности CSS. С этим возникают проблемы отображения. Например, эффект, который был задуман для лучшего восприятия контента, может привести к обратному эффекту. Если какое-то свойство не поддерживается, то есть риски наложения блоков, текстов друг на друга и т.п.

Частично эту проблему решают «префиксы». По сути это просто слово стоящее перед аргументом в таблице стилей. Для каждого браузера существует свой префикс.

  • -moz- для браузера Firefox

  • -webkit- для браузеров Chrome и Safari (в обоих браузерах используется один и тот же движок визуализации)

  • -ms- для браузера Internet Explorer

  • -o- для браузера Opera

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

Прежде всего, что такое каскадность? Каскадность – это правила, по которым определяется какие стилевые свойства задаются браузером элементам на странице (последовательность применения стилей к определённым элементам и разрешение при необходимости, возникающих конфликтов).

Давайте рассмотрим следующее изображение, на нем отображены основные источники информации о стилях, которые образуют каскад:

Рис. 30 Основные источники информации о стилях.

К основным источникам информации о стилях относятся:

  • Встроенные стили браузера по умолчанию.

  • Стили, заданные автором документа, их в свою очередь можно указать в трех местах:

    • Внешний CSS файл (с использованием элемента , который размещается внутри элемента ).

    • В теле документа (в настоящее время разрешается размещать стили только в начале документа — стили помещаются внутри парного тега , который в свою очередь должен находиться внутри элемента ).

    • Внутри элемента (стили, которые задаются с использованием глобального HTML атрибута style).

  • Стили, заданные пользователем (в некоторых современных браузерах возможность определить свои стили для конкретного сайта доступна встроенными средствами в настройках, для других требуется расширение для браузера). Это позволит стилизовать какой-то сайт по своему усмотрению и вкусу, или убрать с него какие-то блоки, которые Вам не хотелось бы видеть.

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

Главное надо понять, что если на странице применяется несколько стилей к одному элементу, то браузер объединит свойства этих стилей, при условии, что они не конфликтуют между собой (имеют различные значения для однотипных свойств). А если конфликтуют?

Давайте перейдем к практической части.

Предположим, что у нас есть абзац (элемент 

), в котором указана определенная гиперссылка (элемент ). HTML код может выглядеть следующим образом: class = «main»> Для перехода к основной статье нажмите href = «#»> вот на это место.

На нашу страницу добавим следующие стили:

a { /* используем селектор типа */

color: brown; /* устанавливаем цвет текста */

}

p a { /* используем селектор потомков */

font-weight: bold; /* устанавливаем жирное начертание шрифта */

}

.main a { /* используем селектор потомков */

background-color: orange; /* задаем цвет заднего фона */

text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */

}

Создадим разметку и добавим стили в наш документ:

charset = «UTF-8»>

Каскадность в CSS

a { /* используем селектор типа */

color: brown; /* устанавливаем цвет текста */

}

p a { /* используем селектор потомков */

font-weight: bold; /* устанавливаем жирное начертание шрифта */

}

. main a { /* используем селектор потомков */

background-color: orange; /* задаем цвет заднего фона */

text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */

}

class = «main»>Для перехода к основной статье нажмите href = «#»> вот на это место.

Результат нашего примера:

Рис. 30а Каскадность в CSS.

Давайте рассмотрим какие стили были применены к элементу :

Рис. 30б Применение стилей к элементу.

В данном примере вы можете увидеть, что все три наших селектора с различными стилями были применены к элементу , а встроенные стили элемента — цвет и декорирование текста (нижнее подчеркивание) были заменены на авторские стили (стили автора документа) по той причине, что они имеют больший приоритет.

Система приоритетов в CSS

Давайте рассмотрим пример, где не всё так очевидно и однозначно. К примеру, с использованием свойства font-family зададим элементу  различный тип шрифта с использованием аналогичных селекторов:

charset = «UTF-8»>

Конфликты стилей в CSS

a { /* используем селектор типа */

color: brown; /* устанавливаем цвет текста */

font-family: Arial; /* устанавливаем тип шрифта Arial */

}

p a { /* используем селектор потомков */

font-weight: bold; /* устанавливаем жирное начертание шрифта */

font-family: Helvetica; /* устанавливаем тип шрифта Helvetica */

}

. main a { /* используем селектор потомков */

background-color: orange; /* задаем цвет заднего фона */

text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */

font-family: Courier; /* устанавливаем тип шрифта Courier */

}

class = «main»>Для перехода к основной статье нажмите href = «#»> вот на это место.

Результат нашего примера:

Рис. 31 Пример конфликтования стилей.

Давайте рассмотрим какой шрифт получил элемент :

Рис. 31a Выбор типа шрифта при конфликте стилей.

Обратите внимание, что для нашего элемента был установлен шрифт Courier. Как мы видим в «инструментах разрабочика» браузера Chrome этот шрифт выбран из селектора потомков в котором используется как селектор класса, так и селектор типа (. main a), а в остальных селекторах тип шрифта для элемента перечеркнут. Но почему?

Я уже обращал Ваше внимание на тот факт, что основное правило механизма каскадности — побеждает тот, у кого установлен самый явно определенный стиль. Для этих целей в CSS существует своя система приоритетов, которая основана на присвоении значений в пунктах для каждого типа селекторов, чем выше это значение, тем выше его значимость:

  • Селектор типа, псевдоэлементы — 1 пункт.

  • Селектор класса, псевдоклассы — 10 пунктов.

  • Id селектор — 100 пунктов.

  • Встроенный (inline) стиль (стиль задается в самом элементе с использованием глобального HTML атрибута style) — 1000 пунктов.

Давайте перейдем к следующему примеру в котором рассмотрим как работает система приоритетов:

charset = «UTF-8»>

Работа системы приоритетов в CSS

#id_invite { /* id селектор — 100 пунктов */

color: red; /* устанавливаем цвет текста красный */

}

. class_invite { /* селектор класса — 10 пунктов */

color: blue; /* устанавливаем цвет текста синий */

}

p { /* селектор типа — 1 пункт */

color: green; /* устанавливаем цвет текста зеленый */

}

class = «class_invite» id = «id_invite»>Просто style = «color: green;»>добавь воды.

В данном примере для элемента 

 был установлен красный цвет текста благодаря id селектору, который имеет более высокое значение в пунтах чем другие селекторы (100). Кроме того, для демонстрации системы приоритетов мы применили встроенный (inline) стиль для элемента  и установили для него зеленый цвет шрифта. Обратите внимание, что на изображении, все значения селекторов перечеркнуты, так как встроенный стиль имеет самое высокое значение в пунктах (1000).

Рис 32 Пример системы приоритетов в CSS.

Чтобы подсчитать специфичность комбинированных селекторов необходимо их просто сложить между собой, например:

#id_invite a { /* id селектор (100 пунктов) + селектор типа (1 пункт) = 101 пункт */

блок объявлений;

}

p:first-letter { /* селектор типа (1 пункт) + псевдоэлемент (1 пункт) = 2 пункта */

блок объявлений;

}

.main:first-child { /* селектор класса (10 пунктов) + псевдокласс (10 пунктов) = 20 пунктов */

блок объявлений;

}

Отмена значимости стилей

В некоторых случаях, два стиля могут иметь одинаковый приоритет (одинаковое количество пунктов), что доставляет сильную головную боль по той причине, что браузер в этом случае выбирает последний определенный стиль в таблице стилей, что может не соответствовать вашим ожиданиям. Если вы поменяете местами конфликтующие стили, то действовать будет тот, который будет указан ниже в таблице стилей. Старайтесь избегать подобных ситуаций и запомните этот момент. Эти знания помогут Вам сэкономить большое количество времени.

В CSS предусмотрена возможность отменить значимость стилей (не учитывать количество пунктов). Для этого необходимо добавить к значению CSS свойства ключевое слово !important.

Давайте рассмотрим пример использования ключевого слова !important:

charset = «UTF-8»>

Пример отмены значимости стилей

a.rtfm { /* селектор типа (1 пункт) + селектор класса (10 пунков) = 11 пунктов */

color: green; /* устанавливаем цвет текста зеленый */

}

a { /* селектор типа (1 пункт) */

color: red !important; /* отменяем значимость стилей и устанавливаем цвет текста красный */

}

class = «rtfm» href = «http://google. com»>Найти

В этом примере с использованием ключевого слова !important мы отменили значимость стилей и установили цвет текста для гиперссылки красный. В данном случае если бы мы не использовали ключевое слово !important, то цвет бы остался зеленым по той причине, что он имеет большую значимость (задан с использованием селектора класса).

Результат нашего примера:

Рис. 33 Пример отмены значимости стилей.

Обратите внимание, что !important указывается в конце каждого свойства и действует только на одно свойство, а не на весь блок объявлений!

Если вы указали значение !important для двух однотипных свойств различных стилей, то в этом случае браузер рассматривает их по принципу правил значимости (приоритет отдаётся более значимому свойству). Старайтесь избегать подобных ситуаций.

Сброс и нормализация встроенных стилей.

Ещё один необходимый метод для грамотного построения кроссбраузерных страниц — это необходимость сброса встроенных в браузер внутренних стилей (сброс стандартных стилей браузера). Другими словами, независимо какой браузер у пользователей, которые посещают Ваш сайт, отображение должно быть в одном стиле — с одинаковыми отступами, границами и форматированием.

Для этого существуют различные шаблоны, которые сбрасывают внутренние стили (reset.css). Как правило, шаблоны адаптируются под себя (под Ваши нужды) и служат для удаления полей и отступов, устанавливая например 100% размер шрифта, убирая выделения полужирным шрифтом, устанавливают пространство между строками в абзаце, убирают маркеры в списках и тому подобное.

В настоящее время часто в своей работе используют альтернативу традиционному reset.css (сбросу внутренних стилей), нормализовывая таблицы стилей — normalize.css.

Данный проект (normalize. css) появился после глубокого исследования различий между изначальными стилями браузера под руководством Николаса Галахера. Основные задачи normalize.css заключаются в том, чтобы сохранить полезные настройки браузера, а не стирать их, и при этом нормализовать стили для широкого круга HTML элементов.

Как вы понимаете, normalize.css значительно отличается от reset.css. Впоследствии, я Вам рекомендую попробовать в своей работе оба метода, чтобы определиться, соответствует ли конкретный метод вашим предпочтениям в разработке.

Пример CSS reset — http://meyerweb.com/eric/tools/css/reset/
Проект normalize css — https://necolas.github.io/normalize.css/

Вопросы и задачи по теме

Перед тем как перейти к следующей статье ответьте на следующие вопросы:

  • подсчитайте специфичность комбинированного селектора:

  • . main a {

  • блок объявлений;

  • }

Показать ответ

  • подсчитайте специфичность комбинированного селектора:

  • #main #section {

  • блок объявлений;

  • }

Показать ответ

  • подсчитайте специфичность комбинированного селектора:

  • table.header tr:hover {

  • блок объявлений;

  • }

Показать ответ

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

Зачастую, если у ребёнка родители чудаки, то он от них не отстает, или как говорится: «яблоко от яблони недалеко падает». Что касается наследования в CSS, то это не что иное, как метод тиражирования различных CSS свойств, относящихся к одному элементу страницы на вложенные в него элементы (потомки).

Давайте сразу перейдем к примеру и рассмотрим наследование стилей на примере HTML элемента , который определяет видимое содержимое страницы.

 
Рис.28 Схема наследования стиля в CSS.

Создадим стиль для элемента , который будет изменять цвет и тип шрифта:

charset = «UTF-8»>

Пример наследования стиля в CSS

body { /* используем селектор типа */

color: green; /* устанавливаем цвет текста */

font-family: arial; /* устанавливаем тип шрифта */

}

Заголовок второго уровня Полный абзац

В этом примере для элемента  мы установили зеленый цвет текста и тип шрифта Arial. CSS свойства color и font-family наследуются, а это означает, что эти свойства будут применяться и на вложенные элементы внутри  (на все его потомки).

Обращаю Ваше внимание на то, что вы всегда можете посмотреть наследуется или нет конкретное свойство в полном справочнике CSS.

Результат нашего примера:

Рис. 29 Пример наследования стиля в CSS.

В выше рассмотренном примере все элементы, расположенные внутри  (его потомки) унаследовали его свойства. Механизм наследования имеет многоуровневую систему и распространяется не только на прямых потомков элемента, но и переносится на все вложенные элементы. В нашем примере к такому элементу относится элемент , который по аналогии с другими элементами унаследовал все свойства стиля, заданного для элемента . В этом заключается основной смысл наследования, который используется в CSS.

Механизм наследования значительно сокращает код CSS, например, если бы наш элемент  получил цвет по умолчанию – чёрный, то нам пришлось бы отдельно для этого элемента устанавливать стиль, который бы определял как цвет, так и тип шрифта, что значительно увеличивало бы трудозатраты на разработку конкретной страницы.

Еще один момент, который обязательно необходимо понять, это то, что аналогично действует механизм наследования не только для селекторов типа, но и для всех типов селекторов, рассмотренных в предыдущих статьях, посвященной этой тематике. Допустим, мы создали селектор класса с аналогичными CSS свойствами и применили его к элементу , то в этом случае все элементы, вложенные в него также унаследуют эти свойства.

Вы будете в дальнейшем использовать эти особенности CSS для упрощения Вашей работы по созданию стилей для элементов документа.

Ограничения и нюансы наследования

Ограничения:

  • Не наследуются свойства, которые влияют на размещение элементов на странице, свойства отвечающие за внешние и внутренние отступы элемента, свойства отвечающие за границы элементов. Все эти свойства мы подробно рассмотрим далее в учебнике. Повторюсь, что вы всегда можете посмотреть наследуется или нет конкретное свойство на сайте в справочнике CSS.

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

Нюансы:

Все современные браузеры используют собственные встроенные CSS стили для HTML элементов, эти стили, при необходимости, вы можете посмотреть у конкретного элемента на сайте в справочнике HTML(значение CSS по умолчанию). В следующей статье мы научимся обнулять встроенные стили для отображения ваших страниц одинаково во всех популярных браузерах.

А сейчас на примере элемента , определяющего гиперссылку, мы рассмотрим пример в котором рассмотрим почему некоторые элементы не наследуют некоторые свойства своего предка:

charset = «UTF-8»>

Нюансы наследования стилей

body { /* используем селектор типа */

color: green; /* устанавливаем цвет текста */

text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */

}

Абзац, который содержит внутри себя href = «#»>гиперссылку.

В этом примере для элемента  мы установили следующие стили: зеленый цвет текста и отсутствие декорирования текста (убрали нижнее подчеркивание снизу). Обратите внимание на элемент  на изображении, он полностью не изменился. Давайте разберемся ниже (после просмотра изображения) почему так происходит.

Результат нашего примера:

Рис. 29а Нюансы наследования стилей.

При возникновении конфликта побеждает сильнейший, в CSS это, как правило, явно определенный стиль. Откроем инструменты разработчика (для Chrome это F12). Обратите внимание какие встроенные в браузер CSS свойства (user agent stylesheet) имеет любая ссылка (any link) в документе. Для неё заданы следующие стили: цвет текста синий (-webkit-link — значение браузера по умолчанию), декорирование текста (нижнее подчеркивание) и определено, что браузер устанавливает курсор автоматически (значение auto CSS свойства cursor).

Ниже отображаются свойства, которые были унаследованы (Inherited from) элементом  от . Как вы можете заметить, браузер отбросил все стили элемента , по той причине, что у элемента стиль, который определяет цвет текста явно определен (встроенный стиль по умолчанию), а свойство, которое определяет декорирование текста не наследуется и отображается с небольшой прозрачностью в инструментах разработчика, но даже если бы оно наследовалось, то не применилось бы по аналогии с цветом теста (у элемента  это свойство тоже явно определно).

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

Вопросы и задачи по теме

Перед тем как перейти к следующей статье ответьте на следующие вопросы:

  • Что представляет из себя механизм наследования в CSS?

  • Где можно посмотреть наследуется или нет конкретное свойство если я не помню?

  • Где можно посмотреть какие встроенные CSS стили используются для HTML элементов?

Что означает «каскадирование» в CSS?

Это ответ для абсолютных новичков. Если вам нужен обзор этого ответа, прочтите мой второй ответ.

Каскадирование — это процесс объединения разных таблиц стилей и разрешения конфликтов между разными правилами и объявлениями CSS, когда к определенному элементу применяется более одного правила . Потому что, как вы, вероятно, уже знаете, объявление для определенного свойства стиля, такого как размер шрифта, может появляться в нескольких таблицах стилей, а также несколько раз внутри одной таблицы стилей.

Чтобы понять каскадирование, вы должны начать с фазы синтаксического анализа CSS, потому что на этапе синтаксического анализа первым шагом является разрешение конфликтующих объявлений CSS, а вторым шагом является обработка окончательных значений CSS.

Теперь CSS также может поступать из разных источников. Самый распространенный — это CSS, который пишем мы, разработчики. Эти объявления, которые мы помещаем в наши таблицы стилей, называются объявлениями автора. Другим источником могут быть объявления пользователя, то есть CSS, исходящий от пользователя. Например, когда пользователь изменяет размер шрифта по умолчанию в браузере, тогда это CSS пользователя, и, наконец, что не менее важно, есть объявления браузера по умолчанию.

Например, если мы поместим тег привязки в наш HTML-код для ссылки, а затем вообще не стилизуем его, он обычно будет отображаться с синим текстом и подчеркнутым, правильно. Это называется CSS пользовательского агента, потому что он устанавливается браузером. Итак, каскад объединяет объявления CSS, поступающие из всех этих разных источников, но как каскад на самом деле разрешает конфликты, когда применяется более одного правила?

Что ж, то, что он делает, — это анализирует важность, специфичность селектора и порядок источника конфликтующих объявлений, чтобы определить, какое из них имеет приоритет, и вот как это работает. Сначала каскад начинается с предоставления конфликтующих объявлений разной важности в зависимости от того, где они объявлены в их источнике. Наиболее важные объявления — это объявления пользователей, отмеченные ключевым словом important.

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

Теперь очень часто в таблицах стилей авторов будет просто куча противоречащих друг другу правил без каких-либо важных ключевых слов. На самом деле это наиболее распространенный сценарий, и в этом случае все объявления имеют одинаковое значение. Что же происходит в этом случае? В этом случае каскад рассчитывает и сравнивает особенности селекторов объявлений, и вот как он работает.

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

В приведенном выше примере все эти объявления имеют одинаковую важность, потому что все они являются объявлениями автора. Итак, давайте рассчитаем особенности их селекторов, чтобы узнать, будет ли цвет фона синим, зеленым, фиолетовым или желтым, и вот как мы это делаем. На самом деле специфика — это не одно число, а одно число для каждой из четырех категорий, которые я вам показал ранее. Встроенные стили, идентификаторы, классы, псевдоэлементы и атрибуты и, наконец, элементы, и для каждого из них мы подсчитываем количество вхождений в селекторе.

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

А теперь давайте сравним его с другими. Следующий стиль также не является встроенным, поэтому ноль для первого. Теперь у нас действительно есть селектор идентификатора для идентификатора навигации, так что он один для идентификатора. У нас также есть два класса, тянущие вправо и кнопку, так что это два для категории классов, и, наконец, здесь также есть два селектора элементов. Элемент nav и элемент div, что означает, что их также два для категории elements. Итак, наконец, специфичность селектора — ноль, один, два, два, что на самом деле является очень специфичным селектором.

Селектор номер три очень прост. Это просто селектор элементов, поэтому его специфичность равна нулю, нулю, нулю, единице.

Теперь последний, селектор номер четыре. Сначала снова у нас есть идентификатор навигации, так что он один для идентификатора. Затем у нас есть класс, класс кнопки, а также псевдокласс, который находится при наведении курсора, что составляет всего два для категории классов. Поскольку есть еще один селектор элементов, окончательная специфичность равна нулю, единице, двум, единице.

Теперь давайте узнаем, как мы на самом деле используем эти числа, чтобы узнать, какой из селекторов применим. Мы начинаем смотреть на числа слева направо, начиная с наиболее конкретной категории, встроенных стилей. Если есть селектор с одним для встроенных стилей, выигрывает у всех других селекторов, потому что это наиболее конкретная категория. Что ж, здесь дело обстоит не так, поэтому перейдем к идентификаторам. Мы видим, что у селекторов два и четыре здесь есть единица, а у других — ноль, поэтому те, у которых есть ноль, исключены из игры, потому что они менее специфичны, чем селекторы два и четыре с идентификаторами.

Теперь, когда у обоих селекторов есть один в категории идентификаторов, мы должны двигаться дальше и проверять классы. У них обоих есть два в этой категории, но между ними все еще есть связь, и, наконец, в категории элементов у селектора два есть два, а у селектора четыре только один, и поэтому у нас есть победитель. Селектор номер два является наиболее специфическим селектором из всех, поэтому он придаст нашей кнопке зеленый фон.34 Значение выигравшего объявления называется каскадным значением, потому что оно является результатом каскада.

Итак, мы начинаем с набора объявленных значений в этом случае: синий, зеленый, фиолетовый и желтый, одно из них выигрывает и становится каскадным значением, которое в нашем примере является зеленым.

А теперь представьте, что в четвертом секторе также есть два элемента, тогда оба селектора два и четыре будут иметь одинаковую специфичность, верно. Итак, что происходит в этом случае, и я обещаю вам, что теперь все почти закончилось, хорошо. Что ж, если на этом этапе все еще есть ничья, тогда будет применяться последнее объявление CSS, написанное в коде. Итак, снова, если все равно, если все селекторы объявлений имеют одинаковую специфичность, тогда это просто последнее объявление, которое будет использоваться для стилизации выбранного элемента.

Наследование, каскадирование и приоритетность стилей

Наследование в CSS

Все свойства CSS делятся на те, которые наследуются элементами-потомками от своих элементов-предков, и те, которые
не наследуются. Так, например, если для параграфа задать границу (сформировать рамку), то все вложенные в него элементы (элементы-потомки) не
унаследуют это свойство CSS, поскольку в данном случае наследование
не имеет положительного эффекта. Согласитесь, не совсем разумно было бы переопределять для каждого элемента-потомка унаследованные от абзаца-родителя
границы. Но, если мы зададим для абзаца, например, синий цвет шрифта, то он будет унаследован всеми элементами потомками до тех пор, пока мы не
переопределим его в случае необходимости для конкретного элемента, а это эффективнее, чем определять шрифт отдельно для каждого элемента-потомка.
Узнать, какие стилевые свойства наследуются, а какие нет, можно в нашем справочнике CSS
здесь.

Каскадирование стилей CSS

Каскадирование стилей – это встроенная особенность
CSS, которая заключается в том, что если к элементу применяется сразу несколько стилей, то результирующий стиль будет
сформирован из всех присутствующих в этих стилях видов свойств, при чем в случае наличия двух или более одинаковых свойств к элементу будет применено
значение свойства с наибольшим в данной ситуации приоритетом.

Давайте для начала рассмотрим простейший случай, показанный в примере №1.

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">	
	<title>Наследование стилей</title>
	
	<style>
	
		p{
		color: red;		  				 
		background-color: black;    	
		}
		
		/* Для абзацев с атрибутом 
		добавляем ширину и переопределяем фон */	
		p.yellow_back{
		background-color: yellow;
		width: 200px;  	 						 
		}
		
	</style>
	
</head>
<body>

	<p>
		Текст простого абзаца.
	</p>
	
	<p>
		Текст абзаца с классом.
	</p>
	
	<p>
		Переопределяем и цвет шрифта, и ширину абзаца.
	</p>
	
</body>
</html>

Пример №1. Простейший случай каскадности стилей CSS

Как видно из примера, к первому абзацу применяется только первый стиль из внутренней таблицы стилей, который задает ему черный фон и красный
цвет шрифта. Ко второму абзацу применяется уже два стиля из внутренней таблицы стилей, поэтому результирующий стиль формируется следующим образом:
сперва берутся все свойства стиля, у которого специфичность (конкретность) селектора больше (в нашем случае это второй стиль), затем добавляются
отсутствующие в нем свойства из других, применяемых к данному элементу стилей, у которых специфичность (конкретность) селектора меньше (в нашем
случае это первый стиль). Таким образом, для второго абзаца будет добавлена ширина, а фон будет переопределен с черного на желтый. К третьему абзацу
применяется сразу три стиля: два из внутренней таблицы стилей и собственный встроенный стиль. Встроенный стиль обладает наибольшим приоритетом,
поэтому он переопределит цвет шрифта, заданный в первом стиле, и ширину, заданную во втором стиле внутренней таблицы стилей.

Таким образом, чтобы правильно рассчитать результирующий стиль, применяемый к элементу, необходимо знать правила формирования этого стиля
в случае наложения нескольких стилей сразу. Правила эти сводятся к расчету специфичности селекторов применяемых к элементу стилей,
содержащих одинаковые css-свойства с разными значениями, а также, в случае равенства специфичности селекторов, к
сравнению видов стилей, сравнению расположения таблиц с этими стилями или же, если они окажутся в одной и той же таблице стилей, сравнению их
расположения в коде этой таблицы. Рассмотрим этот вопрос подробнее.

Специфичность селекторов CSS

Если к одному и тому же элементу применяются два правила, содержащие одинаковые свойства CSS, но
имеющие разные значения, возникает конфликт, который может быть решен при помощи сравнения специфичности селекторов этих правил. В результате
этого решения к элементу будет применено свойство правила, у которого специфичность селектора больше.

Расчет специфичности селектора производится при помощи трех чисел (a, b,
c). Происходит это следующим образом:

  • числу a присваивается количество идентификаторов в селекторе;
  • числу b присваивается суммарное количество классов, атрибутов и псевдоклассов в селекторе;
  • числу c присваивается суммарное количество элементов и псевдоэлементов.

После подсчета чисел у всех сравниваемых селекторов, селектором с большей специфичностью будет считаться тот, у которого больше число
a, в независимости от величины чисел b и c. Если
же у сравниваемых селекторов число a окажется одинаковым, будет сравниваться их число b,
а в случае необходимости и число c (см. пример №2).

/* Запишем пример кода html */

/*  

<p> 
	<em title="Город">Текст...</em> 
</p> 
	
*/

/* Здесь а=1, т.к. в селекторе есть 1 идентификатор; */	
/* b=0, т.к. есть 0 классов, 0 атрибутов и 0 псевдоклассов; */	
/* с=0, т.к. есть 0 элементов и 0 псевдоэлементов; */
/* т.о. специфичность равна (1,0,0). */
#m_id{
color: blue;			 
}

/* Здесь а=0, т.к. в селекторе отсутствуют идентификаторы; */	
/* b=3, т.к. есть 1 класс, 1 атрибут и 1 псевдокласс; */	
/* с=2, т.к. присутствуют два элемента: «p» и «em»; */
/* т.о. специфичность равна (0,3,2). */

p.my_class em[title="Город"]:hover{
color: red;			 
}

/* Значит цвет текста в примере кода будет синим, т.к. 
во втором правиле число а=0, а в первом правиле а=1. */

/* А вот если бы специфичности селекторов были равны, 
то приоритет имел бы стиль нижнего правила. */

Пример №2. Сравнение специфичности селекторов

Виды и приоритет стилей CSS

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

  • Стиль браузера обладает наиболее низким приоритетом и применяется по
    умолчанию к элементам html-кода, к которым не применяется другое форматирование, говоря проще – к
    «голому» html-коду.
  • Стиль пользователя устанавливается в настройках браузера пользователем и
    по сути представляет собой измененный пользователем стиль браузера по умолчанию. Так что, если пользователь изменил стиль браузера, то по
    умолчанию станет применяться стиль пользователя.
  • Стиль автора устанавливается автором страницы (программистом) и обладает
    еще большим приоритетом. Именно он нас и будет больше всего интересовать.

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

  • Стили, унаследованные элементами-потомками от своих родителей, обладают самым низким приоритетом.
  • Стили, заданные во внешних таблицах обладают большим приоритетом. При этом правила, которые идут в коде внешней таблицы стилей
    ниже (т.е. встречаются позже) имеют больший приоритет перед правилами, которые встречаются в коде этой таблицы выше (т.е. раньше).
    Кроме того, из нескольких внешних таблиц стилей большим приоритетом обладают таблицы, подключенные к документу при помощи элемента
    «link» ниже в коде этого документа. Соответственно, если таблица подключена в коде
    документа выше, то приоритет ее стилей будет ниже.
  • Стили внутренних таблиц (расположены внутри контейнеров
    «style») имеют приоритет перед стилями внешних таблиц, но только если они
    расположены в коде ниже, чем элемент «link», при помощи которого была подключена
    внешняя таблица стилей. Опять же, правила, которые идут в коде внутренней таблицы стилей ниже имеют больший приоритет перед правилами, которые
    встречаются в коде этой таблицы выше. Кроме того, если в документе используется несколько внутренних таблиц стилей, т.е. имеется несколько
    элементов «style», то большим приоритетом обладают стили тех таблиц, которые
    расположены в коде документа ниже.
  • Еще большим приоритетом обладают встроенные стили, которые преобладают над правилами с любой специфичностью
    селекторов. Действительно, куда уже конкретнее, если стиль расположен в открывающем теге элемента.

Служебный параметр !important

Отдельно следует сказать про служебный параметр !important
(от англ. importantважный), который указывается
в случае необходимости во внутренних и внешних таблицах стилей после значения css-свойства через пробел, например,
p{color: green !important;} (см. пример №3). Свойство стиля, в котором указан данный параметр, обладает наибольшим
приоритетом в независимости от расположения таблицы стилей в коде документа или же самого правила внутри таблицы стилей, но только в ситуации, когда
специфичности стилей равны (при этом не следует забывать, что специфичность встроенного стиля следует считать наивысшей в любом случае!). Опять же,
если свойств с таким параметром несколько, да еще и специфичности соответствующих селекторов одинаковы, то приоритет будет определяться по виду стиля,
расположению таблиц стилей или же, если они окажутся в одной и той же таблице стилей, сравнению их расположения в коде этой таблицы.

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">  
	<title>Модификатор !important</title>

	<style>

		/* Специфичность селектора выше */
		div p.green_normal{
		color: #007700;      
		font-weight: normal;   
		}

		/* Специфичность селектора ниже, */
		/* плюс отсутствует !important */
		.bold_wrong{
		font-weight: bold;   
		}	

		/* Специфичность селектора ниже, */
		/* но присутствует !important */	
		.bold_font{
		font-weight: bold !important;   
		}

	</style>

</head>
<body>

	<div>
		<p>
			Получаем обычный текст, зеленого цвета.
		</p>
	</div>

	<div>
		<p>
			Начертание не стало полужирным, т.к. приоритет<br> 
			селектора .bold_font ниже, чем селектора div p.green_normal.
		</p>
	</div>

	<div>
		<p>
			Цвет текста остался зеленым, но начертание стало полужирным,<br> 
			т.к. в подключенном классе .bold_font присутствует !important.
		</p>
	</div>

	<div>
		<p>
			Цвет текста остался зеленым, но начертание стало полужирным,<br> 
			т.к. в подключенном классе .bold_font присутствует !important.<br>
			<span>Но мое начертание осталось 
			обычным,<br> т.к. встроенный стиль имеет наивысший приоритет.</span>
		</p>
	</div>

</body>
</html>

Пример №3

Всегда пытайтесь использовать специфичность, а не модификатор !important, т.к. он
усложняет отладку, нарушая естественное каскадирование стилей.

Из сказанного выше, следует простой вывод: чем ближе стиль расположен к элементу и чем более конкретнее его селектор, тем большим приоритетом он
обладает.

Использование одинаковых свойств CSS в одном правиле

В заключение данного пункта добавим, что в одном и том же правиле иногда задают два одинаковых свойства, но с разными значениями (см. пример №4). Так
обычно поступают, когда одно из значений свойства не поддерживается каким-нибудь браузером, тогда его помещают в блоке объявлений (стиле) вторым, а
другое правило, которое поддерживается всеми браузерами, помещают первым. В результате, если страница открывается в браузере, в котором второе
правило не имеет силы, оно будет проигнорировано, а браузер применит первое правило. Если же страница открывается в браузере, в котором имеют
силу и первое и второе правила, то второе правило будет иметь больший приоритет, т.к. следует в коде позже. Таким образом, в любом случае
будет реализована задумка программиста, а не применено значение свойства устанавливаемое браузером по умолчанию или наследуемое от родительского
элемента.

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">  
	<title>Одинаковые свойства в одном правиле</title>

	<style>

		p{
		width: 450px;
		color: blue;
		color: superblue;
		}

	</style>

</head>
<body>

	<p>
		Цвет текста будет просто синим, т.к. 
		значение superblue не поддерживается 
		браузером и будет просто проигнорировано.
	</p>
    
</body>
</html>

Пример №4

Быстрый переход к другим страницам

Приоритет значений CSS для HTML-документа

Ниже приведен CSS:

  1. body {background: # 6CC7E1}
  2. .textbox {height: 100px; размер шрифта: 35 пикселей; фон: # 488921; display: inline-block}


Выходные данные

Примечание: Здесь обратите внимание, что свойства, определенные во внешнем CSS, переопределяют свойства, определенные во встроенном CSS, поскольку он использует подход сверху вниз.


Шаг 6

Теперь я изменю селектор во внешнем CSS.Я заменю селектор класса селектором тега (div).

Выход

Примечание. Здесь обратите внимание, что свойства, определенные во встроенном CSS, переопределяют свойства, определенные во внешнем CSS, потому что селектор класса имеет более высокий приоритет, чем селектор тегов, и здесь подход сверху вниз не использовал.


Шаг 7

Значение CSS, указанное с пометкой «важно», имеет более высокий приоритет для документа HTML. Во внешнем CSS для свойства Height я предоставлю значение с important и inline, встроенный CSS останется прежним.


Внешний CSS

Ниже приведен внешний CSS:

  1. body {background: # 6CC7E1}
  2. div {height: 100px! Important; размер шрифта: 35 пикселей; фон: # 488921; display: inline-block}

Output

Примечание: Здесь обратите внимание, что значение, указанное для свойства height во внешнем CSS, переопределяет значения, заданные этому свойству во встроенном и встроенном CSS, поскольку во внешнем CSS это значение определяется как важная ценность.

Сводка

Теперь мы можем сказать, что приоритет свойства CSS в документе HTML применяется сверху вниз и слева направо.

Значения, определенные как важные, будут иметь наивысший приоритет.

Встроенный CSS имеет более высокий приоритет, чем встроенный и внешний CSS.

Итак, окончательный заказ:

Значение определено как Важное> Встроенное> Вложение идентификатора> Идентификатор> Вложение класса> Класс> Вложение тега> тег.

Не стесняйтесь оставлять свое мнение по этой теме, нажав на комментарий.

CSS, который имеет приоритет, встроенный или класс?

CSS, который имеет приоритет, встроенный или класс? — Переполнение стека

Присоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.

Спросил

Просмотрено
26к раз

У моего веб-сайта есть таблица стилей, определенная в заголовке как style.css с селектором:

  .myClass {background: # 000;}
  

Теперь мой div выглядит так:

  
& nbsp;

Какой из них имеет приоритет: встроенный или класс?

Эстевао-Луис

1,9979 золотых знаков2828 серебряных знаков3535 бронзовых знаков

Создан 19 июл.

Снег, Мак, Снег, Мак

1,949611 золотых знаков5050 серебряных знаков7979 бронзовых знаков

0

В общем, мы можем сказать, что все стили будут «каскадированы» в новую «виртуальную» таблицу стилей по следующим правилам, где номер три имеет наивысший приоритет:

  1. Браузер по умолчанию
  2. Встроенные и внешние таблицы стилей.Позднее имеет приоритет перед ранним. НЕТ какой-либо внутренней разницы между встроенным и внешним.
  3. Встроенный стиль (внутри элемента HTML)

Источник (Правка: исходной неверной информации, так как исправлено и здесь, и там): w3schools

W3schools много объясняет о CSS, а также рассматривает и показывает примеры большинства вещей, которые вы можете делать с помощью CSS. Всегда хороший ресурс, если у вас есть вопросы. (Edit: спорно, они были источником исходного неправильного ответа.)

Создан 19 июл.

Atrljoeatrljoe

7,5771111 золотых знаков5858 серебряных знаков109109 бронзовых знаков

6

Порядок приоритета с CSS следующий:

  1. ! Important (хотя это немного хакерски, но это единственный способ переопределить встроенный стиль.Старайтесь не использовать это без крайней необходимости). Пример: p {color: blue! Important; }
  2. Встроенный , например

    CSS - это круто

    . В этом примере класс игнорируется, если объявление класса redText уже попыталось определить свойство color: . Однако другие свойства все еще могут быть соблюдены.

  3. Внутренние стили — те, которые написаны внутри раздела

    Создан 05 мар.

    Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками css или задайте свой вопрос.

    по умолчанию

    Stack Overflow лучше всего работает с включенным JavaScript

    Ваша конфиденциальность

    Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в ​​отношении файлов cookie.

    Принимать все файлы cookie

    Настроить параметры

    Типы CSS и уровень приоритета для стилей

    Здесь мы обсудим различные типы объявленных свойств стиля и их приоритет над другими.CSS дает гибкость в использовании различных свойств стиля локально, переопределяя глобальные объявленные значения или объявленные стили во внешней таблице стилей.
    Начнем с Типов стилей. В основном есть три типа

    Встроенная таблица стилей или встроенные стили
    Внутренняя таблица стилей
    Внешняя таблица стилей

    У нас также есть еще два типа стилей на стороне клиента. Один из них - стиль, определенный пользователем, а другой - стиль по умолчанию для браузера. Тогда возникает большой вопрос, почему так много стилей? Если определено более одного стиля, то какой из них будет соблюдаться? Для этого определен уровень приоритета, и на основе этого приоритета включается свойство стилей.

    1. Пользовательский стиль
    2. Встроенная или встроенная таблица стилей
    3. Внутренняя таблица стилей
    4. Внешняя таблица стилей
    5. Стиль браузера по умолчанию

    Здесь мы видим, что из приведенного выше списка мы, как дизайнер, можем контролировать серийные номера 2, 3 и 4. Эти три типа стилей мы обсудим подробнее. Внутри этих трех (встроенный, внутренний и внешний) порядок приоритета - сначала встроенный, затем внутренний и последний приоритет отдается внешним стилям.Это самое большое преимущество, поскольку мы можем переопределить свойство глобального стиля и определить его локально. Давайте начнем изучать каждый из этих трех типов CSS.

    Встроенный

    Мы добавляем стили в наши HTML-теги. Это имеет наивысший приоритет, чем внутренние и внешние стили. Попробуем добавить стиль фона к одному тегу h5.

      
    Это тег h5

    Внутренний стиль

    Этот тип стиля определяется внутри тега body страницы.Стиль, определенный здесь, имеет приоритет над внешними стилями, но после встроенных стилей. Вот пример внутренних стилей.

      
    
     (Введите здесь заголовок для своей страницы) 
    
    
    <тело>
    
    

    Это контент, и его стиль определен
    во внутренней таблице стилей

    ДЕМО: Жирный тег с изменением размера шрифта по внутреннему стилю →

    Внешние таблицы стилей

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

        

    Вышеупомянутый тег должен быть помещен в теги заголовка страницы. Мы можем сохранить детали нашего стиля в файле с именем style.css. Следите за линковкой файла. Детали пути должны быть указаны для включения таблицы стилей.
    Генератор кода CSS → ← Преимущество CSS Ссылки без подчеркивания по стилю →

    Эта статья написана на сайте plus2net.com team.

    plus2net.com

    Nae

    04-07-2012

    Приоритеты ..?
    Santosh Rathod

    05-03-2013

    хорошее объяснение приоритета ...
    gautham.m thirumangalam

    16-04-2013

    1

    я точно знаю об этом
    Habib Mahomed

    30-03-2015

    Я до сих пор не понимаю, почему существуют разные уровни CSS !!!
    Сейед Джафар Мортазави

    18-10-2018

    Привет всем,
    Поскольку я искал эту тему, чтобы написать статью, и я увидел эту статью в своем исследовании, я хотел бы поделиться с вами своими накопленными знаниями.Надеюсь, это будет полезно для вас.
    Так как статья получилась длинноватой, я отправил ей два-три сообщения.

    *** Типы CSS ***
    1. Есть три типа вставки CSS, которые называются встроенным CSS, внутренним CSS и внешним CSS.
    2. Встроенный CSS вставляется в начальный тег HTML-элемента. Чтобы использовать встроенные стили, добавьте атрибут стиля к соответствующему элементу. Модель
    Атрибут style может содержать любое свойство CSS. Встроенный стиль может использоваться для применения уникального стиля для отдельного элемента.
    3. Внутренний CSS может использоваться, если одна страница имеет уникальный стиль. Внутренние стили определены в элементе

    При использовании методов 1 и 2 свойства CSS устанавливаются селекторами, будучи.class, #id и отметьте наиболее часто используемые. Чтобы задать свойства элемента, на который ссылаются несколько селекторов, CSS снова основан на приоритетах: наивысший ранг, который селектор получает по данной формуле, будет тем, который определяет свойства CSS, а свойства проигрывающих селекторов будут переопределить. Формула рассчитывается следующим образом:

    a = встроенный стиль (тип 3)
    b = количество идентификаторов (#) в селекторе
    c = количество классов (.) и псевдоклассов [1] в селекторе
    d = количество HTML-тегов в селектор

    Формула: 1000 * a + 100 * b + 10 * c + d

    Селектор с наивысшим рангом выигрывает [2] , в случае ничьей преобладает тот, который определен позже в файле CSS.Такие операторы, как> ‘и‘ ~ ‘, добавляют или удаляют точки в формуле:

    1
    2

    ul li {...} / * Ранг: 2 * /
    ul> li {...} / * Ранг: 2. Последнее объявление -> Победы * /

    Мы также можем использовать объявление! Important, которое дает наивысший приоритет этому свойству, но считается, что оно недостаточно чистое, поэтому рекомендуется объявлять с классами и идентификаторами столько HTML-элементов, сколько нам нужно.

    Несколько примеров, чтобы прояснить это:

    1
    2
    3
    4
    5
    6

    ul li {...} / * Ранг: 2 (1 + 1) * /
    .red {...} / * Ранг: 10 * /
    #myID {...} / * Ранг: 100 * /
    #myID .red {...} / * Ранг: 110 (100 + 10) * /
    #myID .red div> ul {...} / * Ранг: 112 (100 + 10 + 1 + 1) * /
    #myID.red div li: first-child {...} / * Ранг: 114 (100 + 10 + 1 + 1 + 2) * /


    [1] Псевдоклассы: [class * = ”red”], [type = ”button”], [id = content]. Последний, даже ссылаясь на идентификатор, считается селектором псевдокласса.
    [2] На самом деле это не 10-базовая сумма, поскольку селектор с 11 тегами HTML имеет меньший приоритет, чем один селектор класса, но у вас действительно есть проблема, если вы используете такой огромный селектор 🙂

    Сначала напечатать встроенный, внутренний или внешний стиль CSS?

    Большинство новичков часто задаются вопросом, какой стиль будет печатать браузер первым, когда мы объявляем несколько стилей.Хотя я уже объяснял ранее порядок приоритета CSS, я забыл о важности встроенного, внутреннего и внешнего стиля CSS, который могли бы задаться вопросом как дизайнеры, так и разработчики, когда они начали работать в Интернете.

    Встроенный CSS

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

     
    Нажми меня!

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

    Внешний CSS

    Внешний CSS, стиль которого обычно помещается во внешний файл, обычно имеет самый низкий приоритет по сравнению с этими тремя типами.

     
     

    Тем не менее, в некоторых случаях внешний CSS может иметь более высокий приоритет над внутренним CSS.

    Внутренний CSS

    Внутренний CSS - это определение, объявленное внутри документа HTML с тегом стиля,

     
     

    Внутренний CSS обычно имеет второй приоритет среди них.Однако он потеряет свой приоритет, если объявление внешней таблицы стилей будет размещено после внутреннего CSS. Следовательно,

     
    
     

    внутренний CSS находится после внешнего CSS. Следовательно, внутренний CSS имеет более высокий приоритет. С другой стороны,

     
    
     

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

    Priority Sequences

    Следовательно, мы можем создать приоритетные последовательности того, как CSS определяет приоритеты наших типов CSS.

    1. Пользовательский стиль
    2. Встроенный стиль (внутри тега HTML)
    3. Внутренний стиль (обычно в разделе заголовка HTML)
    4. Внешний стиль
    5. Стиль по умолчанию для браузера

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

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

    Ваш адрес email не будет опубликован. Обязательные поля помечены *