Урок 2: Селекторы CSS и Специфичность — Кто Здесь Босс?
Обзор
Привет снова, мастер стиля! 🎩 В первом уроке ты одел свой HTML в приличную одежду, а теперь пора разобраться, кто из селекторов отвечает за порядок. В мире CSS селекторы — это как начальники на стройке: кто-то командует бригадой, кто-то просто наблюдает, а кто-то вообще приходит только на обед. И в результате один стиль хочет, чтобы параграфы были зелеными, а другой заставляет их стать фиолетовыми. Кто из них выиграет? Ну, тут всё как на российском рынке: кто громче кричит, тот и продавец.
В этом уроке мы выясним, почему некоторые стили всегда побеждают, а другие чувствуют себя как младшие программисты на первом рабочем дне. К концу урока ты точно будешь знать, какой селектор имеет высший приоритет. Готов? Тогда поехали!
Шаг 1: Знакомство с Селекторами — Кто Тут Главный?
Селекторы — это как те навязчивые соседи, которые всегда вмешиваются в твою жизнь и дают советы, как красить забор. Они решают, какие HTML-элементы нужно раскрасить и как. Вот несколько самых популярных:
-
Селекторы по Элементу (
p
,h1
,div
): Это как у тебя на огороде: все картошки должны быть посажены ровно. Всеp
будут зелёными — и точка. -
Селекторы по Классу (
.название-класса
): Немного избирательные, как охрана на входе в ночной клуб. Только элементы с этим классом могут пройти. -
Селекторы по ID (
#название-id
): Тут вообще отдельная каста — VIP. Только один элемент с этим ID получает привилегии, остальные могут только завидовать. -
Селекторы по Атрибуту (
[type="text"]
): Это как бабушка, проверяющая документы у каждого перед тем, как угостить пирожками.
Шаг 2: Пишем Селекторы Как Профи (Никаких “Почему Это Не Работает?!”)
Давай применим селекторы в деле! Открой свой styles.css
и напиши немного магии. Твоя страничка index.html
должна выглядеть примерно так:
index.html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Селекторы в Действии</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1 id="главный-заголовок">Селекторы и Специфичность</h1>
<p class="вступление">Добро пожаловать в мир селекторов!</p>
<p>Давайте посмотрим, кто тут на самом деле командует.</p>
<div class="контейнер">
<p class="выделенный">Меня нужно выделить.</p>
<p>Обычный параграф, просто отдыхаю.</p>
</div>
</body>
</html>
Теперь покажем styles.css
, кто тут главный:
styles.css
/* Селектор по Элементу */
p {
color: green; /* Все <p> станут зелёными, как в огороде после дождя. */
}
/* Селектор по Классу */
.выделенный {
background-color: yellow; /* Элементы с классом "выделенный" будут сиять, как жёлтые лампочки на Новогодней ёлке. */
}
/* Селектор по ID */
#главный-заголовок {
font-size: 36px; /* ВИП-обслуживание для главного заголовка. Делаем его большим и внушительным! */
}
/* Селектор по Атрибуту */
input[type="text"] {
border: 2px solid blue; /* Только <input> с типом "text" получают этот стиль. Остальные кнопки — извините. */
}
Сохрани свой styles.css
и обнови страницу в браузере. Всё должно выглядеть как разноцветный базар. Но что, если они начнут перетягивать одеяло?
Шаг 3: Специфичность — Кто Здесь Главный Босс?
Представь, что у тебя есть <p>
с классом и ID. Кто победит? Это как спор в семье, кто будет смотреть телевизор. Вот как CSS решает:
-
Inline-стили: Как директор школы — если он сказал, то остальные молчат. Пример:
<p style="color: red;">Я тут командую!</p>
-
Селекторы по ID: Как старший брат. Если он чего-то хочет, остальные только вздыхают.
- Пример:
#главный-заголовок
выигрывает у.выделенный
.
- Пример:
-
Селекторы по Классу: Как дядя Петя — уважаем, но всегда уступит старшему.
- Пример:
.выделенный
может перекрашивать текст, но если рядом ID, то придётся отойти в сторону.
- Пример:
-
Селекторы по Элементу: Самые младшие. Слушают всех и не спорят.
Когда Всё Идёт Криво (и Хочется Крикнуть на Компьютер)
Если ты когда-нибудь думал: “Почему мой CSS не работает?!”, скорее всего, проблема в специфичности. Попробуй усилить свой селектор:
- Добавь ещё один класс (
.контейнер .выделенный
), чтобы придать мощи. - Или используй
!important
… но только как последний аргумент (это как последний аргумент в споре — кулаком по столу).
Шаг 4: Запуск Проекта с Caddy (Время Показать Свой Шедевр!)
Час показать всему миру (ну, хотя бы локальной сети) своё творение! Используем Caddy, чтобы запустить проект:
-
Открой терминал и перейди в свою папку с проектом:
cd ~/Documents/my-css-project
-
Запусти Caddy, чтобы запустить сайт:
caddy file-server --listen :8080
-
Открой браузер и введи:
http://localhost:8080
Готово! Твой сайт теперь доступен. Можно продолжать играть с селекторами и наблюдать за их боями в реальном времени.
Заключение
Поздравляю, ты разобрался, кто здесь главный босс! Теперь ты знаешь, почему некоторые стили выглядят, как хотят, а другие прячутся за углом. Понимая, как работает специфичность, ты сможешь создавать более чёткие и предсказуемые стили.
В следующем уроке мы разберёмся с Flexbox и Grid — системами, которые сделают твой сайт настолько структурированным, что даже бухгалтер завидовать будет!
До встречи на следующем уроке, где всё станет… гибким! 😎