Menggunakan CSS, bagaimana saya bisa menata yang berikut:
<dl>
<dt>Mercury</dt>
<dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
<dt>Venus</dt>
<dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
<dt>Earth</dt>
<dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
</dl>
jadi konten dt
acara di satu kolom dan konten dd
di kolom lain, dengan masing-masing dt
dan yang sesuai dd
pada baris yang sama? Yaitu memproduksi sesuatu yang terlihat seperti:
Jawaban:
sumber
clear: left
gaya dt untuk memastikan mereka tetap sejajar bahkan jika mereka perlu membungkus.* { ... }
Pernyataan membuat segalanya kehilangan margin dan padding, dan menghapus mendistorsi DL. Menggunakan kelas juga tidak akan berhasil. Tampaknya jika saya menginginkan sesuatu selain DL saya harus pergi tanpa margin dan bantalan di mana-mana ... Atau?Saya sudah mendapat solusi tanpa menggunakan pelampung!
periksa ini pada codepen
Yaitu.
Update - 3 rd 2017 Jan: solusi berbasis Saya telah menambahkan flex-kotak untuk masalah tersebut. Periksa bahwa dalam codepen tertaut & perbaiki sesuai kebutuhan. Terima kasih!
sumber
Tata letak Grid CSS
Untuk mengubah ukuran kolom, lihat
grid-template-columns
properti.sumber
Jika Anda menggunakan Bootstrap 3 (atau lebih lama) ...
sumber
dl-horizontal
benar-benar turun dari Bootstrap 4. Dalam BS4, Anda perlu menggunakan kelas jaringan sebagai gantinya.Dengan asumsi Anda tahu lebar margin:
sumber
Karena saya belum melihat contoh yang berfungsi untuk kasus penggunaan saya, berikut adalah solusi paling lengkap yang dapat saya sadari.
Anehnya, itu tidak berhasil
display: inline-block
. Saya kira bahwa jika Anda perlu mengatur ukurandt
elemen ataudd
elemen, Anda dapat mengaturdl
tampilan sebagaidisplay: flexbox; display: -webkit-flex; display: flex;
danflex
singkatan daridd
elemen dandt
elemen sebagai sesuatu sepertiflex: 1 1 50%
dandisplay
sebagaidisplay: inline-block
. Tapi saya belum mengujinya, jadi dekati dengan hati-hati.sumber
Lihat demo jsFiddle
Saya membutuhkan daftar persis seperti yang dijelaskan untuk proyek yang menunjukkan karyawan di sebuah perusahaan, dengan foto mereka di sebelah kiri, dan informasi di sebelah kanan. Saya berhasil menyelesaikan kliring dengan menggunakan psuedo-elements setelah setiap
DD
:Selain itu, saya ingin teks hanya ditampilkan di sebelah kanan gambar, tanpa membungkus di bawah gambar melayang (efek pseudo-kolom). Ini dapat dilakukan dengan menambahkan
DIV
elemen dengan CSSoverflow: hidden;
sekitar kontenDD
tag. Anda dapat menghilangkan ini ekstraDIV
, tetapi kontenDD
tag akan membungkus di bawah mengambangDT
.Setelah bermain dengannya sebentar, saya dapat mendukung beberapa
DT
elemen perDD
, tetapi tidak beberapaDD
elemen perDT
. Saya mencoba menambahkan kelas opsional lain untuk menghapus hanya setelah yang terakhirDD
, tetapiDD
elemen berikutnya dibungkus denganDT
elemen (bukan efek yang saya inginkan ... Saya inginDT
danDD
elemen membentuk kolom, danDD
elemen tambahan terlalu lebar).Dengan semua hak, ini seharusnya hanya berfungsi di IE8 +, tetapi karena kekhasan di IE7 ia bekerja di sana juga.
sumber
Berikut opsi lain yang berfungsi dengan menampilkan dt dan dd sebaris dan kemudian menambahkan jeda baris setelah dd.
Ini mirip dengan solusi Navaneeth di atas, tetapi menggunakan pendekatan ini, konten tidak akan berbaris seperti dalam tabel, tetapi dd akan mengikuti dt segera di setiap baris tanpa memperhatikan panjangnya.
sumber
Saya perlu melakukan ini dan memiliki
<dt>
konten yang terpusat secara vertikal, relatif terhadap<dd>
konten. Saya menggunakandisplay: inline-block
, bersama denganvertical-align: middle
Lihat contoh lengkap tentang Codepen di sini
sumber
Bergantung pada bagaimana Anda mengatur elemen dt dan dd, Anda mungkin mengalami masalah: membuatnya memiliki ketinggian yang sama. Misalnya, jika Anda ingin tetapi beberapa perbatasan terlihat di bagian bawah elemen-elemen itu, Anda mungkin ingin menampilkan perbatasan pada ketinggian yang sama, seperti dalam sebuah tabel.
Salah satu solusi untuk ini adalah menipu dan membuat setiap baris elemen "dl". (Ini setara dengan menggunakan tr dalam sebuah tabel) Kami kehilangan minat asli dari daftar definisi, tetapi pada counterpart ini adalah cara yang mudah untuk mendapatkan pseudo-tables yang cepat dan cukup bergaya.
THE CSS:
THE HTML:
sumber
quatreVingtCinqPts
? :)Saya telah menemukan solusi yang menurut saya sempurna, tetapi perlu
<div>
tag tambahan . Ternyata tidak perlu menggunakan<table>
tag untuk menyelaraskan seperti pada tabel, cukup untuk digunakandisplay:table-row;
dandisplay:table-cell;
gaya:sumber
dl
s hanya diperbolehkan memilikidt
dandd
sebagai anak-anak.dt
s hanya dapat memiliki elemen sebaris sebagai anak-anak.dd
s, karena alasan tertentu, dapat memiliki elemen tingkat blok sebagai anak-anak.DI
elemen, seperti saya sendiri . Tetapi dengan elemen seperti itu, Anda tidak memerlukan hal-hal esoterik seperti tabel CSS sama sekali ... Bagaimanapun, elemen itu tidak ada, dan karenanya Anda tidak boleh menggunakannya.run-in
CSSdisplay
persis seperti yang saya inginkan (dalam kasus saya, saya ingin daftar metadata nilai-nama sederhana).Baru-baru ini saya perlu mencampur pasangan inline dan non-inline dt / dd, dengan menentukan kelas
dl-inline
pada<dt>
elemen yang harus diikuti oleh<dd>
elemen inline .sumber
Ini berfungsi pada IE7 +, memenuhi standar, dan memungkinkan ketinggian yang berbeda.
Lihat JSFiddle .
sumber
ini berfungsi untuk menampilkan mereka sebagai tabel, dengan perbatasan, itu harus responsif dengan lebar kolom pertama. Pembungkus kata hanya memecah kata-kata yang lebih luas dari kolom
Perbandingan
<table>
dengan<dl>
:sumber
Saya biasanya mulai dengan yang berikut ini ketika definisi definisi daftar sebagai tabel:
sumber
Sebagian besar yang disarankan orang di sini berfungsi, namun Anda hanya boleh menempatkan kode generik ke dalam style sheet, dan menempatkan kode spesifik ke dalam kode html seperti yang ditunjukkan di bawah ini. Kalau tidak, Anda akan berakhir dengan style sheet yang membengkak.
Inilah cara saya melakukannya:
Kode style sheet Anda:
Kode html Anda:
Terlihat seperti ini
sumber