国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
Langkah 4
Bagaimana jika pengguna mengubah saiz fon root?
Bagi mereka yang tidak keberatan situasi yang melampau
Cara mengelakkan penyesuaian semula teks
Teks bukan rwasta dalam bekas
Meringkaskan
Rumah hujung hadapan web tutorial css Saiz fon berskala linear dengan pengapit CSS () berdasarkan paparan paparan

Saiz fon berskala linear dengan pengapit CSS () berdasarkan paparan paparan

Apr 02, 2025 am 04:21 AM

Saiz fon berskala linear dengan pengapit CSS () berdasarkan paparan paparan

Tipografi responsif telah mencuba banyak kaedah pada masa lalu, seperti pertanyaan media dan CSS Calc ().

Artikel ini akan meneroka pendekatan yang berbeza, iaitu untuk skala teks secara linear antara saiz minimum dan maksimum apabila lebar viewport meningkat, dengan matlamat membuat kelakuannya lebih diramalkan pada saiz skrin yang berbeza -semuanya dengan hanya satu baris kod CSS, terima kasih kepada clamp() .

clamp() berkuasa. Ia berfungsi untuk semua tujuan, tetapi sangat berguna untuk tipografi. Ia berfungsi seperti berikut: Ia menerima tiga nilai:

 <code>clamp(minimum, preferred, maximum);</code>

Nilai yang dikembalikan akan menjadi nilai pilihan sehingga nilai pilihan berada di bawah nilai minimum (nilai minimum akan dikembalikan) atau melebihi nilai maksimum (nilai maksimum akan dikembalikan).

Oleh itu, dengan mengandaikan anda tidak menetapkan nilai pelik dan menetapkannya di antara nilai minimum dan maksimum, adakah ia selalu menjadi nilai pilihan? Nah, anda harus menggunakan formula dengan nilai pilihan, sebagai contoh:

 <code>.banner { width: clamp(200px, 50% 20px, 800px); /* 是的,您可以在clamp() 中進(jìn)行數(shù)學(xué)運(yùn)算!*/ }</code>

Katakan anda ingin menetapkan saiz fon minimum elemen kepada 1 REM apabila lebar viewport adalah 360px atau di bawah dan saiz fon maksimum ialah 3.5 REM apabila lebar viewport adalah 840px atau ke atas.

Dengan kata lain:

 <code>1rem  = 360px 及以下縮放= 361px - 839px 3.5rem = 840px 及以上</code>

Mana -mana lebar viewport antara 361 dan 839 piksel memerlukan saiz fon yang berskala secara linear antara 1REM dan 3.5REM. Menggunakan clamp() sebenarnya sangat mudah ! Sebagai contoh, dengan lebar viewport sebanyak 600 piksel (antara 360 dan 840 piksel), kita akan mendapat nilai pertengahan antara 1REM dan 3.5REM, iaitu 2.25REM.

Matlamat yang kami cuba capai dengan clamp() dipanggil interpolasi linear : Mendapat maklumat pertengahan antara dua titik data.

Berikut adalah empat langkah untuk melakukan ini:

Langkah 1

Pilih saiz fon minimum dan maksimum, serta lebar viewport minimum dan maksimum. Dalam contoh kami, saiz fon adalah 1REM dan 3.5REM dan lebarnya ialah 360px dan 840px.

Langkah 2

Tukar lebar ke REM. Oleh kerana 1REM pada kebanyakan penyemak imbas adalah 16px secara lalai (lebih banyak lagi pada kemudian), kami akan menggunakannya. Oleh itu, lebar viewport minimum dan maksimum akan menjadi 22.5 REM dan 52.5 REM, masing -masing.

Langkah 3

Di sini kita akan sedikit berat sebelah ke arah aspek matematik. Apabila digabungkan, lebar viewport dan saiz fon membentuk dua mata pada sistem koordinat X dan Y, dan titik -titik ini membentuk garis.

Kami memerlukan garis ini -lebih khusus, kami memerlukan cerunnya dan persimpangannya dengan paksi y. Inilah kaedah pengiraan:

 <code>slope = (maxFontSize - minFontSize) / (maxWidth - minWidth) yAxisIntersection = -minWidth * slope minFontSize</code>

Ini membawa kita ke nilai cerun 0.0833 dan nilai persimpangan paksi Y -0.875.

Langkah 4

