- How to select multiple classes in CSS|SASS example
- SASS/SCSS code to select multiple select classes in the same item
- Browser support
- Комбинированные селекторы
- Кратко
- Группировка: .element1 , . element2
- Пример
- Как пишется
- Как понять
- Объединение: .class1 . class2
- Пример
- Как пишется
- Как понять
- Потомки: .element1 . element2
- Пример
- Как пишется
- Как понять
- Непосредственно вложенные: .element1 > . element2
- Пример
- Как пишется
- Как понять
- Подсказки
- Смежные: .element1 + . element2
- Пример
- Как пишется
- Как понять
- Последующие: .element1 ~ . element2
- Пример
- Как пишется
- Как понять
- На практике
- Realetive советует
- Роман Баранников советует
How to select multiple classes in CSS|SASS example
It is a short tutorial about how to select multiple classes of HTML elements with CSS.
We can select use class selectors or id selectors, But sometimes, we want to force to use class selectors, example explains how to select multiple classes in CSS/HTML.
Let’s have a div class with multiple CSS class names.
The div tag has multiple class names separated by space as given in the below example.
div class="container left">This is the Left containerdiv> div class="container right content">This is Right containerdiv>
Suppose you want to update the color of this right div to red and bold, then we have to select the right div from DOM using a CSS selector.
CSS example to select three classes
This div is selected if the div contains and and >CSS selectors select with . , so multiple classes are added side by side without space
.container.right.content color: blue; font-weight: 700; >
CSS code to select two classes
.container.left color: blue; font-weight: 700; >
Let’s see an example with multiple selectors with class and id
To select div with id selector, We have to use # symbol
div id="first"> span class="block">first spanspan> span class="block second">second spanspan> div>
and To select the second span using the id
#first .block.second font-weight: 700; > #first .block font-size: 14px; >
SASS/SCSS code to select multiple select classes in the same item
In SCSS, parent selector & symbol is used. This & will be resolved side by side after compilation for CSS.
Sass code to multiple id and class selectors for the above HTML code
Browser support
This syntax supports the latest browsers including the IE7 version also.
Комбинированные селекторы
Селекторы бывают сложнее чем просто по классу, тегу или идентификатору. Перечисляем все доступные комбинированные селекторы.
Время чтения: меньше 5 мин
- Кратко
- Группировка: .element1, .element2
- Пример
- Как пишется
- Как понять
- Пример
- Как пишется
- Как понять
- Пример
- Как пишется
- Как понять
- Пример
- Как пишется
- Как понять
- Подсказки
- Пример
- Как пишется
- Как понять
- Пример
- Как пишется
- Как понять
- Realetive советует
- Роман Баранников советует
Обновлено 10 октября 2022
Кратко
Скопировать ссылку «Кратко» Скопировано
Иногда при написании стилей мы хотим обратиться к селектору более точно, чем просто по имени класса или тега. Для этого можно использовать различные комбинации.
Группировка: .element1 , . element2
Скопировать ссылку «Группировка: .element1, .element2» Скопировано
Пример
Скопировать ссылку «Пример» Скопировано
Если нескольким селекторам нужно задать одно и то же правило, то можно написать длинно:
h1 font-weight: bold;> h2 font-weight: bold;> h3 font-weight: bold;>
h1 font-weight: bold; > h2 font-weight: bold; > h3 font-weight: bold; >
А можно перечислить все селекторы через запятую и написать всего одно CSS-правило:
h1, h2, h3 font-weight: bold;>
h1, h2, h3 font-weight: bold; >
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Селекторы просто записываются в произвольном порядке через запятую:
.selector1,code,#id,[attr="value"] color: red;>
.selector1, code, #id, [attr="value"] color: red; >
Если вы перечисляете селекторы через запятую, то правила будут применяться к каждой из групп:
.heading span,.block,.wrapper color: red;>
.heading span, .block, .wrapper color: red; >
Как понять
Скопировать ссылку «Как понять» Скопировано
В примере свойство применится для трёх типов селекторов:
Объединение: .class1 . class2
Скопировать ссылку «Объединение: .class1.class2» Скопировано
Пример
Скопировать ссылку «Пример» Скопировано
.selector.selector_modificator color: red;>
.selector.selector_modificator color: red; >
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Этот приём применим только для классов и атрибутов, потому что только их может быть больше одного. Селекторы записываются слитно. Стили будут применены только к тому элементу, который содержит все перечисленные селекторы.
Как понять
Скопировать ссылку «Как понять» Скопировано
Такое «склеивание» объединяет селекторы в одно правило.
Потомки: .element1 . element2
Скопировать ссылку «Потомки: .element1 .element2» Скопировано
Пример
Скопировать ссылку «Пример» Скопировано
article h3 color: red;>
article h3 color: red; >
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Селекторы записываются последовательно через пробел.
Как понять
Скопировать ссылку «Как понять» Скопировано
Последовательность селекторов отражает вложенность — каждый следующий селектор должен обязательно находиться на каком-то уровне вложенности в предыдущий селектор.
Непосредственно вложенные: .element1 > . element2
Скопировать ссылку «Непосредственно вложенные: .element1 .element2» Скопировано
Пример
Скопировать ссылку «Пример» Скопировано
article > h3 color: red>
article > h3 color: red >
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Селекторы разделяются знаком > .
Как понять
Скопировать ссылку «Как понять» Скопировано
Последовательность селекторов отражает непосредственную вложенность — селектор справа от оператора должен быть прямым потомком селектора из левой части:
article > h3 color: red;>
article > h3 color: red; >
К h3 . article _ _ heading стили для article > h3 не применятся, т. к. прямой потомок — div . article _ _ header , а не :
Заголовок
article class="article"> div class="article__header"> h3 class="article__heading">Заголовокh3> div> article>
В этом примере стили к заголовку применятся, потому что является прямым потомком :
Заголовок
article class="article"> h3 class="article__heading">Заголовокh3> article>
И тут тоже всё в порядке — по-прежнему является прямым потомком , потому что располагается на ближайшем уровне вложенности, хоть и следует после div . article _ _ header :
…Заголовок
article class="article"> div class="article__header">…div> h3 class="article__heading">Заголовокh3> article>
Подсказки
Скопировать ссылку «Подсказки» Скопировано
💡 Такая комбинация удобна, чтобы выбрать элемент, основываясь на его точном расположении в структуре документа.
Смежные: .element1 + . element2
Скопировать ссылку «Смежные: .element1 + .element2» Скопировано
Пример
Скопировать ссылку «Пример» Скопировано
label + input color: red;>
label + input color: red; >
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Селекторы объединяются знаком + .
Как понять
Скопировать ссылку «Как понять» Скопировано
Элемент справа от + должен следовать в HTML сразу за элементом слева от + . Проще говоря, правый элемент должен быть соседом левого элемента, чтобы смежный селектор сработал.
Код из примера применится только к такому , который стоит сразу после :
label + input color: red;>
label + input color: red; >
К этому не применится, т. к. перед идёт :
…
label>label> p>…p> input>
При такой разметке стиль применится только к первому , но не ко второму:
label>Лейблlabel> input> input>
label>Лейблlabel> div> input> div>
Последующие: .element1 ~ . element2
Скопировать ссылку "Последующие: .element1 ~ .element2" Скопировано
Пример
Скопировать ссылку "Пример" Скопировано
.star:hover ~ .star color: red;>
.star:hover ~ .star color: red; >
Как пишется
Скопировать ссылку "Как пишется" Скопировано
Селекторы объединяются с помощью символа ~ (тильда).
Как понять
Скопировать ссылку "Как понять" Скопировано
Правило применится ко всем блокам, подходящим под правый селектор, при учёте, что они являются соседями блоков из селектора слева от ~ . При этом оба селектора должны иметь одного родителя и находиться на одном уровне вложенности. В HTML правый селектор должен идти после левого селектора.
На практике
Скопировать ссылку "На практике" Скопировано
Realetive советует
Скопировать ссылку "Realetive советует" Скопировано
🛠 Лучше записывать селекторы по одному на строчку — так их легче читать и редактировать:
.selector1,code,#id,[attr="value"] color: red;>
.selector1, code, #id, [attr="value"] color: red; >
🛠 Объединение увеличивает специфичность правила, поэтому это может быть удобно для переопределения свойств без !important :
Код ниже нельзя редактировать по каким-то причинам:
.class1 color: red;>
.class1 color: red; >
Увеличим специфичность, чтобы переопределить правило, описанное в нередактируемой части и потому имеющее больший вес:
.class1.class2 color: green;> .class1 color: red;>
.class1.class2 color: green; > .class1 color: red; >
В итоге текст в блоке, имеющем сразу и класс .class1 и класс .class2 , будет зелёного цвета.
🛠 Получается, что даже невинный пробел уже имеет значение при выборе селектора на любом уровне вложенности.
Независимо от уровня вложенности селектор article h3 «найдёт» с текстом «Очень вложенный заголовок» и любые другие , которые располагаются внутри :
Очень вложенный заголовок
Заголовок
article> div> div> div> div> div> div> div> div> div> h3>Очень вложенный заголовокh3> div> div> div> h3>Заголовокh3> div> div> div> div> div> div> article>
Роман Баранников советует
Скопировать ссылку "Роман Баранников советует" Скопировано
🛠 С помощью смежного комбинатора удобно выбирать группу одинаковых элементов по принципу «все, кроме первого» — например, чтобы задать отступ.
li + li margin-top: 1em;>
li + li margin-top: 1em; >
Классический пример — вёрстка «звёздного» рейтинга. Для начала опишем структуру:
div class="rating"> button>★button> button>★button> button>★button> button>★button> button>★button> div>
button border: none; background-color: transparent; font-size: 5em;> button:hover,button:focus,button:hover ~ button,button:focus ~ button color: #F498AD;>
button border: none; background-color: transparent; font-size: 5em; > button:hover, button:focus, button:hover ~ button, button:focus ~ button color: #F498AD; >
Но сейчас при наведении курсора будут выделяться все элементы после (то есть справа).
Чтобы это исправить, мы изменим порядок следования элементов с помощью CSS-свойства direction : rtl .
Добавим это свойство родителю звёздочек .rating :
.rating direction: rtl;> button border: none; background-color: transparent; font-size: 5em;> button:hover,button:focus,button:hover ~ button,button:focus ~ button color: #F498AD;>
.rating direction: rtl; > button border: none; background-color: transparent; font-size: 5em; > button:hover, button:focus, button:hover ~ button, button:focus ~ button color: #F498AD; >