Wawancara ini meneroka Projek Reset CSS Inovatif Elad Shechter, "The-New-CSS-Reset," pendekatan moden yang memanfaatkan ciri-ciri CSS canggih. Daripada hanya menyampaikan kod, kami menyelidiki mengapa di sebalik penciptaannya dan selok -belok fungsinya.
Kod Reset Lengkap adalah:
/*** Reset CSS Baru - Versi 1.2.0 (terakhir dikemas kini 23.7.2021) ***/ / * Keluarkan semua gaya kecuali 'paparan' */ *: di mana (: tidak (iframe, kanvas, img, svg, video): tidak (svg *)) { Semua: Unset; paparan: kembali; } / * Saiz kotak pilihan */ *, *:: sebelum ini, *:: selepas { saiz kotak: kotak sempadan; } / * Keluarkan gaya senarai */ ol, ul { Senarai gaya: Tiada; } / * Mencegah imej daripada melebihi bekas */ img { Max-Width: 100%; } / * Sempadan meja keruntuhan */ Jadual { Sempadan-keruntuhan: runtuh; } / * Mengembalikan 'ruang putih' untuk safari textareas */ textarea { White-Space: Revert; }
Elad menerangkan keperluan untuk menetapkan semula baru, yang menonjolkan bahawa reset sedia ada bergantung pada ciri CSS yang lebih lama. Pendekatannya memanfaatkan keupayaan baru untuk menetapkan semula yang lebih cekap dan sah. Dia membezakan pendekatannya dengan normalisasi.css (pendekatan yang lebih lembut yang memberi tumpuan kepada penetapan ketidakkonsistenan pelayar) dan reset CSS Eric Meyer (pendekatan yang lebih agresif mengeluarkan gaya lalai yang paling). Peguambela Elad menggunakan kedua -dua normalize.css dan set semula keras, menggabungkan kekuatan mereka.
Inti reset baru terletak pada all: unset;
. Harta yang kuat ini menetapkan semula semua sifat yang diwarisi untuk inherit
dan sifat yang tidak dihidupkan untuk initial
, dengan berkesan mengeluarkan gaya penyemak imbas lalai. Walau bagaimanapun, display
adalah pengecualian. all: unset;
set display
ke inline
yang tidak diingini. Oleh itu, display: revert;
digunakan untuk memulihkan nilai display
lalai penyemak imbas untuk setiap elemen, memastikan susun atur yang betul. Kata kunci revert
secara bijak mengambil semula nilai display
lalai gaya pengguna-agen jika tersedia, jika tidak jatuh ke tingkah laku unset
.
Pemilih *:where(:not(iframe, canvas, img, svg, video):not(svg *))
menargetkan hampir semua elemen, tidak termasuk mereka (seperti<iframe></iframe>
,<canvas></canvas>
, dan sebagainya) dimensi yang paling baik dikawal melalui atribut dan bukannya reset CSS, menghalang akibat yang tidak diingini. The :where()
kelas pseudo meminimumkan kekhususan, mengelakkan konflik dengan gaya khusus projek. Pengecualian yang berasingan :not(svg *)
melindungi integriti elemen SVG.
Reset ini juga termasuk gaya pendapat seperti box-sizing: border-box
, yang, walaupun bukan tidak konsisten penyemak imbas, diterima secara meluas sebagai amalan terbaik. Penyingkiran gaya senarai ( list-style: none;
) dibenarkan oleh penggunaan senarai umum untuk navigasi di mana penanda tidak perlu, walaupun implikasi semantik.
Elad membincangkan penambahan potensi masa depan, didorong oleh keperluan berulang dalam projeknya. max-width: 100%;
Peraturan untuk imej dibentangkan sebagai calon yang mungkin. Beliau juga membuat spekulasi mengenai kesan modul Lapisan Cascade yang akan datang, menunjukkan ia dapat menghapuskan keperluan untuk teknik pengurangan kekhususan seperti :where()
dengan menyediakan pendekatan berlapis untuk gaya yang mengatasi. Ini akan membolehkan pemisahan gaya semula yang bersih dari gaya khusus projek.
Atas ialah kandungan terperinci Temu bual dengan Elad Shechter di 'The New CSS Reset'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!