Skip to content

Commit

Permalink
[ru] update Web/CSS/Selector_list translation (#21382)
Browse files Browse the repository at this point in the history
* [ru] update translation for Web/CSS/Selector_list

---------

Co-authored-by: Artem Shibakov <[email protected]>
  • Loading branch information
User0k and saionaro authored Jun 12, 2024
1 parent e450561 commit 2cff260
Showing 1 changed file with 66 additions and 22 deletions.
88 changes: 66 additions & 22 deletions files/ru/web/css/selector_list/index.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,41 @@
---
title: Список селекторов
slug: Web/CSS/Selector_list
l10n:
sourceCommit: be7a098e6af7b820c06a2d5169a9221ee2065e82
---

{{CSSRef}}

CSS **список селекторов** (`,`) выбирает все соответствующие ноды.
**Список селекторов** CSS (`,`) выбирает все соответствующие ноды. Он состоит из набора селекторов разделённых запятыми.

## Описание

Когда селекторы используют одинаковые CSS-правила, они могут быть сгруппированы в разделённый запятыми список. Списки селекторов также могут передаваться в качестве параметра в некоторые функциональные CSS-псевдоклассы. Можно использовать пробельный символ перед и/или после запятой.

Следующие три записи эквивалентны:

```css
span {
border: red 2px solid;
}
div {
border: red 2px solid;
}
```

```css
/* Выбирает все соответствующие элементы */
span,
div {
border: red 2px solid;
}
```

Для уменьшения размеры таблицы стилей, можно использовать разделяемый запятой список селекторов.
```css
:is(span, div) {
border: red 2px solid;
}
```

## Синтаксис

Expand All @@ -25,42 +45,45 @@ element, element, element { свойства стиля }

## Примеры

### Группирование на одной линии
Группировка селекторов в списки при применении одинаковых стилей к разным элементам позволяет одновременно как улучшить консистентность, так и уменьшить размер таблицы стилей.

Группирование селекторов списком, разделённым запятой, на одной строк.
### Группирование на одной строке

```css
h1,
h2,
h3,
h4,
h5,
h6 {
Группирование селекторов списком, разделённым запятыми, на одной строке.

```css-nolint
h1, h2, h3, h4, h5, h6 {
font-family: helvetica;
}
```

### Мультистрочное группирование
### Многострочное группирование

Группирование селекторов списком, разделённым запятой, на нескольких строках.
Группирование селекторов списком, разделённым запятыми, на нескольких строках.

```css
#main,
.content,
article {
h1 + p {
font-size: 1.1em;
}
```

### Невалидные списки селекторов
### Валидные и невалидные списки селекторов

Невалидный селектор ничему не соответствует. Когда список селекторов содержит хотя бы один невалидный селектор, весь блок стилей будет проигнорирован. Исключениями из этого правила являются псевдоклассы {{CSSxRef(":is", ":is()")}} и {{CSSxRef(":where", ":where()")}} принимающие [прощающий список селекторов](#прощающий_список_селекторов).

### Невалидный список селекторов

Недостатком использования списков селекторов является то, что они не являются эквивалентными:
Недостатком использования списка селекторов является то, что один неподдерживаемый селектор в списке селекторов делает недействительным всё правило.

Рассмотрим два следующих набора CSS-правил:

```css
h1 {
font-family: sans-serif;
}
h2:maybe-unsupported {
h2:invalid-pseudo {
font-family: sans-serif;
}
h3 {
Expand All @@ -70,15 +93,19 @@ h3 {

```css
h1,
h2:maybe-unsupported,
h2:invalid-pseudo,
h3 {
font-family: sans-serif;
}
```

Это происходит потому, что один неподдерживаемый селектор в списке селекторов делает недействительным все правило.
Они не эквивалентны. В первом наборе правил стили будут применены к элементам `h1` и `h3`, но правило`h2:invalid-pseudo` будет проигнорировано. Во втором наборе все правила будут проигнорированы, потому что один селектор в списке невалиден. Из-за этого ни один стиль не будет применён к элементам `h1` и `h3`, так как если любой селектор в списке селекторов невалиден, весь блок стилей будет проигнорирован.

### Прощающий список селекторов

Способом исправить проблему [невалидного списка селекторов](#невалидный_список_селекторов) является использование псевдоклассов {{CSSxRef(":is", ":is()")}} и {{CSSxRef(":where", ":where()")}}, которые принимают прощающий список селекторов. Каждый селектор в прощающем списке анализируется индивидуально. Поэтому любые невалидные селекторы в списке игнорируются и используются оставшиеся валидные.

Есть способ исправить это - нужно использовать селектор {{CSSxRef(":is", ":is()")}}, который просто игнорирует недопустимые селекторы в своих аргумента, но за счёт этого, все селекторы имеют одинаковую спецификацию, так как {{CSSxRef(":is", ":is()")}} вычисляет спецификацию.
Продолжая предыдущий пример, следующие два набора CSS-правил теперь эквивалентны:

```css
h1 {
Expand All @@ -98,6 +125,20 @@ h3 {
}
```

Разница между `:is()` и `:where()` в том, что специфичность `:is()` равна его наиболее специфичному аргументу, тогда как селектор `:where()` и прощающий список селекторов в качестве его параметра не добавляют какой-либо специфичности.

### Список относительных селекторов

Таким списком является список [относительных селекторов](/ru/docs/Web/CSS/CSS_selectors/Selector_structure#относительный_селектор) разделённых запятыми и начинающихся с явного или предполагаемого комбинатора.

```css
h2:has(+ p, + ul.red) {
font-style: italic;
}
```

В примере выше курсив будет применён к любому заголовку `h2` за которым сразу же следует `<p>` или `<ul class="red">`. Обратите внимание на то, что псевдоэлементы и селектор `:has()` не валидны внутри списка относительных селекторов [`:has()`](/ru/docs/Web/CSS/:has).

## Спецификации

{{Specifications}}
Expand All @@ -108,4 +149,7 @@ h3 {

## Смотрите также

- The {{CSSxRef(":is", ":is()")}} {{Experimental_Inline}} and {{CSSxRef(":where", ":where()")}} {{Experimental_Inline}} pseudo-classes, which don't have the legacy mistake that is selector list invalidation.
- Псевдоклассы [`:is()`](/ru/docs/Web/CSS/:is) и [`:where()`](/ru/docs/Web/CSS/:where) принимающие прощающий список селекторов.
- Псевдокласс [`:not()`](/ru/docs/Web/CSS/:not) принимающий список обычных селекторов.
- Псевдокласс [`:has()`](/ru/docs/Web/CSS/:has) принимающий список относительных селекторов.
- [CSS-селекторы](/ru/docs/Web/CSS/CSS_selectors)

0 comments on commit 2cff260

Please sign in to comment.