Перейти до основного вмісту

Селектори

За допомогою різних селекторів можна вибрати один або групу елементів. Селекторів доволі багато, тому розглянемо основні, які можуть застосовуватися щодня.

Селектори

Селектор елемента (тегу)​

Описує, до якого типу елементів буде застосоване CSS-правило. Селектор елемента недостатньо специфічний для того, щоб стилізувати окремі елементи, тому найчастіше застосовується для оформлення всіх тегів одного типу на сторінці. Наприклад, якщо у всіх посилань в документі потрібно прибрати підкреслення.

/* Застосується до всіх абзаців на сторінці */
p {
font-size: 24px;
}

/* Застосується до всіх посилань на сторінці */
a {
text-decoration: none;
}

Селектор класу​

Основний селектор в сучасній розробці. Використовується разом із глобальним атрибутом class. Ім'я класу задається тільки англійською мовою, і це обов'язково іменник, що описує цей елемент. Для поповнення словникового запасу використовуйте довідник, словник термінів і скорочення.

<h1 class="title">Привіт, я Mango.</h1>
<p class="text">
Ласкаво просимо на мою особисту сторінку. Тут можна подивитися
<a class="link" href="">проекти</a>.
</p>

В CSS використовується селектор класу, щоб задати стилі для одного і більше елементів з однаковим значенням атрибута class (ім'ям класу). У селекторі, перед ім'ям класу ставиться крапка ..

/* Застосується до всіх тегів з класом title */
.title {
font-weight: 500;
}

/* Застосується до всіх тегів з класом text */
.text {
color: brown;
font-size: 18px;
}

/* Застосується до всіх тегів з класом link */
.link {
text-decoration: none;
}
Увага

В імені класу використовуються тільки маленькі літери і тире. Наприклад, list, list-item, logo-image тощо. Підкреслення list_item, великі літери ListItem або цифри listitem27 вважаються поганим тоном.

Композиція класів​

В елемента може бути кілька класів, тоді вони записуються через пробіл.

<element class="value1 value2 value3"></element>
Композиція селекторів класу

Це можна застосовувати для комбінування і повторного використання стилів. Створимо розмітку і стилі для компонента повідомлень.

<p class="alert success">Поповнення рахунку виконано</p>
<p class="alert warning">Увага, будуть змінені тарифи</p>
<p class="alert error">Помилка проведення транзакції</p>

У стилях описуємо кілька правил: загальних для всіх повідомлень і специфічних для кожного типу.

/* Загальні стилі для всіх типів повідомлень */
.alert {
font-size: 24px;
font-weight: 500;
}

/* Специфічні стилі для кожного типу */
.success {
color: green;
}

.warning {
color: orange;
}

.error {
color: red;
}

Ось робочий приклад.

Селектор ідентифікатора​

Як і з класом, тегам можна задавати глобальний атрибут id. Відмінність у тому, що значення id повинно бути унікальним на сторінці, тобто не може бути двох елементів з однаковими значеннями ідентифікатора.

<h1 id="title">Заголовок сторінки</h1>

В CSS-селекторі перед ім'ям ідентифікатора ставиться символ решітки #.

#title {
font-weight: 500;
color: orange;
}
Корисно

Не використовуйте ідентифікатори для оформлення. Правило унікальності значення робить повторне використання стилів неможливим. Ідентифікатори призначені для «якорів».

Селектор нащадка​

Селектор нащадка або контекстний селектор застосовує стилі до дітей і нащадків елемента за будь-якої глибини вкладеності.

<a href="">Читайте наш блог!</a>

<ul class="social-links">
<li>
<a href="">Twitter</a>
</li>
<li>
<a href="">Instagram</a>
</li>
<li>
<a href="">Facebook</a>
</li>
</ul>

Наприклад, замість того, щоб задавати стиль усім посиланням, потрібно змінити стилі тільки тих, які знаходяться всередині списку з класом social-links.

/* ❌ Застосується до всіх посилань у документі */
a {
color: blue;
text-decoration: none;
}

/* ✅ Застосується тільки до посилань, які лежать всередині тегу з класом social-links */
.social-links a {
color: blue;
text-decoration: none;
}

Селектор дитини​

Ще один поширений селектор, який дозволяє вибрати тільки безпосередню дитину всередині батьківського елементу. Використовуємо розмітку для багаторівневого меню магазину, в якому необхідно стилізувати теги <li> у списку з класом menu, але не submenu.

<ul class="menu">
<li>
Комп'ютери та комплектуючі
<ul class="submenu">
<li>Процесори</li>
<li>Монітори</li>
<li>Відеокарти</li>
</ul>
</li>
<li>
Побутова техніка
<ul class="submenu">
<li>Холодильники</li>
<li>Телевізори</li>
<li>Пральні машини</li>
</ul>
</li>
<li>
Товари для дому
<ul class="submenu">
<li>Крісла</li>
<li>Матраци</li>
<li>Електрокаміни</li>
</ul>
</li>
</ul>

Якщо використовувати селектор нащадка (контекстний), то CSS-правило застосується до всіх тегів <li>, і червона рамка буде у кожного.

/* ❌ Не вирішує завдання */
.menu li {
border: 1px solid tomato;
}

Селектор дитини допомагає вирішити цю проблему, вибравши тільки ті <li>, які є дітьми (перша вкладеність) списку ul.menu.

/* ✅ Те, що потрібно */
.menu > li {
border: 1px solid tomato;
}

Селектор атрибута​

Дозволяє застосувати стилі до елементів з певним атрибутом або його значенням.

елемент[атрибут]​

Застосує стилі до всіх елементів, у яких є вказаний атрибут.

<a href="https://htmlreference.io" title="Довідник тегів"> htmlreference.io </a>

<a href="https://cssreference.io" title="Довідник стилів"> cssreference.io </a>

<a href="https://www.youtube.com">YouTube </a>

Вибере всі посилання з атрибутом title.

a[title] {
color: teal;
}

елемент[атрибут="значення"]​

Застосує стилі до всіх елементів у яких є атрибут з вказаним значенням.

<a href="https://htmlreference.io" title="Довідник тегів"> htmlreference.io </a>

<a href="https://cssreference.io" title="Довідник стилів"> cssreference.io </a>

<a href="https://www.youtube.com">YouTube</a>

Вибере всі посилання з атрибутом href і відповідним значенням.

/* Незвичне форматування фігурних дужок - це нормально */
a[href="https://htmlreference.io"]
{
color: teal;
}

a[href="https://cssreference.io"]
{
color: orange;
}

a[href="https://www.youtube.com"]
{
color: tomato;
}