Apa yang dilakukan pemilih * * CSS?

97

Baru-baru ini saya datang di * *dalam CSS .

Referensi situs - Tautan Situs .

Untuk *penggunaan tunggal dalam style sheet CSS, Internet dan Stack Overflow dibanjiri dengan contoh, tapi saya tidak yakin tentang menggunakan dua * *simbol di CSS.

Saya mencarinya di Google, tetapi tidak dapat menemukan informasi yang relevan tentang hal ini, karena satu *elemen memilih semua, tetapi saya tidak yakin mengapa situs tersebut menggunakannya dua kali. Apa bagian yang hilang dari ini, dan mengapa peretasan ini digunakan (jika itu adalah peretasan)?

swapnesh.dll
sumber

Jawaban:

138

Sama seperti waktu lain Anda meletakkan dua penyeleksi satu demi satu (misalnya li a), Anda mendapatkan kombinator turunan. Begitu * *juga elemen apa pun yang merupakan turunan dari elemen lain - dengan kata lain, elemen apa pun yang bukan elemen root dari keseluruhan dokumen.

hobbs
sumber
terima kasih atas balasannya..ini adalah apa yang saya pikirkan tetapi tidak yakin jadi berpikir untuk bertanya dari komunitas..akan menerimanya segera +1
swapnesh
1
hanya satu hal lagi untuk ditanyakan - apakah benar-benar relevan untuk menggunakan * *? seolah
olah
2
@swapnesh sepertinya peretasan browser. Ada * { font-size: XXX }aturan dan * * { font-size: YYY }aturan. Salah satunya berlaku untuk sebagian besar browser, dan yang lainnya berlaku untuk browser dengan bug tertentu, meskipun saya tidak memiliki kesabaran untuk mengetahui detailnya. Ini mirip dengan * htmlperetasan yang biasa digunakan untuk mendeteksi IE lama.
Hobbs
Terima kasih telah menambahkan detail blok terakhir di bawah komentar..itu hampir sempurna..tidak perlu melakukan lebih banyak brain storming untuk itu :)
terima kasih
10
Perhatikan bahwa dengan cara * html, * * akan cocok dengan elemen html di IE6.
Alohci
80

Sedikit contoh besar:

Coba tambahkan ini di situs Anda:

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


Contoh 2:

Apa yang dilakukan pemilih * * CSS?

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

l2aelba
sumber
7
Ini bukanlah jawabannya, tapi sungguh visualisasi yang indah!
aboy021
1
@ l2aelba benar-benar penjelasan yang bagus :) +1
swapnesh
33

* *Mencocokkan semuanya kecuali elemen tingkat atas, misalnya html,.

Frambot
sumber
Terima kasih Joe, mengujinya di sini dan juga menurut komentar di atas: * *selektornya setara dengan html *semua browser kecuali IE6 yang lama :-)
Stano
@Stano * *setara dengan html *... untuk file HTML. Tetapi CSS dapat digunakan untuk mendesain jenis dokumen lain (terutama SVG).
Sylvain Leroux
11

* berarti menerapkan gaya yang diberikan ke semua elemen.

* *berarti menerapkan gaya yang diberikan ke semua elemen anak elemen. Contoh:

body > * {
  margin: 0;
}

Ini menerapkan gaya margin ke semua elemen anak badan. Cara yang sama,

* * {
  margin: 0;
}

berlaku margin: 0untuk *elemen anak. Singkatnya, ini berlaku margin: 0untuk hampir setiap elemen.

Umumnya, satu *sudah cukup. Tidak perlu dua orang * *.

CrazyFellow
sumber
2
terima kasih untuk penjelasannya +1 ..meskipun saya tidak yakin untuk apa yang baru saja Anda sebutkan di baris terakhir "Umumnya, * sudah cukup. Tidak perlu * *. Saya kira."
swapnesh
3
* *menerapkan gaya ke elemen turunan , bukan elemen turunan . Elemen anak akan menjadi >seperti dalam contoh Anda, bukan ruang. Keturunan dan anak bukanlah hal yang sama.
BoltClock
7

Itu memilih semua elemen yang bersarang di dalam elemen lain dengan cara yang hampir sama div aakan memilih semua <a>elemen yang bersarang di suatu tempat di dalam sebuah <div>elemen.

Mike Brant
sumber