Apakah ada cara yang baik untuk memotong teks dengan HTML dan CSS biasa, sehingga konten dinamis dapat masuk dalam tata letak lebar dan tinggi tetap?
Saya telah memotong sisi server dengan lebar logis (yaitu sejumlah karakter yang dapat ditebak secara membabi buta), tetapi karena 'w' lebih lebar daripada 'i' ini cenderung suboptimal, dan juga mengharuskan saya untuk menebak ulang ( dan terus mengutak-atik) jumlah karakter untuk setiap lebar tetap. Idealnya pemotongan akan terjadi di browser, yang mengetahui lebar fisik dari teks yang diberikan.
Saya telah menemukan bahwa IE memiliki text-overflow: ellipsis
properti yang melakukan persis apa yang saya inginkan, tetapi saya perlu ini menjadi cross-browser. Properti ini tampaknya (agak?) Standar tetapi tidak didukung oleh Firefox. Saya telah menemukan berbagai pemecahan masalah berdasarkan overflow: hidden
, tetapi mereka juga tidak menampilkan elipsis (Saya ingin pengguna tahu kontennya terpotong), atau menampilkannya sepanjang waktu (bahkan jika kontennya tidak terpotong).
Apakah ada yang punya cara yang baik untuk menyesuaikan teks dinamis dalam tata letak yang tetap, atau apakah pemotongan sisi server dengan lebar logis sebagus yang akan saya dapatkan untuk saat ini?
Jawaban:
Pembaruan:
text-overflow: ellipsis
sekarang didukung pada Firefox 7 (dirilis 27 September 2011). Yay! Jawaban asli saya mengikuti sebagai catatan sejarah.Justin Maxwell memiliki solusi lintas browser CSS. Itu memang datang dengan kelemahan tetapi tidak memungkinkan teks dipilih di Firefox. Lihat posting tamu di blog Matt Snider untuk detail lengkap tentang cara kerjanya.
Perhatikan teknik ini juga mencegah pembaruan konten node dalam JavaScript menggunakan
innerHTML
properti di Firefox. Lihat akhir posting ini untuk solusinya.CSS
ellipsis.xml
isi fileMemperbarui konten simpul
Untuk memperbarui konten simpul dengan cara yang berfungsi di Firefox gunakan yang berikut ini:
Lihat posting Matt Snider untuk penjelasan tentang cara kerjanya .
sumber
text-overflow
tidak menunjukkan dukungan untukoption
elemen (lihat bagian Berlaku Ke di msdn.microsoft.com/en-us/library/ms531174(VS.85).aspx ).2014 Maret: Memotong string panjang dengan CSS: jawaban baru dengan fokus pada dukungan browser
Demo di http://jsbin.com/leyukama/1/ (saya menggunakan jsbin karena mendukung IE versi lama).
Properti CSS -ms-text-overflow tidak diperlukan: properti sinonim dari properti CSS text-overflow, tetapi versi IE dari 6 hingga 11 sudah mendukung properti CSS teks-overflow.
Berhasil diuji (di Browserstack.com) pada OS Windows, untuk browser web:
Firefox: seperti yang ditunjukkan oleh Simon Lieschke (dalam jawaban lain), Firefox hanya mendukung properti CSS teks-overflow dari Firefox 7 dan seterusnya (dirilis 27 September 2011).
Saya memeriksa perilaku ini dua kali pada Firefox 3.0 & Firefox 6.0 (teks-overflow tidak didukung).
Beberapa pengujian lebih lanjut pada browser web Mac OS akan diperlukan.
Catatan: Anda mungkin ingin menampilkan tooltip di mouse ketika elipsis diterapkan, ini bisa dilakukan melalui javascript, lihat pertanyaan ini: Deteksi ellipsis HTML-overflow teks dan HTML - bagaimana saya bisa menunjukkan tooltip SAJA saja ketika elipsis diaktifkan
Sumber:
sumber
Jika Anda setuju dengan solusi JavaScript, ada plug-in jQuery untuk melakukan ini dalam mode lintas-browser - lihat http://azgtech.wordpress.com/2009/07/26/text-overflow-ellipsis-for -firefox-via-jquery /
sumber
OK, Firefox 7 diimplementasikan
text-overflow: ellipsis
sertatext-overflow: "string"
. Rilis final direncanakan untuk 2011-09-27.sumber
Solusi lain untuk masalah ini adalah seperangkat aturan CSS berikut:
Satu-satunya kelemahan dengan CSS di atas adalah bahwa ia akan menambahkan "..." terlepas dari apakah teks-meluap wadah atau tidak. Namun, jika Anda memiliki kasus di mana Anda memiliki banyak elemen dan yakin bahwa konten akan meluap, yang ini akan menjadi seperangkat aturan yang lebih sederhana.
Dua sen saya. Tutup ke teknik asli oleh Justin Maxwell
sumber
position: absolute; right: 0;
(dan jangan lupaposition: relative
pada elemen nyata agar bisa berfungsi). Akan tumpang tindih dengan teks sehingga Anda mungkin ingin menambahkan warna latar belakang juga.