Bagaimana CSS: adalah ,: di mana dan: mempunyai pemilih kelas pseudo berfungsi
Joseph Gordon-Levitt
Lepaskan: 2025-02-09 11:38:10
asal
598 orang telah melayarinya
Takeaways Key
pemilih kelas pseudo CSS: adalah () ,: di mana (), dan: mempunyai () menyediakan cara baru untuk menargetkan elemen HTML. The: adalah () pemilih membolehkan gaya yang lebih efisien dari pelbagai elemen, mengurangkan keperluan untuk rentetan pemilih verbose. The: di mana () pemilih beroperasi sama dengan: adalah (), tetapi dengan kekhususan sifar, menjadikannya berguna untuk menggunakan gaya asas tanpa meningkatkan kekhususan. The: mempunyai () pemilih mensasarkan elemen yang mengandungi satu set orang lain, menyediakan cara yang lama ditunggu-tunggu untuk menargetkan unsur-unsur ibu bapa.
: adalah () dan: di mana () pemilih kelas pseudo disokong dalam semua pelayar moden, tetapi tidak di Internet Explorer. The: mempunyai () pemilih lebih baru dengan sokongan terhad pada masa ini, tetapi dijangka tersedia secara meluas pada tahun 2023. Menggunakan pemilih ini dapat memudahkan sintaks CSS dan mengurangkan keperluan untuk preprocessors CSS.
kekhususan: adalah () dan: di mana () pemilih berbeza. The: adalah () pemilih mempunyai kekhususan yang sama seperti pemilih yang paling spesifik dalam argumennya, sementara: di mana () pemilih mempunyai kekhususan sifar. Ini boleh menjadi praktikal untuk CSS Reset, yang menggunakan garis dasar gaya apabila tiada gaya tertentu tersedia, yang membolehkan untuk mengatasi sebarang gaya reset CSS tanpa mengira kekhususan.
Pemilih CSS membolehkan anda memilih elemen mengikut jenis, atribut, atau lokasi dalam dokumen HTML. Tutorial ini menerangkan tiga pilihan baru -: adalah () ,: di mana (), dan: mempunyai ().
Pemilih biasanya digunakan dalam stylesheets. Contoh berikut menempatkan semua unsur perenggan
dan mengubah berat fon menjadi berani:
Anda juga boleh menggunakan pemilih dalam JavaScript untuk mencari nod Dom:
document.QuerySelector () Mengembalikan elemen HTML yang sepadan pertama
document.QuerySelectorAll () Mengembalikan semua elemen HTML yang sepadan dalam nodelist seperti array
Pemilih kelas pseudo mensasarkan elemen HTML berdasarkan keadaan semasa mereka. Mungkin yang paling terkenal ialah: Hover, yang menggunakan gaya apabila kursor bergerak ke atas elemen, jadi ia digunakan untuk menyerlahkan pautan dan butang yang boleh diklik. Pilihan popular lain termasuk:
: Dikunjungi: Perlawanan yang dilawati pautan
: sasaran: Memadankan elemen yang disasarkan oleh url dokumen
: anak pertama: mensasarkan elemen anak pertama
: nth-anak: Memilih elemen kanak-kanak tertentu
: kosong: Memadankan elemen tanpa kandungan atau elemen kanak -kanak
: diperiksa: Memadankan kotak semak atau butang radio yang bertukar-toggled-on
: kosong: Gaya medan input kosong
: didayakan: Memadankan medan input yang diaktifkan
: dilumpuhkan: Memadankan medan input kurang upaya
: Diperlukan: Sasaran medan input yang diperlukan
: sah: Memadankan medan input yang sah
: tidak sah: Memadankan medan input tidak sah
: Bermain: Menargetkan elemen audio atau video yang bermain
Pelayar baru-baru ini menerima tiga lagi pemilih kelas pseudo ...
CSS: adalah pemilih kelas pseudo
nota: Ini pada asalnya ditentukan sebagai: perlawanan () dan: mana -mana (), tetapi: adalah () telah menjadi standard CSS.
Anda sering perlu menggunakan gaya yang sama dengan lebih daripada satu elemen. Sebagai contoh,
teks perenggan berwarna hitam secara lalai, tetapi kelabu apabila ia muncul dalam , , atau :
Ini adalah contoh yang mudah, tetapi halaman yang lebih canggih akan membawa kepada rentetan pemilih yang lebih rumit dan verbose. Ralat sintaks dalam mana -mana pemilih boleh memecahkan gaya untuk semua elemen.
Preprocessors CSS seperti SASS Permit Nesting (yang juga datang ke CSS asli):
<span>/* default black */
</span><span>p {
</span> <span>color: #000;
</span><span>}
</span>
<span>/* gray in <article>, <section>, or <aside> */
</span><span>article p<span>,
</span></span><span>section p<span>,
</span></span><span>aside p {
</span> <span>color: #444;
</span><span>}
</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Ini mewujudkan kod CSS yang sama, mengurangkan usaha menaip, dan boleh menghalang kesilapan. Tetapi:
Sehingga Native Nesting tiba, anda memerlukan alat binaan CSS. Anda mungkin mahu menggunakan pilihan seperti SASS, tetapi itu boleh memperkenalkan komplikasi untuk beberapa pasukan pembangunan.
Nesting boleh menyebabkan masalah lain. Sangat mudah untuk membina pemilih yang sangat bersarang yang menjadi semakin sukar untuk membaca dan mengeluarkan CSS verbose.
: IS () menyediakan penyelesaian CSS asli yang mempunyai sokongan penuh dalam semua pelayar moden (tidak iaitu):
: di mana () sintaks pemilih adalah sama dengan: adalah () dan juga disokong dalam semua pelayar moden (bukan IE). Ia sering akan menghasilkan gaya yang sama. Contohnya:
<span>/* NOT VALID - selector will not work */
</span><span>div<span>:is(::before, ::after)</span> {
</span> <span>display: block;
</span> <span>content: '';
</span> <span>width: 1em;
</span> <span>height: 1em;
</span> <span>color: blue;
</span><span>}
</span>
Salin selepas log masuk
Salin selepas log masuk
Perbezaannya ialah kekhususan . Kekhususan adalah algoritma yang digunakan untuk menentukan pemilih CSS yang harus mengatasi semua yang lain. Dalam contoh berikut, Artikel P lebih spesifik daripada P sahaja, jadi semua elemen perenggan dalam akan menjadi kelabu:
Dalam kes: adalah (), kekhususan adalah pemilih yang paling spesifik yang terdapat dalam argumennya. Dalam kes: di mana (), kekhususan adalah sifar.
Pertimbangkan CSS berikut:
Teks perenggan akan berwarna merah, seperti yang ditunjukkan dalam demo codepen berikut.
Lihat pen
Menggunakan: adalah pemilih oleh SitePoint (@SitePoint)
pada codepen.
The: adalah () pemilih mempunyai kekhususan yang sama seperti Artikel P, tetapi ia datang kemudian dalam lembaran styleshe, jadi teks menjadi merah. Ia perlu menghapuskan kedua -dua artikel p dan: adalah () pemilih untuk memohon warna biru, kerana: di mana () pemilih kurang spesifik daripada sama ada.
Lebih banyak codebase akan digunakan: adalah () daripada: di mana (). Walau bagaimanapun, kekhususan sifar: di mana () boleh menjadi praktikal untuk reset CSS, yang menggunakan garis dasar gaya standard apabila tiada gaya tertentu tersedia. Biasanya, reset memohon fon lalai, warna, padding dan margin.
Kod Reset CSS ini menggunakan margin teratas 1EM ke
tajuk kecuali mereka adalah anak pertama dari unsur :
tersuai kemudian di lembaran gaya tidak mempunyai kesan, kerana artikel: anak pertama mempunyai kekhususan yang lebih tinggi:
<span>/* default black */
</span><span>p {
</span> <span>color: #000;
</span><span>}
</span>
<span>/* gray in <article>, <section>, or <aside> */
</span><span>article p<span>,
</span></span><span>section p<span>,
</span></span><span>aside p {
</span> <span>color: #444;
</span><span>}
</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Anda boleh membetulkannya dengan menggunakan pemilih khusus yang lebih tinggi, tetapi lebih banyak kod dan tidak semestinya jelas kepada pemaju lain. Anda akhirnya akan lupa mengapa anda memerlukannya:
Anda juga boleh membetulkan masalah dengan memohon! Penting untuk setiap gaya, tetapi sila elakkan melakukan itu!
Pilihan yang lebih baik adalah mengamalkan kekhususan sifar: di mana () dalam tetapan semula CSS anda:
The: mempunyai () pemilih menggunakan sintaks yang sama ke: adalah () dan: di mana (), tetapi ia mensasarkan elemen yang
mengandungi satu set orang lain. Sebagai contoh, inilah CSS untuk menambah sempadan dua piksel biru ke mana-mana pautan yang mengandungi satu atau lebih atau tags:
Ini adalah pembangunan CSS yang paling menarik dalam beberapa dekad!
<span>/* NOT VALID - selector will not work */
</span><span>div<span>:is(::before, ::after)</span> {
</span> <span>display: block;
</span> <span>content: '';
</span> <span>width: 1em;
</span> <span>height: 1em;
</span> <span>color: blue;
</span><span>}
</span>
Salin selepas log masuk
Salin selepas log masuk
pemaju akhirnya mempunyai cara untuk menargetkan elemen induk!
"Pemilih induk" yang sukar difahami telah menjadi salah satu ciri CSS yang paling diminta, tetapi ia menimbulkan komplikasi prestasi untuk vendor penyemak imbas, dan ia telah lama datang. Dalam istilah sederhana:
Pelayar memohon gaya CSS ke elemen apabila ia ditarik pada halaman. Oleh itu, seluruh elemen induk mesti ditarik semula apabila menambahkan elemen kanak-kanak lagi.
Menambah, membuang, atau mengubahsuai unsur -unsur dalam JavaScript boleh menjejaskan gaya seluruh halaman sehingga ke Conscosing .
Dengan mengandaikan vendor telah menyelesaikan masalah prestasi, pengenalan: mempunyai () membenarkan kemungkinan yang tidak mungkin tanpa JavaScript pada masa lalu. Sebagai contoh, anda boleh menetapkan gaya bentuk luar
Atas ialah kandungan terperinci Bagaimana CSS: adalah ,: di mana dan: mempunyai pemilih kelas pseudo berfungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn