Ada beberapa soalan yang dilihat di sini, tetapi ia tidak cukup menyelesaikan masalah yang saya cari.
Andaikan saya mempunyai laman web dan saya mahukannya. Pada desktop saya mahukan ini:
Mudah sahaja. grid-template-columns: 重复(3, 33%)
(Pada asasnya)
Tetapi, pada telefon bimbit, saya mahukan ini
Apa yang saya temui berlaku sebelum ia bertukar kepada satu lajur:
Saya cuba clamp()
、minmax()
dan semua jenis barangan, tetapi tiada apa yang berfungsi seperti yang saya mahukan. Ya, saya pasti boleh menggunakan pertanyaan media, tetapi saya ingin mencipta susun atur grid/flex yang benar-benar cair menggunakan CSS moden (seperti pengapit, grid, minmax, dll.) supaya tiada pertanyaan media diperlukan untuk membuat perubahan reka letak asas. < /p>
Saya tahu ini tidak berfungsi, tetapi sebagai titik permulaan untuk permintaan, berikut ialah versi ringkas salah satu daripada 100 percubaan saya :) Dalam versi ini, saya cuba beralih daripada repeat(3) kepada repeat(1) menggunakan pengapit) .
.wrapper { display: grid; gap: 15px; grid-template-columns: repeat(clamp(1, calc(100% - 500px), 3), 33%); } .one { background: red; } .two { background: green; } .three { background: blue; }
<div class="wrapper"> <div class="item one"><h3>Example A</h3></div> <div class="item two"><h3>Example Two</h3></div> <div class="item three"><h3>Third Example</h3></div> </div>
Artikel penuh dengan peraturan yang lebih umum: https://css-tricks.com/responsive-layouts-fewer-media-queries/
Ini digunakan dalam asas fleksibel
max(0px, (400px - 100vw)*1000)
的想法。如果100vw
(屏幕尺寸)大于400px
,则此公式将给出0px
,或者在相反情况下给出一个非常大的值,为每个元素提供一个bigflex-basis
并创建一个包装。只需调整400px
即可扮演@media (max-width:400px)
Menggunakan Grid CSS, ia boleh kelihatan seperti ini:
Soalan serupa di mana saya mengawal bilangan maksimum lajur tanpa pertanyaan media: Grid CSS - Bilangan maksimum lajur tanpa pertanyaan media
Kami boleh melanjutkan penyelesaian di atas untuk mempertimbangkan kes yang lebih kompleks.
Contoh peralihan daripada 6 lajur kepada 3 lajur kepada 1 lajur:
Untuk memahami nilai ini, pertimbangkan julat berikut:
Untuk mendapatkan 6 lajur kami perlukan
]14.3% 16.7%]
范围内的值(我考虑的是15%
) Untuk mendapatkan 3 ruangan kita perlukan]25% 33.3%]
范围内的值(我考虑的是30%
)Kami hanya mengelakkan tepi untuk memastikan kami mengambil kira jurang.
Penyelesaian yang lebih umum menggunakan pembolehubah CSS, di mana saya akan menambah
0.1%
untuk memastikan nilainya cukup besar untuk mendapatkan bilangan lajur yang diingini dan boleh menampung jurang.Kami juga menambah beberapa pewarna dinamik (berkaitan: Bagaimana untuk menukar warna elemen berdasarkan ketinggian atau lebarnya? )
Dengan flexbox kita boleh mempunyai gelagat berbeza (mungkin diingini) di mana item terakhir baris akan menggunakan semua ruang yang ada: