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>В примере выше селектор указывает на тег <a> (гиперссылка). Так мы говорим браузеру отключить подчёркивание у<strong>всех ссылок</strong>на странице, устанавливая для свойства text-decoration значение none.</p>
16
a { text-decoration: none; }<p>В примере выше селектор указывает на тег <a> (гиперссылка). Так мы говорим браузеру отключить подчёркивание у<strong>всех ссылок</strong>на странице, устанавливая для свойства text-decoration значение none.</p>
17
<p>Подключим CSS-стили к следующему HTML-файлу:</p>
17
<p>Подключим CSS-стили к следующему HTML-файлу:</p>
18
<p>Содержание статьи:</p> <ul> <li><a href="#">Emmet на практике: пишем HTML</a></li> <li><a href="#">Создаём шапку документа</a></li> <li><a href="#">Подключаем стили и скрипты</a></li> <li><a href="#">Добавляем ссылки</a></li> <li><a href="#">Вводим теги</a></li> </ul><p>Вот как она выглядит в браузере:</p>
18
<p>Содержание статьи:</p> <ul> <li><a href="#">Emmet на практике: пишем HTML</a></li> <li><a href="#">Создаём шапку документа</a></li> <li><a href="#">Подключаем стили и скрипты</a></li> <li><a href="#">Добавляем ссылки</a></li> <li><a href="#">Вводим теги</a></li> </ul><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 применяет стили ко всем элементам с одинаковым тегом. Например, для всех <div>, <h2>, <p> и так далее.</p>
25
* { margin: 0; box-sizing: border-box; }<p>Этот селектор CSS применяет стили ко всем элементам с одинаковым тегом. Например, для всех <div>, <h2>, <p> и так далее.</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
<p id="intro">Сегодня мы расскажем вам об Emmet.</p> <p id="article_content">В этой статье вы узнаете:</p><p>CSS-код:</p>
28
<p id="intro">Сегодня мы расскажем вам об Emmet.</p> <p id="article_content">В этой статье вы узнаете:</p><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
<p class="plain_text article">Сегодня мы расскажем вам про Emmet.</p><p>Абзац входит в классы plain_text и article. Значит, к нему применяются стили обоих классов:</p>
31
<p class="plain_text article">Сегодня мы расскажем вам про Emmet.</p><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><p>Есть группа селекторов, которые позволяют выбрать элемент по его отношению к другим элементами (родитель - потомок) и по расположению в DOM (Document Object Model).</p>
33
.plain_text, p, h1, figure, div { margin-top: 0; margin-left: 0; }re><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 только на первом уровне вложенности, то вместо пробела пишут символ >:</p>
36
<p>Если нужно применить CSS-стили к потомкам B элемента A только на первом уровне вложенности, то вместо пробела пишут символ >:</p>
37
.container > img { margin-bottom: 40px; }<p>Здесь мы задали изображениям внутри контейнера с классом .container значение нижних отступов 40 пикселей.</p>
37
.container > 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 > .card { background-color: #f2f3f5; }<p>Селектор A + B выбирает только первый элемент B, который следует за A:</p>
39
.about_us > .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
<div class="container"> <p>Параграф 1</p> <p>Параграф 2</p> <p>Параграф 3</p> </div> <p>Параграф 4</p> <p>Параграф 5</p><p>CSS-код:</p>
57
<div class="container"> <p>Параграф 1</p> <p>Параграф 2</p> <p>Параграф 3</p> </div> <p>Параграф 4</p> <p>Параграф 5</p><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>Комбинаторы ~, >, + и универсальный селектор * веса не добавляют.</li>
69
<li>Комбинаторы ~, >, + и универсальный селектор * веса не добавляют.</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
<a style="color: red;" class="article media code" id="definition">Программист - это...</p><p>А теперь секретный приём. Вы можете перебить любое правило, если добавите к нему ключевое слово !important. В таком случае стили намертво приклеятся к элементу:</p>
78
<a style="color: red;" class="article media code" id="definition">Программист - это...</p><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>