HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>23 янв 2023</li>
2 <ul><li>23 янв 2023</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Большой гайд для тех, кто хочет правильно находить и выбирать элементы при вёрстке.</p>
4 </ul><p>Большой гайд для тех, кто хочет правильно находить и выбирать элементы при вёрстке.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.</p>
6 <p>Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.</p>
7 <p>Удачный выбор селектора не только позволяет избежать ошибок в коде, но и упрощает вёрстку, поэтому желательно знать разновидности селекторов и хорошо в них ориентироваться. Эта статья будет полезна как новичкам, так и опытным фронтенд-разработчикам и верстальщикам, которые хотят освежить знания.</p>
7 <p>Удачный выбор селектора не только позволяет избежать ошибок в коде, но и упрощает вёрстку, поэтому желательно знать разновидности селекторов и хорошо в них ориентироваться. Эта статья будет полезна как новичкам, так и опытным фронтенд-разработчикам и верстальщикам, которые хотят освежить знания.</p>
8 <p><strong>Содержание</strong></p>
8 <p><strong>Содержание</strong></p>
9 <ul><li><a>Что такое CSS-селекторы</a></li>
9 <ul><li><a>Что такое CSS-селекторы</a></li>
10 <li><a>Основные виды селекторов</a></li>
10 <li><a>Основные виды селекторов</a></li>
11 <li><a>Селекторы отношений</a></li>
11 <li><a>Селекторы отношений</a></li>
12 <li><a>Селекторы по атрибуту</a></li>
12 <li><a>Селекторы по атрибуту</a></li>
13 <li><a>Немного о псевдоклассах</a></li>
13 <li><a>Немного о псевдоклассах</a></li>
14 <li><a>Как определить приоритет селектора</a></li>
14 <li><a>Как определить приоритет селектора</a></li>
15 </ul><p><strong>Селектор</strong>(от англ. select - выбирать) - это шаблон, который позволяет обратиться к элементу или группе элементов веб-страницы, чтобы применить к ним стили CSS. Его указывают перед блоком со свойствами:</p>
15 </ul><p><strong>Селектор</strong>(от англ. select - выбирать) - это шаблон, который позволяет обратиться к элементу или группе элементов веб-страницы, чтобы применить к ним стили CSS. Его указывают перед блоком со свойствами:</p>
16 a { text-decoration: none; }<p>В примере выше селектор указывает на тег &lt;a&gt; (гиперссылка). Так мы говорим браузеру отключить подчёркивание у<strong>всех ссылок</strong>на странице, устанавливая для свойства text-decoration значение none.</p>
16 a { text-decoration: none; }<p>В примере выше селектор указывает на тег &lt;a&gt; (гиперссылка). Так мы говорим браузеру отключить подчёркивание у<strong>всех ссылок</strong>на странице, устанавливая для свойства text-decoration значение none.</p>
17 <p>Подключим CSS-стили к следующему HTML-файлу:</p>
17 <p>Подключим CSS-стили к следующему HTML-файлу:</p>
18 &lt;p&gt;Содержание статьи:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="#"&gt;Emmet на практике: пишем HTML&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Создаём шапку документа&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Подключаем стили и скрипты&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Добавляем ссылки&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Вводим теги&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;<p>Вот как она выглядит в браузере:</p>
18 &lt;p&gt;Содержание статьи:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="#"&gt;Emmet на практике: пишем HTML&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Создаём шапку документа&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Подключаем стили и скрипты&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Добавляем ссылки&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Вводим теги&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;<p>Вот как она выглядит в браузере:</p>
19 Страница в браузере<em>Скриншот: Skillbox Media</em><p>Есть ненумерованный список со ссылками, которые браузер по умолчанию выделяет синим цветом и подчёркивает. Если подключить стили, которые мы написали выше, то подчёркивание исчезнет:</p>
19 Страница в браузере<em>Скриншот: Skillbox Media</em><p>Есть ненумерованный список со ссылками, которые браузер по умолчанию выделяет синим цветом и подчёркивает. Если подключить стили, которые мы написали выше, то подчёркивание исчезнет:</p>
20 Та же страница, но ссылки не подчёркнуты<em>Скриншот: Skillbox Media</em><p>CSS-селектор работает! Но это, конечно, далеко не единственный способ обращения к элементам.</p>
20 Та же страница, но ссылки не подчёркнуты<em>Скриншот: Skillbox Media</em><p>CSS-селектор работает! Но это, конечно, далеко не единственный способ обращения к элементам.</p>
21 <p>О том, как подключить CSS к HTML, читайте в другой<a>нашей статье</a>.</p>
21 <p>О том, как подключить CSS к HTML, читайте в другой<a>нашей статье</a>.</p>
22 <p>Структура реальных проектов гораздо сложнее. Веб-страницы интернет-магазинов, корпоративных сайтов и блогов наполнены множеством вложенных и однотипных элементов - всем нужно задать уникальный дизайн. Если бы мы могли обращаться к ним только по названию, то даже с CSS веб оставался бы хранилищем скучного гипертекста.</p>
22 <p>Структура реальных проектов гораздо сложнее. Веб-страницы интернет-магазинов, корпоративных сайтов и блогов наполнены множеством вложенных и однотипных элементов - всем нужно задать уникальный дизайн. Если бы мы могли обращаться к ним только по названию, то даже с CSS веб оставался бы хранилищем скучного гипертекста.</p>
23 <p>К счастью, есть около 20 способов выбрать нужный элемент. Рассмотрим основные.</p>
23 <p>К счастью, есть около 20 способов выбрать нужный элемент. Рассмотрим основные.</p>
24 <p>Он применяет стили ко всем элементам страницы и обозначается символом * (звёздочка). С его помощью удобно сбрасывать отступы и задавать значение box‑sizing для всех блочных элементов:</p>
24 <p>Он применяет стили ко всем элементам страницы и обозначается символом * (звёздочка). С его помощью удобно сбрасывать отступы и задавать значение box‑sizing для всех блочных элементов:</p>
25 * { margin: 0; box-sizing: border-box; }<p>Этот селектор CSS применяет стили ко всем элементам с одинаковым тегом. Например, для всех &lt;div&gt;, &lt;h2&gt;, &lt;p&gt; и так далее.</p>
25 * { margin: 0; box-sizing: border-box; }<p>Этот селектор CSS применяет стили ко всем элементам с одинаковым тегом. Например, для всех &lt;div&gt;, &lt;h2&gt;, &lt;p&gt; и так далее.</p>
26 <p>Мы уже познакомились с ним, когда убирали подчёркивание у ссылок:</p>
26 <p>Мы уже познакомились с ним, когда убирали подчёркивание у ссылок:</p>
27 a { text-decoration: none; }<p>Селектор по идентификатору обозначается символом # (решётка) и применяет стили к элементу, для которого задан атрибут id с соответствующим значением. При этом у элемента может быть только один id, и этот id должен быть уникальным в пределах веб-страницы.</p>
27 a { text-decoration: none; }<p>Селектор по идентификатору обозначается символом # (решётка) и применяет стили к элементу, для которого задан атрибут id с соответствующим значением. При этом у элемента может быть только один id, и этот id должен быть уникальным в пределах веб-страницы.</p>
28 &lt;p id="intro"&gt;Сегодня мы расскажем вам об Emmet.&lt;/p&gt; &lt;p id="article_content"&gt;В этой статье вы узнаете:&lt;/p&gt;<p>CSS-код:</p>
28 &lt;p id="intro"&gt;Сегодня мы расскажем вам об Emmet.&lt;/p&gt; &lt;p id="article_content"&gt;В этой статье вы узнаете:&lt;/p&gt;<p>CSS-код:</p>
29 #intro{ color: red; font-weight: bold; } #article_content{ font-family: sans-serif; font-weight: bold; }<p>Текст в блоке p с идентификатором intro окрасится в красный, а текст с идентификатором article_content выделится жирным и получит шрифт без засечек:</p>
29 #intro{ color: red; font-weight: bold; } #article_content{ font-family: sans-serif; font-weight: bold; }<p>Текст в блоке p с идентификатором intro окрасится в красный, а текст с идентификатором article_content выделится жирным и получит шрифт без засечек:</p>
30 <em>Скриншот: Skillbox Media</em><p>CSS-селектор по классу выбирает элементы, для которых назначен атрибут class с соответствующим значением. При этом один элемент может принадлежать нескольким классам - в таком случае их перечисляют через пробел:</p>
30 <em>Скриншот: Skillbox Media</em><p>CSS-селектор по классу выбирает элементы, для которых назначен атрибут class с соответствующим значением. При этом один элемент может принадлежать нескольким классам - в таком случае их перечисляют через пробел:</p>
31 &lt;p class="plain_text article"&gt;Сегодня мы расскажем вам про Emmet.&lt;/p&gt;<p>Абзац входит в классы plain_text и article. Значит, к нему применяются стили обоих классов:</p>
31 &lt;p class="plain_text article"&gt;Сегодня мы расскажем вам про Emmet.&lt;/p&gt;<p>Абзац входит в классы plain_text и article. Значит, к нему применяются стили обоих классов:</p>
32 .plain_text{ font-size: 20px; } .article{ font-family: "Montserrat"; }<p>CSS-селекторы можно сгруппировать, чтобы применить стили к нескольким группам и/или классам элементов. Для этого достаточно перечислить их через запятую:</p>
32 .plain_text{ font-size: 20px; } .article{ font-family: "Montserrat"; }<p>CSS-селекторы можно сгруппировать, чтобы применить стили к нескольким группам и/или классам элементов. Для этого достаточно перечислить их через запятую:</p>
33 .plain_text, p, h1, figure, div { margin-top: 0; margin-left: 0; }re&gt;<p>Есть группа селекторов, которые позволяют выбрать элемент по его отношению к другим элементами (родитель - потомок) и по расположению в DOM (Document Object Model).</p>
33 .plain_text, p, h1, figure, div { margin-top: 0; margin-left: 0; }re&gt;<p>Есть группа селекторов, которые позволяют выбрать элемент по его отношению к другим элементами (родитель - потомок) и по расположению в DOM (Document Object Model).</p>
34 <p>Чтобы обратиться ко всем потомкам В элемента A, независимо от уровня их вложенности, используют конструкцию A B (селекторы разделяют пробелом):</p>
34 <p>Чтобы обратиться ко всем потомкам В элемента A, независимо от уровня их вложенности, используют конструкцию A B (селекторы разделяют пробелом):</p>
35 figure img { margin-bottom: 20px; }<p>В примере выше мы устанавливаем<strong>всем изображениям</strong>внутри элемента figure значение нижних отступов 20 пикселей.</p>
35 figure img { margin-bottom: 20px; }<p>В примере выше мы устанавливаем<strong>всем изображениям</strong>внутри элемента figure значение нижних отступов 20 пикселей.</p>
36 <p>Если нужно применить CSS-стили к потомкам B элемента A только на первом уровне вложенности, то вместо пробела пишут символ &gt;:</p>
36 <p>Если нужно применить CSS-стили к потомкам B элемента A только на первом уровне вложенности, то вместо пробела пишут символ &gt;:</p>
37 .container &gt; img { margin-bottom: 40px; }<p>Здесь мы задали изображениям внутри контейнера с классом .container значение нижних отступов 40 пикселей.</p>
37 .container &gt; img { margin-bottom: 40px; }<p>Здесь мы задали изображениям внутри контейнера с классом .container значение нижних отступов 40 пикселей.</p>
38 <p>Селектор A ~ B выбирает все элементы B, которые идут после A. Обратите внимание:<strong>"идут после"</strong>, а не вложены в него. Например, так мы задали цвет фона #f2f3f5 всем карточкам, которые идут после блока из класса .about_us:</p>
38 <p>Селектор A ~ B выбирает все элементы B, которые идут после A. Обратите внимание:<strong>"идут после"</strong>, а не вложены в него. Например, так мы задали цвет фона #f2f3f5 всем карточкам, которые идут после блока из класса .about_us:</p>
39 .about_us &gt; .card { background-color: #f2f3f5; }<p>Селектор A + B выбирает только первый элемент B, который следует за A:</p>
39 .about_us &gt; .card { background-color: #f2f3f5; }<p>Селектор A + B выбирает только первый элемент B, который следует за A:</p>
40 .about_us + .card { background-color: #f2f3f5; }<p>В этом примере цвет фона #f2f3f5 установится только для той карточки, которая идёт сразу после .about_us.</p>
40 .about_us + .card { background-color: #f2f3f5; }<p>В этом примере цвет фона #f2f3f5 установится только для той карточки, которая идёт сразу после .about_us.</p>
41 <p>Ещё один полезный инструмент - селекторы по атрибуту. Они позволяют выбрать элемент по имени атрибута, его значению или части значения. Кратко расскажем обо всех.</p>
41 <p>Ещё один полезный инструмент - селекторы по атрибуту. Они позволяют выбрать элемент по имени атрибута, его значению или части значения. Кратко расскажем обо всех.</p>
42 <p>Применяет стили к элементам, для которых задан этот атрибут:</p>
42 <p>Применяет стили к элементам, для которых задан этот атрибут:</p>
43 [title] { font-weight: bold; }<p>Работает по имени и значению атрибута:</p>
43 [title] { font-weight: bold; }<p>Работает по имени и значению атрибута:</p>
44 [title="what_is"] { font-weight: normal; }<p>Находит элементы с заданным атрибутом, значение которого начинается с <strong>value</strong>:</p>
44 [title="what_is"] { font-weight: normal; }<p>Находит элементы с заданным атрибутом, значение которого начинается с <strong>value</strong>:</p>
45 [class^="form"] { background-color: #7aacba; }<p>Ищет по названию атрибута и значению, которое равно или начинается с <strong>value</strong>:</p>
45 [class^="form"] { background-color: #7aacba; }<p>Ищет по названию атрибута и значению, которое равно или начинается с <strong>value</strong>:</p>
46 [class|="form"] { border: 5px outset black; }<p>Применяет CSS-стили к элементам, у которых значение заданного атрибута оканчивается на <strong>value</strong>:</p>
46 [class|="form"] { border: 5px outset black; }<p>Применяет CSS-стили к элементам, у которых значение заданного атрибута оканчивается на <strong>value</strong>:</p>
47 [class$="primary"] { font-weight: bold; }<p>Селектор по названию атрибута и значению, которое должно содержать<strong>value</strong>:</p>
47 [class$="primary"] { font-weight: bold; }<p>Селектор по названию атрибута и значению, которое должно содержать<strong>value</strong>:</p>
48 [class$="control"] { padding: 15px; }<p>Этот шаблон выбирает элементы с атрибутом<strong>attr,</strong>значение которого состоит из нескольких слов, разделённых пробелом, одно из которых -<strong>value</strong>:</p>
48 [class$="control"] { padding: 15px; }<p>Этот шаблон выбирает элементы с атрибутом<strong>attr,</strong>значение которого состоит из нескольких слов, разделённых пробелом, одно из которых -<strong>value</strong>:</p>
49 [class$="control"] { padding: 15px; }<p><strong>Псевдокласс</strong>выбирает элементы, находящиеся в определённом состоянии или положении в иерархии DOM.</p>
49 [class$="control"] { padding: 15px; }<p><strong>Псевдокласс</strong>выбирает элементы, находящиеся в определённом состоянии или положении в иерархии DOM.</p>
50 <p>Вот несколько примеров таких состояний:</p>
50 <p>Вот несколько примеров таких состояний:</p>
51 <ul><li>на кнопку наведён курсор мыши;</li>
51 <ul><li>на кнопку наведён курсор мыши;</li>
52 <li>пользователь перешёл или не перешёл по ссылке;</li>
52 <li>пользователь перешёл или не перешёл по ссылке;</li>
53 <li>курсор установлен на поле ввода.</li>
53 <li>курсор установлен на поле ввода.</li>
54 </ul><p>Например, так с помощью CSS можно увеличить размер ссылок, на которые пользователь навёл курсор:</p>
54 </ul><p>Например, так с помощью CSS можно увеличить размер ссылок, на которые пользователь навёл курсор:</p>
55 a:hover { font-size: 20px; }<p>Вот как это выглядит в браузере:</p>
55 a:hover { font-size: 20px; }<p>Вот как это выглядит в браузере:</p>
56 <em>Изображение: Skillbox Media</em><p>А в следующем примере мы добавляем нижний отступ последнему параграфу-потомку контейнера ("Параграф 3").</p>
56 <em>Изображение: Skillbox Media</em><p>А в следующем примере мы добавляем нижний отступ последнему параграфу-потомку контейнера ("Параграф 3").</p>
57 &lt;div class="container"&gt; &lt;p&gt;Параграф 1&lt;/p&gt; &lt;p&gt;Параграф 2&lt;/p&gt; &lt;p&gt;Параграф 3&lt;/p&gt; &lt;/div&gt; &lt;p&gt;Параграф 4&lt;/p&gt; &lt;p&gt;Параграф 5&lt;/p&gt;<p>CSS-код:</p>
57 &lt;div class="container"&gt; &lt;p&gt;Параграф 1&lt;/p&gt; &lt;p&gt;Параграф 2&lt;/p&gt; &lt;p&gt;Параграф 3&lt;/p&gt; &lt;/div&gt; &lt;p&gt;Параграф 4&lt;/p&gt; &lt;p&gt;Параграф 5&lt;/p&gt;<p>CSS-код:</p>
58 .container p:last-child { margin-bottom: 30px; }<p>Если зайти в <a>DevTools</a>, то можно увидеть, что под третьим элементом p появилось поле margin (подсвечивается бежевым цветом):</p>
58 .container p:last-child { margin-bottom: 30px; }<p>Если зайти в <a>DevTools</a>, то можно увидеть, что под третьим элементом p появилось поле margin (подсвечивается бежевым цветом):</p>
59 <em>Скриншот: Skillbox Media</em><p>Вот список основных псевдоклассов:</p>
59 <em>Скриншот: Skillbox Media</em><p>Вот список основных псевдоклассов:</p>
60 Название<strong>Состояние элемента</strong>:hoverНаведён курсор:focusЭлемент находится в фокусе (например, по нему кликнули мышью или его выбрали клавишей<strong>Tab</strong>):visitedСсылка, которая была посещена:activeАктивный элемент (в промежутке времени между нажатием и отпусканием кнопки мыши):checkedЭлементы radio, checkbox или option, которые были выбраны:first-childПервый потомок элемента:last-childПоследний потомок элемента:nth-child()Каждый n-й потомок - число n передаётся в качестве аргумента:last-nth-child()Последние n потомков - число n передаётся в качестве аргумента:read-writeЭлементы, доступные для редактирования<p>Посмотреть другие псевдоклассы можно<a>на сайте Mozilla</a>.</p>
60 Название<strong>Состояние элемента</strong>:hoverНаведён курсор:focusЭлемент находится в фокусе (например, по нему кликнули мышью или его выбрали клавишей<strong>Tab</strong>):visitedСсылка, которая была посещена:activeАктивный элемент (в промежутке времени между нажатием и отпусканием кнопки мыши):checkedЭлементы radio, checkbox или option, которые были выбраны:first-childПервый потомок элемента:last-childПоследний потомок элемента:nth-child()Каждый n-й потомок - число n передаётся в качестве аргумента:last-nth-child()Последние n потомков - число n передаётся в качестве аргумента:read-writeЭлементы, доступные для редактирования<p>Посмотреть другие псевдоклассы можно<a>на сайте Mozilla</a>.</p>
61 <p>Для одного и того же элемента веб-страницы можно прописать сколько угодно стилей. Если в разных местах CSS-файла какому-то его свойству заданы разные значения, то браузер должен выбрать одно из них.</p>
61 <p>Для одного и того же элемента веб-страницы можно прописать сколько угодно стилей. Если в разных местах CSS-файла какому-то его свойству заданы разные значения, то браузер должен выбрать одно из них.</p>
62 <p>Обычно подключается правило, которое определено последним, но так происходит не всегда. Дело в том, что одни селекторы обладают более высокой специфичностью, чем другие.</p>
62 <p>Обычно подключается правило, которое определено последним, но так происходит не всегда. Дело в том, что одни селекторы обладают более высокой специфичностью, чем другие.</p>
63 <p><strong>Специфичность</strong> - это показатель, по которому браузер определяет, какие стили применить к элементу. Её можно представить в виде четырёх чисел 0.0.0.0, где каждый разряд - это вес, определяемый специальными правилами.</p>
63 <p><strong>Специфичность</strong> - это показатель, по которому браузер определяет, какие стили применить к элементу. Её можно представить в виде четырёх чисел 0.0.0.0, где каждый разряд - это вес, определяемый специальными правилами.</p>
64 <p>Вот эти правила:</p>
64 <p>Вот эти правила:</p>
65 <ul><li>Наивысший приоритет - у стилей, прописанных в атрибуте style (1.0.0.0).</li>
65 <ul><li>Наивысший приоритет - у стилей, прописанных в атрибуте style (1.0.0.0).</li>
66 <li>На втором месте - селекторы по идентификатору (0.1.0.0).</li>
66 <li>На втором месте - селекторы по идентификатору (0.1.0.0).</li>
67 <li>Затем идут три равноправные группы: селекторы по классу, атрибуту и псевдоклассы (0.0.1.0).</li>
67 <li>Затем идут три равноправные группы: селекторы по классу, атрибуту и псевдоклассы (0.0.1.0).</li>
68 <li>На четвёртом месте - селекторы по тегу и псевдоэлементы (0.0.0.1).</li>
68 <li>На четвёртом месте - селекторы по тегу и псевдоэлементы (0.0.0.1).</li>
69 <li>Комбинаторы ~, &gt;, + и универсальный селектор * веса не добавляют.</li>
69 <li>Комбинаторы ~, &gt;, + и универсальный селектор * веса не добавляют.</li>
70 <li>Вес псевдоклассов :is(), :has() и :not() равен весу самого специфичного селектора внутри скобок.</li>
70 <li>Вес псевдоклассов :is(), :has() и :not() равен весу самого специфичного селектора внутри скобок.</li>
71 </ul><p>Чтобы определить самый "тяжёлый" селектор, браузер сначала взвешивает каждый, а затем сравнивает их поразрядно.</p>
71 </ul><p>Чтобы определить самый "тяжёлый" селектор, браузер сначала взвешивает каждый, а затем сравнивает их поразрядно.</p>
72 <p>Попробуем порассуждать как браузер. Допустим, на странице есть элемент, на который указывают два CSS-селектора:</p>
72 <p>Попробуем порассуждать как браузер. Допустим, на странице есть элемент, на который указывают два CSS-селектора:</p>
73 .container div ul {/**/} #our_team div.developers {/**/}<p>Рассчитаем их вес:</p>
73 .container div ul {/**/} #our_team div.developers {/**/}<p>Рассчитаем их вес:</p>
74 <ul><li>Класс .container добавляет 1 в третий разряд, а div и ul - по единице в четвёртый. Результат: 0.0.1.2.</li>
74 <ul><li>Класс .container добавляет 1 в третий разряд, а div и ul - по единице в четвёртый. Результат: 0.0.1.2.</li>
75 <li>Идентификатор our_team добавляет 1 во второй разряд, тег div - 1 в четвёртый разряд, а класс .developers - 1 в третий. Получаем 0.1.1.1.</li>
75 <li>Идентификатор our_team добавляет 1 во второй разряд, тег div - 1 в четвёртый разряд, а класс .developers - 1 в третий. Получаем 0.1.1.1.</li>
76 </ul><p>Браузер применит стили селектора #our_team div.developers, потому что он указывает на идентификатор (см. правило №2 в списке).</p>
76 </ul><p>Браузер применит стили селектора #our_team div.developers, потому что он указывает на идентификатор (см. правило №2 в списке).</p>
77 <p>А если бы исследуемый элемент обладал атрибутом style, то и считать ничего бы не пришлось. Ведь, как мы уже знаем, style обладает наивысшим приоритетом:</p>
77 <p>А если бы исследуемый элемент обладал атрибутом style, то и считать ничего бы не пришлось. Ведь, как мы уже знаем, style обладает наивысшим приоритетом:</p>
78 &lt;a style="color: red;" class="article media code" id="definition"&gt;Программист - это...&lt;/p&gt;<p>А теперь секретный приём. Вы можете перебить любое правило, если добавите к нему ключевое слово !important. В таком случае стили намертво приклеятся к элементу:</p>
78 &lt;a style="color: red;" class="article media code" id="definition"&gt;Программист - это...&lt;/p&gt;<p>А теперь секретный приём. Вы можете перебить любое правило, если добавите к нему ключевое слово !important. В таком случае стили намертво приклеятся к элементу:</p>
79 a { font-weight: bold !important; }<p>После этого изменить начертание текста в ссылках можно будет, только если использовать !important в более специфическом селекторе. Например, таком:</p>
79 a { font-weight: bold !important; }<p>После этого изменить начертание текста в ссылках можно будет, только если использовать !important в более специфическом селекторе. Например, таком:</p>
80 #stronger a { font-weight: normal !important; }<p>Опытные разработчики не рекомендуют использовать !important<strong>,</strong>потому что это усложняет поддержку кода и ломает каскад. Поэтому просто помните о его существовании во время дебаггинга: возможно, это словечко спряталось где-то в документе styles.css.</p>
80 #stronger a { font-weight: normal !important; }<p>Опытные разработчики не рекомендуют использовать !important<strong>,</strong>потому что это усложняет поддержку кода и ломает каскад. Поэтому просто помните о его существовании во время дебаггинга: возможно, это словечко спряталось где-то в документе styles.css.</p>
81 <p>CSS предоставляет большое количество селекторов для удобной стилизации веб-страниц. Запомните их и используйте всё разнообразие, чтобы писать понятный и легко поддерживаемый код. А закрепить знания можно в замечательной браузерной игре<a>CSS Dinner</a>.</p>
81 <p>CSS предоставляет большое количество селекторов для удобной стилизации веб-страниц. Запомните их и используйте всё разнообразие, чтобы писать понятный и легко поддерживаемый код. А закрепить знания можно в замечательной браузерной игре<a>CSS Dinner</a>.</p>
82 <a>Курс с трудоустройством: "Профессия Фронтенд-разработчик + ИИ" Узнать о курсе</a>
82 <a>Курс с трудоустройством: "Профессия Фронтенд-разработчик + ИИ" Узнать о курсе</a>