Saya ingin membuat daftar yang "secara tata bahasa benar" menggunakan CSS. Inilah yang saya miliki sejauh ini:
The <li>
tag ditampilkan secara horizontal dengan koma setelah mereka.
li { display: inline; list-style-type: none; }
li:after { content: ", "; }
Itu berhasil, tapi saya ingin "anak terakhir" memiliki titik, bukan koma. Dan, jika memungkinkan, saya juga ingin meletakkan "dan" sebelum "anak terakhir". Daftar yang saya buat gaya dibuat secara dinamis, jadi saya tidak bisa begitu saja memberi kelas "anak-anak terakhir". Anda tidak dapat menggabungkan elemen pseudo, tetapi pada dasarnya itulah efek yang ingin saya capai.
li:last-child li:before { content: "and "; }
li:last-child li:after { content: "."; }
Bagaimana cara membuat ini berfungsi?
Jawaban:
Ini berfungsi :) (Saya harap multi-browser, Firefox menyukainya)
sumber
li:last-child:after
bekerja tetapili:after:last-child
tidak.:last-child
itu bukan milik spesifikasi CSS3, jadi tidak didukung oleh IE8 dan versi sebelumnya.Saya suka ini untuk item daftar di elemen <menu>. Pertimbangkan markup berikut:
Saya menatanya dengan CSS berikut:
Ini akan menampilkan:
Dan ini dimungkinkan karena apa yang dijelaskan Martin Atkins dalam komentarnya
Perhatikan bahwa di CSS 2 Anda akan menggunakan
:after
, bukan::after
. Jika Anda menggunakan CSS 3, gunakan::after
(dua semi-kolom) karena::after
merupakan pseudo-element (satu semi-kolom untuk pseudo-class).sumber
Sebuah utas lama, namun seseorang bisa mendapatkan keuntungan dari ini:
Ini harus bekerja di CSS3 dan CSS2 [belum diuji].
sumber
Anda bisa menggabungkan elemen semu! Maaf teman-teman, saya menemukan yang ini sendiri tak lama setelah memposting pertanyaan. Mungkin itu kurang umum digunakan karena masalah kompatibilitas.
li:last-child:before { content: "and "; }
li:last-child:after { content: "."; }
Ini bekerja dengan baik. CSS itu luar biasa.
sumber
last-child
is a modifier on theli
, lalu setelah Anda memilih semuali
elemen yang merupakan turunan terakhir, Anda kemudian memilih (dan secara implisit membuat) elemen baru sebelum dan sesudah masing-masing.Sekadar menyebutkan, di CSS 3
harus digunakan seperti ini
Dari https://developer.mozilla.org/de/docs/Web/CSS/::after :
Jadi seharusnya:
sumber
::
sintaks titik dua ganda CSS3 juga mendukung:
sintaks, tetapi IE 8 hanya mendukung titik dua tunggal, jadi untuk saat ini, disarankan untuk hanya menggunakan titik dua tunggal untuk dukungan browser terbaik.::
adalah format lebih baru yang diindentasi untuk membedakan konten semu dari pemilih semu. Jika Anda tidak memerlukan dukungan IE 8, silakan gunakan titik dua ganda. Dari artikelMenambahkan jawaban lain untuk pertanyaan ini karena saya membutuhkan secara tepat apa yang diminta @derek dan saya sudah melangkah lebih jauh sebelum melihat jawabannya di sini. Secara khusus, saya membutuhkan CSS yang juga dapat menjelaskan kasus dengan tepat dua item daftar, di mana koma TIDAK diinginkan. Sebagai contoh, beberapa byline kepenulisan yang ingin saya buat akan terlihat seperti berikut:
Satu penulis:
By Adam Smith.
Dua penulis:
By Adam Smith and Jane Doe.
Tiga penulis:
By Adam Smith, Jane Doe, and Frank Underwood.
Solusi yang telah diberikan di sini berfungsi untuk satu penulis dan untuk 3 penulis atau lebih, tetapi lalai untuk memperhitungkan kasus dua penulis — di mana gaya "Oxford Comma" (juga dikenal sebagai gaya "Harvard Comma" di beberapa bagian) tidak berlaku - yaitu, tidak boleh ada koma sebelum konjungsi.
Setelah sore mengutak-atik, saya menemukan yang berikut:
Ini menampilkan bylines seperti yang saya dapatkan di atas.
Pada akhirnya, saya juga harus membuang spasi di antara
li
elemen, untuk menghindari gangguan: properti inline-block akan meninggalkan spasi sebelum setiap koma. Mungkin ada peretasan alternatif yang layak untuk itu tetapi itu bukan subjek pertanyaan ini jadi saya akan menyerahkannya kepada orang lain untuk menjawab.Biola di sini: http://jsfiddle.net/5REP2/
sumber
Untuk memiliki sesuatu seperti Satu, dua dan tiga Anda harus menambahkan satu gaya css lagi
Ini akan menghapus koma dari elemen terakhir kedua.
Kode Lengkap
sumber
Saya menggunakan teknik yang sama dalam kueri media yang secara efektif mengubah daftar peluru menjadi daftar sebaris pada perangkat yang lebih kecil karena mereka menghemat ruang.
Jadi perubahan dari:
untuk:
Daftar Item 1; Daftar Item 2; Daftar Item 3.
sumber