kami akan merancang UI pengelompokan yang sama. Tidak seperti penyusunan semula barangan yang dipilih, kami akan menggunakan grid CSS ke susun atur mendatar item yang dipilih untuk membezakan selanjutnya antara item yang dipilih dan tidak dipilih.
Kami akan meneroka dua kaedah. Satu menggunakan
, yang sesuai untuk situasi di mana item yang dipilih tidak melebihi sempadan bekas grid, memastikan susun atur yang stabil; auto-fill
span
Kod HTML dari dua kaedah adalah sama:
Kod
terdiri daripada senarai yang tidak teratur (
<ul></ul>
<label></label>
Kaedah 1: Gunakan
auto-fill
elemen
ul { width: 250px; display: grid; gap: 14px 10px; grid-template-columns: repeat(auto-fill, 40px); justify-content: center; /* ...其他样式... */ }
menentukan saiz lajur dalam grid. Dalam keadaan awal, semua item berada dalam satu lajur. Sebaik sahaja item dipilih, mereka akan bergerak ke baris pertama, dengan setiap item yang dipilih menduduki lajur. Kunci terletak pada nilai. <ul></ul>
Nilai display: grid
grid-template-columns
digunakan untuk bilangan pengulangan fungsi auto-fill
. Ia memastikan bahawa lajur diulang, setiap lajur mempunyai saiz trek yang diberikan dalam
auto-fill
untuk memastikan status awal item senarai adalah satu lajur: repeat()
repeat()
dipilih), gunakan pemilih
:li { width: inherit; grid-column: 1; /* 等同于:grid-column-start: 1; grid-column-end: auto; */ /* ...其他样式... */ }
<input>
Ini menyebabkan item yang dipilih dikelompokkan ke bahagian atas senarai dan disusun secara mendatar. :has(:checked)
li { width: inherit; grid-column: 1; /* ...其他样式... */ &:has(:checked) { grid-area: 1; /* 等同于:grid-row-start: 1; grid-column-start: auto; grid-row-end: auto; grid-column-end: auto; */ width: 40px; /* ...其他样式... */ } /* ...其他样式... */ }
Kaedah ini tidak memerlukan atribut span
. Gaya baru adalah seperti berikut:
grid-template-columns
<ul></ul>
membantu menyelaraskan item grid. Dikemaskini
ul { width: 250px; display: grid; gap: 14px 10px; justify-content: center; justify-items: center; /* ...其他样式... */ }
justify-items: center
Setiap item diletakkan di lajur pertama, tetapi sekarang mereka juga merangkumi enam trek lajur (kerana terdapat enam item). Ini memastikan bahawa apabila pelbagai lajur muncul dalam grid, item yang tidak dipilih selepas item yang dipilih tetap tunggal, di bawah item yang dipilih -item yang tidak dipilih kini merangkumi pelbagai trek lajur. <li>
Deklarasi akan menyimpan item yang berpusat.
li { width: inherit; grid-column: 1 / span 6; /* 等同于:grid-column-start: 1; grid-column-end: span 6; */ /* ...其他样式... */ }
Lebar item yang dipilih telah ditingkatkan untuk melihat susun atur UI yang dipilih apabila item melimpah bekas yang dipilih. justify-items: center
li { width: inherit; grid-column: 1 / span 6; /* ...其他样式... */ &:has(:checked) { grid-area: 1; width: 120px; /* ...其他样式... */ } /* ...其他样式... */ }
Perintah item yang dipilih dan tidak dipilih akan tetap sama dengan urutan sumber. Jika pesanan skrin diperlukan untuk memadankan pemilihan pengguna, nilai pesanan yang ditambah secara dinamik diberikan apabila item dipilih.
Ringkasan
Grid CSS menjadikan kedua -dua kaedah ini sangat fleksibel tanpa banyak konfigurasi. Dengan meletakkan item pada sama ada paksi (baris atau lajur) menggunakan auto-fill
, anda boleh dengan mudah mengumpulkan item yang dipilih ke dalam bekas grid tanpa menjejaskan susun atur item yang tidak dipilih dalam bekas yang sama, selagi item yang dipilih tidak melimpah bekas.
Jika item melimpah bekas, menggunakan kaedah span
membantu mengekalkan susun atur tanpa mengira panjang item yang dipilih pada paksi yang diberikan. Sesetengah alternatif reka bentuk untuk UI termasuk mengumpulkan item terpilih ke akhir senarai, atau menukar struktur mendatar dan menegak.
Atas ialah kandungan terperinci Pemilihan item senarai pemilihan bersama -sama dengan grid CSS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!