Co robi selektor * * CSS?


97

Ostatnio natknąłem się * *na CSS .

Odniesienie do witryny - łącze do witryny .

W przypadku pojedynczego *użycia w arkuszu stylów CSS Internet i Stack Overflow są zalewane przykładami, ale nie jestem pewien, czy użyć dwóch * *symboli w CSS.

Przeszukałem go, ale nie mogłem znaleźć żadnych istotnych informacji na ten temat, ponieważ jeden *wybiera wszystkie elementy, ale nie jestem pewien, dlaczego strona użyła go dwukrotnie. Jaka jest brakująca część i dlaczego jest używany ten hack (jeśli jest to hack)?

Odpowiedzi:


138

Tak jak zawsze, gdy umieszczasz na przykład dwa selektory jeden po drugim (na przykład li a), otrzymasz kombinator potomków. Tak samo jak * *każdy element będący potomkiem innego elementu - innymi słowy, każdy element, który nie jest elementem głównym całego dokumentu.


dzięki za odpowiedź ... to jest to, o czym myślałem, ale nie jestem pewien, więc pomyślałem, że zapytam o to społeczność ... wkrótce ją przyjmie +1
zamiana

1
jeszcze tylko jedno pytanie - czy naprawdę warto używać * *? tak jakby rozumiem koncepcję, ale nie
rozumiem

2
@swapnesh wygląda na włamanie do przeglądarki. Jest * { font-size: XXX }zasada i * * { font-size: YYY }zasada. Jedna z nich dotyczy większości przeglądarek, a druga przeglądarek z określonym błędem, chociaż nie mam cierpliwości, aby dowiedzieć się szczegółów. Jest podobny do * htmlhacka, który był powszechnie używany do wykrywania starego IE.
hobbs

dzięki za dodanie ostatniego szczegółowego bloku pod komentarzami .. jest prawie idealny .. nie ma potrzeby robić w tym celu więcej burzy mózgów :)
dziękuję

10
Zauważ, że w sposób * html, * * będzie pasował do elementu html w IE6.
Alohci

80

Mały, duży przykład:

Spróbuj dodać to na swojej stronie:

* { 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; }

Demo: http://jsfiddle.net/l2aelba/sFSad/


Przykład 2:

Co robi selektor * * CSS?

Demo: http://jsfiddle.net/l2aelba/sFSad/34/


7
To nie jest do końca odpowiedź, ale cóż za piękna wizualizacja!
aboy021

1
@ l2aelba naprawdę niezłe wyjaśnienie :) +1
swapnesh

33

* *Dopasowuje wszystko oprócz elementu najwyższego poziomu, np html..


Dzięki Joe, przetestowałem to tutaj, a także zgodnie z komentarzami powyżej: * *selektor jest odpowiednikiem html *dla wszystkich przeglądarek oprócz starego dobrego IE6 :-)
Stano

@Stano * *jest odpowiednikiem html *... dla pliku HTML. Ale CSS może być używany do stylizowania innych rodzajów dokumentów (w szczególności SVG).
Sylvain Leroux

11

* oznacza zastosowanie danego stylu do wszystkich elementów.

* *oznacza zastosowanie danego stylu do wszystkich elementów potomnych elementu. Przykład:

body > * {
  margin: 0;
}

Powoduje to zastosowanie stylów marginesów do wszystkich elementów potomnych body. Ta sama droga,

* * {
  margin: 0;
}

odnosi margin: 0się do *„s elementów podrzędnych. Krótko mówiąc, dotyczy margin: 0to prawie każdego elementu.

Generalnie *wystarczy. Nie potrzeba dwóch * *.


2
dzięki za wyjaśnienie +1 .. chociaż nawet ja nie jestem pewien tego, o czym wspomniałeś w ostatnim wierszu "Ogólnie * wystarczy. Nie ma potrzeby * *. Chyba".
zamiana

3
* *Stosuje style do potomnych elementów, a nie elementów podrzędnych. Elementy potomne byłyby takie >jak w twoim przykładzie, a nie przestrzeń. Potomek i dziecko to nie to samo.
BoltClock

7

To powoduje wybranie wszystkich elementów zagnieżdżonych w innym elemencie w taki sam sposób div a, jak zaznaczenie wszystkich <a>elementów zagnieżdżonych gdzieś wewnątrz <div>elementu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.