Sekarang kita membina fungsi clamp() . Formula untuk nilai pilihan adalah:

 <code>preferredValue = yAxisIntersection[rem] (slope * 100)[vw]</code>

Jadi, fungsi berakhir seperti ini:

 <code>.header { font-size: clamp(1rem, -0.875rem 8.333vw, 3.5rem); }</code>

Anda boleh memvisualisasikan hasil dalam demonstrasi berikut:

Terus pergi dan mencubanya. Seperti yang anda lihat, apabila lebar viewport adalah 840px, saiz fon berhenti berkembang, dan apabila lebar viewport adalah 360px, saiz fon berhenti berkurangan. Segala -galanya di antara perubahan dengan cara linear.

Bagaimana jika pengguna mengubah saiz fon root?

Anda mungkin telah melihat kecacatan kecil dalam pendekatan ini: ia berfungsi hanya jika saiz fon akar adalah apa yang anda fikirkan (16px dalam contoh sebelumnya) dan tidak pernah berubah.

Kami menukar lebar 360px dan 840px ke dalam unit REM dengan membahagikannya dengan 16, kerana kami menganggap bahawa ini adalah saiz fon akar. Jika pengguna menetapkan keutamaannya kepada saiz fon akar yang lain, seperti 18px dan bukannya 16px lalai, pengiraan akan salah dan teks tidak akan mengubah saiz seperti yang kita harapkan.

Kami hanya mempunyai satu cara untuk digunakan di sini, iaitu (1) melakukan pengiraan yang diperlukan dalam kod apabila halaman dimuatkan, (2) mendengar perubahan dalam saiz fon akar, dan (3) mengira semula segala -galanya jika ada perubahan.

Berikut adalah fungsi JavaScript yang berguna untuk melakukan pengiraan:

 // Dapatkan lebar viewport dalam piksel dan saiz fon dalam fungsi REM ClampBuilder (MinwidthPx, MaxWidThPx, MinFontSize, MaxFontsize) {
  const root = document.QuerySelector ("html");
  const pixelsperRem = nombor (getComputStyle (root) .fontsize.slice (0, -2));

  const minWidth = minWidthPx / pixelsperRem;
  const maxWidth = maxWidthPx / pixelsperRem;

  Const Slope = (MaxFontsize - MinFontSize) / (MaxWidth - MinWidth);
  const YaxisIntersection = -MinWidth * lereng minfontsize;

  kembali `Clamp ($ {Minfontsize} Rem, $ {YaxisIntersection} Rem $ {Slope * 100} VW, $ {MaxFontsize} Rem)`;
}

// ClampBuilder (360, 840, 1, 3.5) -> "Clamp (1rem, -0.875rem 8.333vw, 3.5rem)"

Saya sengaja meninggalkan bagaimana untuk menyuntik rentetan yang dikembalikan ke CSS kerana terdapat banyak cara untuk melakukan ini bergantung kepada keperluan anda dan sama ada anda menggunakan CSS asli, perpustakaan CSS-in-JS atau sesuatu yang lain. Juga, tidak ada peristiwa asli untuk perubahan saiz fon, jadi kita perlu menyemak secara manual. Kita boleh menggunakan setInterval untuk memeriksa sekali sesaat, tetapi ini boleh menjejaskan prestasi.

Ini lebih seperti keadaan yang melampau. Beberapa orang mengubah saiz fon penyemak imbas mereka, dan bahkan lebih sedikit orang mengubahnya ketika melawat laman web anda. Tetapi jika anda mahu laman web anda menjadi responsif yang mungkin, maka ini adalah cara terbaik untuk melakukannya.

Bagi mereka yang tidak keberatan situasi yang melampau

UPDATE: Sumber yang dikongsi di sini telah berhenti bekerja sejak artikel ini pertama kali diterbitkan. Jika anda mencari kalkulator untuk membantu menentukan saiz fon di bawah pelbagai pandangan, pertimbangkan untuk menggunakan penjana jenis cecair, yang menggunakan tipografi cecair moden.

Cara mengelakkan penyesuaian semula teks

Kawalan yang teliti ke atas saiz tipografi membolehkan kita melakukan perkara-perkara yang lain-seperti menghalang teks daripada menyesuaikan semula pada lebar viewport yang berbeza.

Ini adalah tingkah laku biasa teks.

