#18. Селекторы CSS: по тегу, по class и по id
Primary tabs
Forums:
В уроке #17 наши правила выглядели так: h1 { ... }, p { ... } — и действовали на все заголовки и все абзацы страницы. А если оформить нужно не все абзацы, а один конкретный? Или небольшую группу? За выбор «кого красить» отвечает селектор — часть правила перед фигурными скобками. Сегодня изучим три главных селектора: по тегу, по классу и по id. Атрибуты class и id мы завели заранее в уроке #14 — теперь они наконец пригодятся.
Селектор по тегу
Знакомый по прошлому уроку вариант: селектор — просто имя тега. Правило применяется ко всем таким тегам страницы:
a {
color: green;
}
Теперь все ссылки на странице зелёные — без единой правки в HTML. Ограничение видно сразу: селектор по тегу работает по принципу «всё или ничего». Разделить абзацы нельзя: либо все p, либо никак.
Селектор по классу
Класс — «ярлык», который мы сами вешаем на элементы атрибутом class. Ярлык один, а элементов с ним — сколько угодно. В CSS класс записывается точкой и именем:
<p class="lead">Вводный абзац статьи.</p> <p>Обычный абзац.</p> <p class="lead">И ещё один вводный абзац.</p>
.lead {
color: orange;
font-size: 22px;
}
Оформятся первый и третий абзацы — те, что помечены классом; второй останется прежним. HTML при этом не трогаем: весь выбор, кому применять стили, живёт в css.
У одного элемента может быть несколько классов — они перечисляются через пробел: <p class="lead big"> означает, что элементу назначены сразу два класса, lead и big, и правила обоих применяются к нему вместе. Имена классам вы придумываете сами — коротко и по смыслу: lead, menu, article-text.
Селектор по id
У идентификатора работа та же, но правило другое: id — «имя собственное» и должен встречаться на странице один раз (два одинаковых id — ошибка, её ловит валидатор из урока #15). В CSS идентификатор записывается решёткой:
<h1 id="main-title">Мой блог</h1>
#main-title {
color: red;
font-size: 60px;
}
С id мы уже встречались в уроке #7: якоря вида <a href="#part2"> ищут элемент именно по идентификатору. Одна и та же метка служит и ссылкам, и стилям.
Класс или id?
Сведём три селектора вместе:
| Селектор | В HTML | В CSS | Сколько элементов найдёт |
|---|---|---|---|
| по тегу | <p> |
p { } |
все теги этого вида |
| по классу | <p class="lead"> |
.lead { } |
все элементы класса |
| по id | <p id="first"> |
#first { } |
ровно один |
Практическое правило: класс — для групп элементов, id — для единственного. В реальной вёрстке почти всё оформляют классами — их можно свободно переиспользовать, — а id чаще берегут для якорей и уникальных элементов вроде шапки страницы.
Частые ошибки
- забыть точку: правило
lead { ... }— это селектор по тегу<lead>, которого не существует; класс пишется как.lead; - забыть решётку у идентификатора:
main-titleвместо#main-title; - регистр важен:
.Leadи.lead— разные классы; привычка писать всё маленькими буквами избавит от трудновидимых ошибок; - два одинаковых
idна странице — валидатор из урока #15 укажет на ошибку.
Практика
Продолжите страницу из практики урока #17 — ту, где стили уже живут в styles.css. Повесьте на два абзаца класс lead и опишите его: цвет и размер на ваш выбор. Заголовку дайте id="main-title" и оформите через #main-title. Затем проверьте себя «от обратного»: уберите точку у селектора класса и убедитесь, что оформление молча пропало (CSS не ругается на незнакомые правила — вспомните опечатку из урока #16); добавьте второй элемент с тем же id и прогоните страницу валидатором.
Селекторы по тегу, классу и id закрывают большинство повседневных задач вёрстки. Мы уже красили текст словами red, gray, orange — но английских слов-цветов мало, а в реальных дизайн-макетах цвета приходят записями вида #ff6600 и rgb(255, 0, 0). Что они значат и как красить не только текст, но и фон, — тема следующего урока.
- Log in to post comments
- 86 reads