pertanyaan kontena memang sangat mudah! Malah, saya telah dalam beberapa situasi dan saya sangat bersemangat untuk menggunakannya, tetapi saya terhad oleh keserasian pelayar. Jika pertanyaan kontena boleh digunakan pada masa itu, kesannya akan lebih baik.
Semua demo berikut paling baik dilihat dalam Chrome atau Safari pada masa penulisan. Firefox merancang untuk memberi sokongan dalam versi 109.
kes 1: grid kad
Katakan anda perlu membina grid kad yang memerlukan setiap kad untuk mengekalkan nisbah aspek 1: 1:
Ini lebih sukar daripada yang kelihatan! Masalahnya ialah saiz semula kandungan komponen berdasarkan lebar viewport akan membolehkan anda tertakluk kepada bagaimana komponen bertindak balas terhadap viewport, dan bagaimana bekas nenek moyang lain bertindak balas terhadap pandangan. Sebagai contoh, jika anda mahu saiz fon tajuk kad menurun apabila ia mencapai saiz inline tertentu, tidak ada cara yang boleh dipercayai untuk melakukan ini.
Anda boleh menetapkan saiz fon menggunakan unit VW, tetapi komponen masih terikat pada lebar paparan pelayar. Ini boleh menyebabkan masalah apabila grid kad digunakan dalam konteks lain yang mungkin tidak mempunyai titik putus yang sama.
Dalam projek sebenar saya, saya mengambil kaedah JavaScript:
pertanyaan kontena akan lebih baik kerana ia menyediakan
unit pertanyaan kontena , seperti unit CQW. Seperti yang anda pelajari, 1CQW adalah sama dengan 1% daripada lebar bekas. Kami juga mempunyai unit CQI, yang merupakan ukuran lebar selaras bekas, dan CQB digunakan untuk lebar blok kontena. Jadi jika kita mempunyai bekas kad lebar 500px, nilai 50cqw dikira sebagai 250px.
Jika saya boleh menggunakan pertanyaan kontena dalam grid kad saya, saya boleh menetapkan komponen ke bekas: .card
<code>.card { container: card / size; }</code>
: .card
<code>.card__inner { padding: 10cqw; } </code>
idea lain? Gunakan unit CQW sebagai saiz fon kandungan dalaman, dan kemudian gunakan mengisi menggunakan unit EM:
<code>.card { container: card / size; }</code>
5CQW adalah nilai sewenang -wenang - Saya baru memilih nilai. Padding masih sama dengan 10cqw, kerana unit EM adalah relatif kepada saiz fon .card__inner
!
adakah anda melihatnya? 2EM berbanding dengan saiz fon 5cqw yang ditetapkan pada bekas yang sama ! Bekas berfungsi secara berbeza daripada yang kita gunakan kerana unit EM adalah relatif kepada nilai saiz fon elemen yang sama. Tetapi saya dengan cepat menyedari bahawa unit pertanyaan kontena berkaitan dengan ibu bapa baru -baru ini (juga bekas) . Contohnya, dalam contoh ini, 5CQW tidak skala berdasarkan lebar elemen :
.card
Sebaliknya, ia akan skala kepada ibu bapa terdekat yang ditakrifkan sebagai bekas. Itulah sebabnya saya menyediakan pembungkus
<code>.card__inner { padding: 10cqw; } </code>
kes 2: susun atur berganti .card__inner
pertanyaan kontena dengan mudah dapat menyelesaikan masalah ini kerana penggunaan aturan
:
@container
satu pertanyaan, tak terhingga lancar:
<code>.card__inner { font-size: 5cqw; padding: 2em; } </code>
Mengapa ini penting? Susun atur potret kad mungkin memerlukan gaya alternatif, tetapi anda tidak boleh mengubah prop JavaScript menggunakan CSS. Oleh itu, anda boleh mengulangi gaya yang anda mahukan. Saya sebenarnya membincangkan ini dan bagaimana menyelesaikannya dalam jawatan lain. Sekiranya anda perlu menggunakan pertanyaan kontena untuk sejumlah besar gaya, anda mungkin perlu membina keseluruhan sistem reka bentuk di sekelilingnya, dan bukannya cuba memasukkannya ke dalam sistem reka bentuk yang sedia ada yang bergantung kepada pertanyaan media.
.info-card
kes 3: stroke svg
Ini adalah satu lagi corak yang sangat biasa yang saya gunakan baru -baru ini. Katakan anda mempunyai ikon yang dikunci dengan tajuk:
SVG boleh menjadi terlalu nipis untuk diperhatikan dalam saiz yang lebih kecil, dan boleh terlalu tebal dan terlalu jelas dalam saiz yang lebih besar.
Saya terpaksa membuat dan memohon kelas untuk setiap contoh ikon untuk menentukan saiz dan lebar stroknya. Ini adalah OK jika ikon berada di sebelah tajuk yang menggunakan saiz fon tetap, tetapi ia tidak baik apabila menggunakan jenis cecair yang sentiasa berubah.
Saiz fon tajuk mungkin berdasarkan lebar paparan, jadi ikon SVG perlu diselaraskan dengan sewajarnya dan akan berfungsi dengan baik pada saiz apa pun. Anda boleh menetapkan lebar strok relatif kepada saiz fon tajuk dengan menggunakan unit EM. Walau bagaimanapun, jika anda perlu berpegang pada satu set saiz strok tertentu, kaedah ini tidak berfungsi kerana ia berskala secara linear - tanpa menggunakan pertanyaan media pada lebar viewport, anda tidak boleh menyesuaikannya dengan nilai lebar strok tertentu tanpa menggunakan pertanyaan media pada lebar viewport.
<code>.card { container: card / size; }</code>
Kandungan Tambahan: Jenis Pertanyaan Saiz Kontena Lain
Contoh -contoh yang saya gunakan dalam jawatan ini kebanyakannya lebar pertanyaan, lebar maksimum dan minimum, ketinggian, saiz blok, dan saiz sebaris.
<code>.card__inner { padding: 10cqw; } </code>
<code>.card__inner { font-size: 5cqw; padding: 2em; } </code>
<code>.card { container: card / size; container-name: card; font-size: 5cqw; }</code>
Saya tidak pernah menemui kes -kes penggunaan yang baik untuk kedua -dua mereka. Sekiranya anda mempunyai idea atau rasa ia dapat membantu anda dengan projek anda, sila beritahu saya dalam komen!
Atas ialah kandungan terperinci Beberapa kali pertanyaan saiz kontena akan membantu saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!