Что делает селектор * * CSS?

Недавно я встретил * * в CSS.

Ссылка на сайт - Ссылка на сайт.

Для одного использования * в таблице стилей CSS, Internet и Qaru залиты примерами, но я не уверен в использовании двух символов * * в CSS.

Я искал его, но не смог найти никакой соответствующей информации об этом, поскольку один * выбирает все элементы, но я не уверен, почему сайт использовал его дважды. Какая недостающая часть для этого и почему используется этот хак (если это взлом)?

Ответ 1

Как и в любое другое время, вы помещаете два селектора один за другим (например, li a), вы получаете комбинатор потомков. Таким образом, * * - это любой элемент, являющийся потомком любого другого элемента - другими словами, любой элемент, который не является корневым элементом всего документа.

Ответ 2

Просто небольшой пример:

Попробуйте добавить это на свой сайт:

* { outline: 2px dotted red; }
* * { outline: 2px dotted green; }
* * * { outline: 2px dotted orange; }
* * * * { outline: 2px dotted blue; }
* * * * * { outline: 1px solid red; }
* * * * * * { outline: 1px solid green; }
* * * * * * * { outline: 1px solid orange; }
* * * * * * * * { outline: 1px solid blue; }

Демо: http://jsfiddle.net/l2aelba/sFSad/


Пример 2:

Что делает селектор * * CSS?

Демо: http://jsfiddle.net/l2aelba/sFSad/34/

Ответ 3

* * Соответствует всем, кроме элемента верхнего уровня, например html.

Ответ 4

* означает применение заданных стилей ко всем элементам.

* * означает применить заданные стили ко всем дочерним элементам элемента. Пример:

body > * {
  margin: 0;
}

Это применяет стили полей для всех дочерних элементов тела. То же самое,

* * {
  margin: 0;
}

применяет дочерние элементы margin: 0 к *. Короче говоря, он применяет margin: 0 почти к каждому элементу.

Как правило, одного * достаточно. Нет необходимости в двух * *.

Ответ 5

Что выбирает все элементы, вложенные внутри другого элемента, тем же способом div a будет выбирать все <a> элементы, вложенные где-то внутри элемента <div>.