← Назад к вопросам

Зачем нужен селектор?

1.6 Junior🔥 142 комментариев
#HTML и CSS

Комментарии (2)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

CSS селекторы: назначение и применение

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

Основное назначение

Селекторы позволяют:

  • Выбирать элементы по различным критериям (тег, класс, ID, атрибут)
  • Применять стили только к нужным элементам
  • Переиспользовать стили через классы и комбинаторы
  • Управлять специфичностью для правильного каскада стилей
  • Создавать гибкие и масштабируемые системы стилей

Основные типы селекторов

1. Селектор по тегу

Выбирает все элементы данного тега:

p {
  color: #333;
  font-size: 16px;
}

Всем параграфам применится заданный стиль.

2. Селектор по классу (класс-селектор)

Выбирает элементы с определённым классом (самый часто используемый):

.button {
  background-color: #007bff;
  color: white;
  padding: 10px 20px;
  border-radius: 4px;
}
<button class="button">Нажми меня</button>
<a href="/" class="button">Ссылка</a>

3. Селектор по ID

Выбирает элемент с уникальным ID (используется реже):

#header {
  background-color: #f8f9fa;
  padding: 20px;
}
<div id="header">Заголовок</div>

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

Выбирает элементы по значению атрибута:

/* Точное совпадение */
input[type="text"] {
  border: 1px solid #ccc;
}

/* Содержит подстроку */
a[href*="example"] {
  color: blue;
}

/* Начинается с */
img[src^="/images"] {
  max-width: 100%;
}

5. Комбинаторы

Объединяют несколько селекторов:

/* Потомок (любой уровень) */
.card p {
  margin: 0;
}

/* Прямой потомок (дочерний элемент) */
.card > p {
  color: #666;
}

/* Соседний элемент (следующий) */
h2 + p {
  margin-top: 0;
}

/* Группировка селекторов */
h1, h2, h3 {
  font-family: 'Segoe UI', sans-serif;
}

Псевдо-классы

Селекторы, которые выбирают элементы в определённых состояниях:

/* При наведении мыши */
a:hover {
  text-decoration: underline;
}

/* Активный (нажата) ссылка */
a:active {
  color: red;
}

/* Посещённая ссылка */
a:visited {
  color: purple;
}

/* Первый элемент в группе */
li:first-child {
  font-weight: bold;
}

/* Элемент по порядку */
li:nth-child(2n) {
  background-color: #f5f5f5;
}

/* Элемент с фокусом (для форм) */
input:focus {
  outline: 2px solid #007bff;
}

/* Активное состояние элемента */
.tab.active {
  border-bottom: 2px solid #007bff;
}

Псевдо-элементы

Селекторы, создающие виртуальные элементы:

/* Первая строка текста */
p::first-line {
  font-weight: bold;
}

/* Первая буква */
p::first-letter {
  font-size: 2em;
}

/* Перед элементом */
.icon::before {
  content: "→";
}

/* После элемента */
.required::after {
  content: " *";
  color: red;
}

Практические примеры в реальных проектах

1. Стилизация кнопок с разными вариантами

/* Базовая кнопка */
.btn {
  padding: 10px 16px;
  border: none;
  border-radius: 4px;
  font-size: 14px;
  cursor: pointer;
}

/* Вариант кнопки */
.btn.primary {
  background-color: #007bff;
  color: white;
}

.btn.secondary {
  background-color: #6c757d;
  color: white;
}

/* Состояния */
.btn:hover {
  opacity: 0.9;
}

.btn:disabled {
  cursor: not-allowed;
  opacity: 0.5;
}

2. Таблица со строками-зебра

table tr:nth-child(odd) {
  background-color: white;
}

table tr:nth-child(even) {
  background-color: #f9f9f9;
}

table tr:hover {
  background-color: #f0f0f0;
}

3. Адаптивная сетка с Tailwind-подобным подходом

/* На мобильных: 1 колонка */
.grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}

/* На планшетах: 2 колонки */
@media (min-width: 768px) {
  .grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* На рабочих столах: 3 колонки */
@media (min-width: 1024px) {
  .grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

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

Важно понимать, что селекторы имеют разный приоритет:

/* Низкая специфичность (10 очков) */
p { color: blue; }

/* Средняя (100 очков) */
.text { color: green; }

/* Высокая (1000 очков) */
#content { color: red; }

/* Очень высокая (inline styles) */
<p style="color: yellow;">Этот текст будет жёлтым</p>

Основной принцип: более специфичный селектор переопределит менее специфичный, даже если менее специфичный идёт позже в файле.

Селекторы в JavaScript

Те же селекторы используются и в JavaScript для поиска элементов:

// По селектору CSS
const element = document.querySelector('.button');
const elements = document.querySelectorAll('p.text');

// По ID
const header = document.getElementById('header');

// По классу
const buttons = document.getElementsByClassName('button');

Вывод

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

Зачем нужен селектор? | PrepBro