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

недавно я наткнулся * * на в CSS.

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

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

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

5 ответов


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


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

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

* { 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:

What does the * * CSS selector do?

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


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


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

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

body > * {
  margin: 0;
}

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

* * {
  margin: 0;
}

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

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


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