Tetapi sekarang, dengan kawalan kami, kami dapat menyimpan teks dengan bilangan baris yang sama, sentiasa membungkus garis pada perkataan yang sama, tidak kira lebar paparan yang kami gunakan.

Jadi bagaimana kita boleh melakukan ini? Pertama, nisbah antara saiz fon dan lebar viewport mesti tetap sama. Dalam contoh ini, kita berubah dari 1REM pada 320px ke 3rem pada 960px.

 <code>320 / 1 = 320 960 / 3 = 320</code>

Jika kita menggunakan fungsi clampBuilder() yang ditulis sebelum ini, ia akan menjadi:

 const text = document.QuerySelector ("p");
text.style.fontsize = ClampBuilder (320, 960, 1, 3);

Ia mengekalkan lebar yang sama dengan nisbah fon. Alasan yang kita lakukan ini ialah kita perlu memastikan teks mempunyai saiz yang betul pada setiap lebar supaya kita dapat mengekalkan bilangan baris yang sama. Ia masih akan disesuaikan dengan lebar yang berbeza, tetapi ini perlu untuk kerja seterusnya yang perlu kita lakukan.

Sekarang kita perlu mendapatkan bantuan daripada unit CSS (CH), kerana mempunyai saiz fon yang betul tidak mencukupi. Unit CH adalah bersamaan dengan lebar glyph "0" dalam fon elemen. Kami mahu menjadikan badan teks selebar sebagai viewport, bukan dengan menetapkan width: 100% , tetapi dengan menggunakan width: Xch , di mana x adalah bilangan unit CH (atau 0) yang diperlukan untuk mengisi viewport secara mendatar.

Untuk mencari x, kita mesti membahagikan lebar minimum Viewport 320px dengan saiz CH elemen pada saiz fon apabila lebar viewport adalah 320px. Dalam kes ini ia adalah 1 REM.

Jangan risau, inilah coretan kod untuk mengira saiz ch unsur:

 // Mengembalikan lebar elemen "0" glyph (dalam piksel) pada saiz fon yang dikehendaki
fungsi calculatech (elemen, fontsize) {
  const sifar = document.createElement ("span");
  sifar.innertext = "0";
  sifar.style.position = "mutlak";
  sifar.style.fontsize = fontsize;

  elemen.AppendChild (sifar);
  const chpixels = sifar.getBoundingClientRect (). Lebar;
  elemen.removechild (sifar);

  kembali chpixels;
}

Sekarang kita dapat terus menetapkan lebar teks:

 fungsi calculatech (elemen, fontsize) {...}

const text = document.QuerySelector ("p");
text.style.fontsize = ClampBuilder (320, 960, 1, 3);
text.style.width = `$ {320 / calculatech (teks," 1rem ")} ch`;

Wow, tunggu. Sesuatu yang buruk berlaku. Terdapat bar tatal mendatar yang merosakkan perkara!

Apabila kita bercakap tentang 320px, kita bercakap tentang lebar viewport, termasuk bar skrol menegak. Oleh itu, lebar teks ditetapkan pada lebar kawasan yang kelihatan ditambah lebar bar tatal, yang menjadikannya melimpah secara melintang.

Jadi mengapa tidak menggunakan ukuran yang tidak mengandungi lebar bar skrol menegak? Kita tidak boleh, itu kerana unit CSS VW. Ingat, kami menggunakan VW dalam clamp() untuk mengawal saiz fon. Anda akan melihat bahawa VW termasuk lebar bar skrol menegak, yang menjadikan skala fon bersama dengan lebar viewport, termasuk bar skrol. Jika kita mahu mengelakkan sebarang penyesuaian semula, lebarnya mestilah berkadar dengan lebar viewport, termasuk bar skrol.

Jadi apa yang harus kita lakukan? Semasa kita lakukan:

 text.style.width = `$ {320 / calculatech (teks," 1rem ")} ch`;

... Kita boleh mengecilkan hasilnya dengan mendarabkannya dengan jumlah yang kurang daripada 1. 0.9 dapat menyelesaikan masalah. Ini bermakna lebar teks akan menjadi 90% daripada lebar viewport, yang akan mencukupi untuk membuat ruang kecil yang diambil oleh scrollbar. Kita boleh membuatnya lebih sempit dengan menggunakan nombor yang lebih kecil (mis. 0.6).

 fungsi calculatech (elemen, fontsize) {...}

