Menguruskan jarak menegak dalam teks jangka panjang, terutamanya dalam laman web yang didorong oleh CMS, memberikan cabaran yang berterusan bagi pemaju. Ini sering ditangani dengan CSS tersuai, tetapi mencapai hasil yang konsisten dan boleh diramal boleh menjadi sangat sukar. Artikel ini meneroka penyelesaian moden yang memanfaatkan pemilih CSS
. :has()
Firefox pada masa ini memerlukan bendera
(dalam layout.css.has-selector.enabled
) untuk about:config
sokongan. :has()
kerumitan jarak menegak tipografi
Hanya memohon margin atas dan bawah ke elemen seperti
<p> </p>
,
<p></p>
, dan
<h2></h2>
tidak menyelesaikan masalah. Tingkah laku yang ideal memerlukan:
<ul></ul>
- tiada ruang tambahan di atas elemen pertama atau di bawah yang terakhir dalam blok teks jangka panjang. Ini memastikan penempatan unsur -unsur sekitar yang boleh diramalkan.
- jarak yang konsisten antara bahagian (tajuk dan kandungan yang berkaitan). Ini bermakna jarak yang ketara sebelum tajuk, kecuali ia segera mengikuti tajuk lain.
Pendekatan tradisional dan batasan mereka
Penyelesaian biasa melibatkan membungkus kandungan bentuk panjang dalam div (mis.,
) dan memohon CSS untuk menguruskan margin. Walau bagaimanapun, pendekatan ini mempunyai kelemahan: .rich-text
- Struktur HTML tegar: Memerlukan kelas pembalut memerlukan struktur HTML tertentu, yang berpotensi bertempur dengan kod sedia ada atau kandungan yang dihasilkan oleh CMS. Kawalan yang tepat ke atas margin elemen pertama/terakhir lagi menyekat struktur (mis., ).
.rich-text > *:first-child
Ciri -ciri margin campuran: - penyelesaian tradisional sering bercampur dan , yang membawa kepada kerumitan dengan margin runtuh. Ini boleh menjadi kurang intuitif dan lebih sukar untuk dikekalkan.
margin-top
margin-bottom
margin runtuh: - margin runtuh, sementara kadang -kadang bermanfaat, menambah kerumitan dan boleh menyebabkan tingkah laku yang tidak dijangka, terutama apabila perubahan susun atur (mis., Beralih ke Flexbox).
penyelesaian moden dengan: mempunyai ()
Artikel ini mencadangkan penyelesaian menggunakan
, bertujuan untuk penambahbaikan: <p></p>
- no wrapper diperlukan: menghapuskan keperluan untuk kelas pembalut, memudahkan struktur HTML.
- Arah margin yang konsisten: Menggunakan arah margin tunggal (mis., margin-bottom
Mengelakkan margin runtuh: - Pendekatan meminimumkan pergantungan pada margin runtuh.
CSS Cleaner: - mengurangkan keperluan untuk menetapkan dan kemudian mengatasi gaya.
Pertimbangan dan kaveat
Keserasian penyemak imbas: - sokongan tidak universal; Semak keserasian pelayar sebelum pelaksanaan.
:has()
Sokongan elemen terhad: - Contoh yang disediakan tidak meliputi semua elemen tipografi (mis., ). Ini mudah diperpanjang.
<blockquote></blockquote>
unsur-unsur bukan tipografi:
Penyelesaian ini memberi tumpuan terutamanya kepada elemen teks teras; Mengendalikan elemen lain (imej, jadual) mungkin memerlukan pemilih tambahan. -
Sekatan Tahap Tajuk:
Contohnya tidak mengendalikan tajuk berturut -turut pada tahap yang sama atau tahap tajuk yang dilangkau. -
kekhususan dan ITCSS:
Penggunaan - membolehkan kekhususan yang konsisten tanpa mengira struktur projek. Pendekatan menunjukkan meletakkan CSS ini dalam lapisan "Elemen" dari seni bina ITCSS.
:where()
Kesimpulan
Pendekatan
ini menawarkan alternatif yang lebih bersih dan lebih fleksibel untuk kaedah tradisional untuk menguruskan jarak menegak dalam teks jangka panjang. Walaupun tidak sepenuhnya mudah, ia menangani banyak batasan pendekatan terdahulu, mengakibatkan lebih banyak hasil yang dapat dipelihara dan boleh diramal. Maklum balas dan penambahbaikan dialu -alukan.
Atas ialah kandungan terperinci Diselesaikan dengan: mempunyai (): jarak menegak dalam teks jangka panjang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!