Rumah >hujung hadapan web >tutorial css >Superskrip dan subskrip bendalir
Saya telah berusaha menyelesaikan masalah skala superskrip dan subskrip dalam CSS selama bertahun -tahun, dan sekarang saya mencadangkan penyelesaian moden menggunakan pengkomputeran cecair. Artikel ini akan menjelaskan mengapa terdapat kekurangan dalam kaedah statik dan bagaimana untuk memberikan tipografi yang lebih baik untuk semua paparan sambil mengekalkan aksesibiliti. Paling penting, penyelesaian ini hanya memerlukan kod CSS ringkas dan tulen.
masalah dengan skala statik
(atas) dan (bawah) unsur:
Secara sejarah, pelayar telah menggunakan untuk font-size: smaller
dan unsur -unsur, iaitu kira -kira 0.83 kali skala. Ini adalah munasabah apabila CSS digunakan dalam dokumen mudah pada hari -hari awal, tetapi dalam reka bentuk responsif moden, saiz fon boleh berbeza -beza, yang menimbulkan masalah. Hal ini terutama berlaku apabila menggunakan tipografi cecair, saiz teks boleh diperkuat dengan lancar antara nilai -nilai yang melampau.
Skala Fluida: Penyelesaian yang lebih baik
Berikut adalah bagaimana ia berfungsi:
sup, sub { font-size: calc(0.5em + 4px); vertical-align: baseline; position: relative; top: calc(-0.5 * 0.83 * 2 * (1em - 4px)); /* 简化后:top: calc(-0.83em + 3.32px) */ } sub { top: calc(0.25 * 0.83 * 2 * (1em - 4px)); /* 简化后:top: calc(0.42em - 1.66px) */ }
vertical-align: baseline
Dalam saiz kecil, komponen 4px tetap mempunyai kesan yang lebih besar. Dalam saiz yang besar, nisbah 0.5EM menguasai. Hasilnya adalah skala yang lebih semulajadi di semua saiz.
di dalam unsur -unsur
sup, sub { font-size: calc(0.5em + 4px); /* ... */ } sub { /* ... */ }dan
Saiz fon bendalir ditakrifkan sebagai . Untuk mengimbangi 0.5EM, kita perlu menyelesaikan 0.5em * x = 1em dan dapatkan x = 2. Di sini 1EM mewakili saiz fon unsur -unsur
dansup, sub { font-size: calc(0.5em + 4px); top: calc(2 * (1em - 4px)); } sub { top: calc(2 * (1em + 4px)); }sendiri. Kami tolak komponen tetap 4px dari nilai EM semasa sebelum operasi pendaraban.
calc(0.5em 4px)
offset menegak
Untuk offset menegak, kita mulakan dengan nilai kedudukan CSS lalai dan menyesuaikannya sesuai dengan skala bendalir kita:
sup, sub { font-size: calc(0.5em + 4px); vertical-align: baseline; position: relative; top: calc(-0.5 * 0.83 * 2 * (1em - 4px)); /* 简化后:top: calc(-0.83em + 3.32px) */ } sub { top: calc(0.25 * 0.83 * 2 * (1em - 4px)); /* 简化后:top: calc(0.42em - 1.66px) */ }
Formula ini telah ditentukur dengan teliti untuk memadankan kedudukan penyemak imbas standard:
font-size: smaller
Petua Berguna
didasarkan pada analisis saya terhadap aksara unicode superscripted dalam fon biasa. Anda boleh menyesuaikan nilai -nilai ini pada kehendak untuk memenuhi keperluan reka bentuk khusus anda. Berikut adalah beberapa cara anda boleh menyesuaikan kaedah ini: font-size: (0.5em 4px)
sup, sub { font-size: calc(0.5em + 4px); /* ... */ } sub { /* ... */ }untuk penskalaan yang lebih kecil:
sup, sub { font-size: calc(0.5em + 4px); top: calc(2 * (1em - 4px)); } sub { top: calc(2 * (1em + 4px)); }
Untuk keserasian belakang , anda mungkin mahu membungkusnya dalam blok : @supports
sup, sub { font-size: calc(0.5em + 4px); top: calc(-0.5 * 0.83 * 2 * (1em - 4px)); } sub { top: calc(0.25 * 0.83 * 2 * (1em - 4px)); }Demo Akhir
Cobalah dalam projek anda yang seterusnya dan saya suka mendengar apa yang anda fikirkan!
Atas ialah kandungan terperinci Superskrip dan subskrip bendalir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!