Tampilan hierarki (daftar yang dapat dilipat) hanya dapat dibuat menggunakan HTML dan CSS, tanpa perlu JavaScript. Perangkat lunak aksesibilitas akan melihat tampilan hierarki sebagai daftar bersarang di dalam widget pengungkapan, dan interaksi keyboard standar didukung secara otomatis.
Itu HTML
Kita mulai dengan HTML untuk daftar bersarang sederhana:
|
|
Kami kemudian menambahkan kelas ke terluar <ul>
elemen, dan untuk setiap item daftar yang berisi daftar bersarang, kami memasukkan konten item daftar di dalamnya <details>
dan <summary>
elemen, dengan menggunakan open
atribut untuk mengontrol daftar bersarang mana yang awalnya diperluas:
|
|
Tanpa gaya apa pun, ini HTML menghasilkan:
Browser mengimplementasikan <details>
elemen sebagai widget pengungkapan, memberikan kemampuan untuk memperluas dan menciutkan daftar bersarang, tetapi kombinasi poin-poin dan panah pengungkapan menghasilkan antarmuka pengguna yang membingungkan.
Properti khusus
Ada dua dimensi yang memengaruhi tata letak tampilan hierarki: jarak antar baris (yang sama dengan tinggi baris teks) dan radius penanda. Kita mulai dengan membuat properti khusus CSS untuk dimensi ini:
|
|
Meskipun kami biasanya menggunakan unit relatif untuk menskalakan kontrol antarmuka pengguna berdasarkan ukuran teks, untuk penanda ini dapat menyebabkan kontrol yang terlalu kecil atau terlalu besar, jadi kami akan menggunakan ukuran tetap yang wajar.
Lapisan
Kami kemudian menata item daftar dan daftar bersarang untuk memberi ruang bagi garis dan penanda:
|
|
Baris 7 menghapus poin-poin dari item daftar. Baris 8 menetapkan konteks susun baru dan berisi blok yang akan kita gunakan untuk memposisikan garis dan penanda.
Baris 9 mengindentasi item daftar. Lekukan sama dengan dua kali spasi, dikurangi radius penanda, dikurangi lebar garis dua piksel. Hasilnya adalah teks dalam item daftar akan sejajar dengan sisi kiri penanda di bawahnya.
Baris 13 menggunakan margin negatif untuk mengkompensasi indentasi yang diperkenalkan oleh baris 9, memastikan daftar bersarang diindentasi hanya dengan spasi yang diinginkan. Baris 14 menghapus padding default yang diterapkan browser ke daftar.
Pada tampilan hierarki dengan semua daftar bersarang yang awalnya diperluas, menerapkan gaya ini akan menghasilkan:
Garis vertikal
Selanjutnya kita menambahkan garis vertikal yang membentuk bagian dari garis yang menghubungkan penanda setiap item daftar ke penanda daftar bersarangnya:
|
|
Kami menggunakan batas untuk membuat garis, dan menyembunyikannya pada item terakhir di setiap daftar karena garis tidak boleh melewati penanda item ini. Membuat perbatasan transparan, daripada menghapusnya sepenuhnya, menghindari kebutuhan untuk menambah padding untuk mengkompensasi.
Menerapkan gaya ini menghasilkan:
Garis horizontal
Kami menggunakan konten yang dihasilkan untuk menambahkan garis horizontal yang menggabungkan garis vertikal ke penanda setiap item daftar:
|
|
Kode ini juga membuat garis vertikal pendek, karena garis vertikal yang dibuat sebelumnya tidak memanjang sampai ke penanda di ujung atas dan bawahnya.
Baris 26 dan 27 menghasilkan sebuah blok, dan baris 28 sampai 30 memposisikannya mulai dari titik tengah baris teks sebelumnya, tumpang tindih dengan garis vertikal di sebelah kirinya.
Baris 31 dan 32 mengatur ukuran balok. Perlu dua piksel lebih lebar dari jarak karena tumpang tindih dengan garis vertikal di sebelah kirinya, dan satu piksel lebih tinggi dari jarak karena setengah lebar garis horizontal terletak di bawah titik tengah baris teks. Perhatikan bahwa kami mengasumsikan penggunaan ukuran kotak batas, jadi dimensi ini menyertakan batas.
Baris 33 dan 34 membuat batas di sisi kiri dan bawah blok.
Menerapkan gaya ini menghasilkan:
Ringkasan
Selanjutnya kami menghapus gaya default dari ringkasan:
|
|
Baris 38 dan 44 menghapus panah pengungkapan. Baris 44 diperlukan untuk Safari, dengan dua pemilih pada baris 42 dan 43 mencakup versi browser yang berbeda. Baris 39 mengubah kursor untuk menunjukkan bahwa ringkasan dapat diklik untuk berinteraksi dengannya.
Safari menampilkan indikator fokus di sekitar ringkasan, bahkan saat menggunakan penunjuk daripada navigasi keyboard, jadi kami menghapus gaya fokus pada baris 48 dan kemudian menggunakan :focus-visible
pseudo-class untuk menambahkannya kembali untuk pengunjung menggunakan navigasi keyboard di baris 52.
Menerapkan gaya ini menghasilkan:
Penanda
Kami menggunakan konten yang dihasilkan lagi untuk membuat penanda:
|
|
Perhatikan bahwa kami membuat penanda untuk keduanya <li>
elemen (untuk item daftar yang tidak berisi daftar bersarang) dan untuk <summary
elemen, memungkinkan item daftar yang berisi daftar bersarang memiliki gaya penanda yang berbeda bergantung pada apakah daftar bersarang diperluas atau diciutkan.
Baris 57 dan 58 menghasilkan sebuah blok, dan baris 59 sampai 61 memusatkannya di sudut tempat garis horizontal dan vertikal bertemu. Bagian atas diposisikan di titik tengah baris teks, minus radius. Kiri diposisikan di tepi garis vertikal, dikurangi jari-jarinya, dikurangi satu piksel yang sesuai dengan setengah lebar garis.
Baris 62 dan 63 mengatur ukuran balok, dan baris 64 dan 65 memberi gaya sebagai lingkaran.
Menerapkan gaya ini menghasilkan:
Perluas dan ciutkan tombol
Terakhir, kami menambahkan tombol perluas dan ciutkan:
|
|
Baris 69 dan 78 menunjukkan tanda plus dan minus pada tombol. Perhatikan bahwa kami menggunakan tanda minus yang sebenarnya (−) daripada tanda hubung (-) karena ini cocok dengan tampilan tanda tambah, sedangkan di sebagian besar font tanda hubung lebih sempit dan lebih rendah.
Baris 70 menyebabkan tombol ditampilkan di atas penanda yang dibuat sebelumnya. Karena penanda dibuat menggunakan ::after
jika tidak, itu akan ditampilkan di atas tombol.
Baris 71 hingga 74 mengatur warna tombol dan memusatkan teksnya, dengan font khusus ini memerlukan a 2px
penyesuaian vertikal pada baris 73.
Menerapkan gaya ini menghasilkan tampilan hierarki yang telah selesai:
Kode selesai
Menggabungkan semua hal di atas mengarah ke kode yang sudah jadi:
|
|
Pengeluaran hk tercepat hari ini berasal dari website togel Data SGP pools https://unzensiert-privat.com/ hasil keluaran hk terkini tiap hari. Dengan kenakan rekapan bagan knowledge hk prize, Pasti mempermudah bettor di dalam memandang nomor pengeluaran SGP hari ini. Di mana tiap hasil pengeluaran hk https://stokedmovie.com/ ini terkini tetap kita pembaharuan menjajaki result keluaran hongkong terkini berasal dari hongkongpools.com. Tujuannya supaya para penggemar judi togel https://genhouse-sweden.com/ di Indonesia mampu bersama dengan mudahnya mengenali hasil hk hari ini terkini dan juga benar-benar kilat.