const text = document.QuerySelector ("p");
text.style.fontsize = ClampBuilder (20, 960, 1, 3);
text.style.width = `$ {320 / calculatech (teks," 1rem ") * 0.9} ch`;

Anda mungkin cenderung untuk menolak beberapa piksel dari 320 untuk mengabaikan bar skrol, seperti itu:

 text.style.width = `$ {(320 - 30) / calculatech (teks," 1rem ")} ch`;

Masalah dengan melakukan ini adalah bahawa ia akan memulihkan masalah retuning! Ini kerana pengurangan dari 320 akan memusnahkan nisbah viewport ke fon.

Lebar teks mesti selalu menjadi peratusan lebar viewport. Satu lagi perkara yang perlu diperhatikan ialah kita perlu memastikan kita memuatkan font yang sama pada setiap peranti yang menggunakan laman web ini. Ini terdengar jelas, bukan? Nah, inilah butiran kecil yang mungkin menyimpang teks anda. Melakukan perkara seperti font-family: sans-serif tidak menjamin fon yang sama digunakan dalam setiap pelayar. sans-serif akan menetapkan Arial pada Chrome untuk Windows, tetapi Roboto pada Chrome untuk Android. Di samping itu, geometri beberapa fon boleh menyebabkan penyesuaian semula, walaupun anda melakukan semuanya dengan betul. Fon Monowidth cenderung menghasilkan hasil yang terbaik. Oleh itu, pastikan untuk memastikan fon anda tepat.

Lihat contoh bukan retun ini dalam demonstrasi berikut:

Teks bukan rwasta dalam bekas

Apa yang perlu kita lakukan sekarang ialah menggunakan saiz dan lebar fon ke bekas, bukan terus ke elemen teks. Teks di dalamnya hanya perlu ditetapkan kepada width: 100% . Untuk perenggan dan tajuk, ini tidak perlu kerana mereka adalah unsur-unsur peringkat blok sendiri dan secara automatik akan mengisi lebar bekas.

Satu kelebihan menggunakan kaedah ini dalam bekas induk ialah anak -anaknya akan bertindak balas secara automatik dan saiz semula tanpa menetapkan saiz fon dan lebarnya satu demi satu. Selain itu, jika kita perlu menukar saiz fon satu elemen tanpa menjejaskan yang lain, kita hanya menukar saiz fonnya ke mana -mana nilai EM dan secara semulajadi akan menjadi relatif kepada saiz fon bekas.

Teks bukan retun adalah pemilih, tetapi ia adalah kesan halus yang boleh membawa hasil yang baik kepada reka bentuk!

Meringkaskan

Untuk meringkaskan, saya menyusun demonstrasi kecil bagaimana semua ini kelihatan dalam senario kehidupan sebenar.

Dalam contoh akhir ini, anda juga boleh mengubah saiz fon akar dan fungsi clamp() secara automatik akan dikira semula supaya teks akan mempunyai saiz yang betul dalam apa jua keadaan.

Walaupun matlamat artikel ini adalah menggunakan clamp() dengan saiz fon, teknik yang sama ini boleh digunakan untuk menerima sebarang sifat CSS unit panjang. Sekarang, saya tidak mengatakan bahawa anda harus menggunakannya di mana sahaja. Banyak kali, font-size: 1rem sudah cukup. Saya hanya ingin menunjukkan kepada anda berapa banyak kawalan yang anda boleh lakukan apabila anda memerlukannya .

Secara peribadi, saya percaya clamp() adalah salah satu perkara terbaik di CSS dan saya tidak sabar untuk melihat apa yang digunakan oleh orang lain kerana ia menjadi lebih banyak digunakan!

Atas ialah kandungan terperinci Saiz fon berskala linear dengan pengapit CSS () berdasarkan paparan paparan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa itu 'menyekat CSS'? Apa itu 'menyekat CSS'? Jun 24, 2025 am 12:42 AM

CSS Blok halaman yang diberikan kerana pelayar melihat CSS dalam talian dan luaran sebagai sumber utama secara lalai, terutamanya dengan stylesheet yang diimport, header sejumlah besar CSS sebaris, dan gaya pertanyaan media yang tidak dapat dioptimumkan. 1. Ekstrak CSS kritikal dan membenamkannya ke HTML; 2. Kelewatan memuatkan CSS bukan kritikal melalui JavaScript; 3. Gunakan atribut media untuk mengoptimumkan pemuatan seperti gaya cetak; 4. Memampatkan dan menggabungkan CSS untuk mengurangkan permintaan. Adalah disyorkan untuk menggunakan alat untuk mengekstrak CSS utama, menggabungkan REL = "Preload" pemuatan asynchronous, dan menggunakan media yang ditangguhkan dengan munasabah untuk mengelakkan pemisahan yang berlebihan dan kawalan skrip kompleks.

Luaran vs CSS Dalaman: Apakah pendekatan terbaik? Luaran vs CSS Dalaman: Apakah pendekatan terbaik? Jun 20, 2025 am 12:45 AM

Thebestapproachforcssdependonstantheproject'ssspecificneeds.forlargerprojects, externalcssisbetterduetomaintainabilityability;

Adakah CSS saya mesti berada di bawah kes? Adakah CSS saya mesti berada di bawah kes? Jun 19, 2025 am 12:29 AM

Tidak, cssdoesnothavetobeinlowercase.however, menggunakanLowerCaseisRecommendorfendfor: 1) Consistencyandreadability, 2) Mengelakkaningerrorsinrelatedtechnologies, 3) potensiformanceBenefits, dan4) peningkatan yang lebih baik.

Kepekaan kes CSS: Memahami apa yang penting Kepekaan kes CSS: Memahami apa yang penting Jun 20, 2025 am 12:09 AM

Cssismostlycase-insensitive, buturlsandfontfamilynamesarecase-sensitif.1) propertiesandvalueslikecolor: merah; arenotcase-sensitif.2) urlsmustmatchtheserver'scase, mis.,

Apakah AutoPrefixer dan bagaimana ia berfungsi? Apakah AutoPrefixer dan bagaimana ia berfungsi? Jul 02, 2025 am 01:15 AM

AutoPrefixer adalah alat yang secara automatik menambah awalan vendor ke atribut CSS berdasarkan skop penyemak imbas sasaran. 1. Ia menyelesaikan masalah mengekalkan awalan secara manual dengan kesilapan; 2. Bekerja melalui borang pemalam postcss, menghuraikan CSS, menganalisis atribut yang perlu diawali, dan menjana kod mengikut konfigurasi; 3. Langkah-langkah penggunaan termasuk memasang pemalam, menetapkan senarai pelayar, dan membolehkan mereka dalam proses membina; 4. Nota termasuk tidak menambah awalan secara manual, menyimpan kemas kini konfigurasi, awalan tidak semua atribut, dan disyorkan untuk menggunakannya dengan preprocessor.

Apakah kaunter CSS? Apakah kaunter CSS? Jun 19, 2025 am 12:34 AM

Csscounterscanautomaticallynumbersectionsandlists.1) useCounter-resettoinitialize, counter-incrementToinCrease, andCounter () orcounters () todisplayvalues.2) CombinWithjavascriptfordynamicContentToenSureAccurateupdates.

CSS: Bilakah kes perkara (dan kapan tidak)? CSS: Bilakah kes perkara (dan kapan tidak)? Jun 19, 2025 am 12:27 AM

Dalam CSS, nama pemilih dan atribut adalah sensitif kes, manakala nilai, warna yang dinamakan, URL, dan atribut tersuai adalah sensitif kes. 1. Nama pemilih dan atribut adalah kes-tidak sensitif, seperti warna latar belakang dan warna latar belakang adalah sama. 2. Warna heksadesimal dalam nilai adalah sensitif kes, tetapi warna bernama adalah sensitif kes, seperti merah dan merah tidak sah. 3. URL adalah sensitif kes dan boleh menyebabkan masalah pemuatan fail. 4. Sifat tersuai (pembolehubah) adalah sensitif kes, dan anda perlu memberi perhatian kepada konsistensi kes apabila menggunakannya.

Apakah fungsi conic-gradient ()? Apakah fungsi conic-gradient ()? Jul 01, 2025 am 01:16 AM

Function-gradient () functionIncsscreatesculculargradientsthatrotatecolorstopsaroundroentroint.1.ISIISIDEALFORPIECHARTS, Progressindicators, Colorwheels, andDecorativeBackgrounds.2.itworksByDefiningColorStopsatSpecificles, OpsticalStarting

See all articles