dengan
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"..." akan ditampilkan di akhir baris jika meluap. Namun, ini hanya akan ditampilkan dalam satu baris. Tapi saya ingin ditampilkan dalam multi-baris.
Ini mungkin terlihat seperti:
+--------------------+
|abcde feg hij dkjd|
|dsji jdia js ajid s|
|jdis ajid dheu d ...|/*Here it's overflowed, so "..." is shown. */
+--------------------+
Jawaban:
Ada juga beberapa plugin jquery yang menangani masalah ini, tetapi banyak yang tidak menangani banyak baris teks. Karya berikut:
Ada juga beberapa tes dalm .
sumber
Saya telah meretas sampai saya berhasil mencapai sesuatu yang dekat dengan ini. Itu datang dengan beberapa peringatan:
Saya juga harus mencatat bahwa teks akan dipecah pada batas kata, bukan batas karakter. Ini disengaja (karena saya menganggap itu lebih baik untuk teks yang lebih panjang), tetapi karena berbeda dari apa
text-overflow: ellipsis
, saya pikir saya harus menyebutkannya.Jika Anda dapat hidup dengan peringatan ini, HTML akan terlihat seperti ini:
Dan ini adalah CSS yang sesuai, menggunakan contoh kotak lebar 150 piksel dengan tiga baris teks pada latar belakang putih. Ini mengasumsikan Anda memiliki reset CSS atau yang serupa yang menetapkan margin dan bantalan ke nol jika diperlukan.
Hasilnya terlihat seperti ini:
Untuk memperjelas cara kerjanya, inilah gambar yang sama, kecuali yang
.hidedots1
berwarna merah, dan.hidedots2
cyan. Ini adalah persegi panjang yang menyembunyikan elips ketika tidak ada teks yang tidak terlihat:Diuji dalam IE9, IE8 (ditiru), Chrome, Firefox, Safari, dan Opera. Tidak berfungsi di IE7.
sumber
your text
dibungkus dengan<p>
tag (seperti yang seharusnya), maka Anda dapat menggunakan.ellipsify p:before
dan.ellipsify p:after
kemudian tentu saja Anda perlu.ellipsify p:before{content:"\2026";}
yang\2026
adalah kode untuk elipsis, juga, mungkin perlucontent:" ";
karena mereka mungkin tidak bekerja untuk elemen kosong.+1
ing it.Inilah artikel trik-css terbaru yang membahas hal ini.
Beberapa solusi dalam artikel di atas (yang tidak disebutkan di sini) adalah
1)
-webkit-line-clamp
dan 2) Tempatkan elemen yang benar-benar diposisikan di kanan bawah dengan fade outKedua metode mengasumsikan markup berikut:
dengan css
1) -webkit-line-clamp
line-clamp FIDDLE (..untuk maksimal 3 baris)
2) menghilang
Fade out FIDDLE
Solusi # 3 - Kombinasi menggunakan @supports
Kita dapat menggunakan @supports untuk menerapkan penjepit baris webkit di browser webkit dan menerapkan fade out di browser lain.
@mendukung line-clamp dengan fade fallback fiddle
CSS
sumber
Tautan di bawah ini menyediakan solusi HTML / CSS murni untuk masalah ini.
Dukungan browser - sebagaimana dinyatakan dalam artikel:
http://www.mobify.com/dev/multiline-ellipsis-in-pure-css
css:
html:
yang biola
(mengubah ukuran jendela browser untuk pengujian)
sumber
Chrome for Mac Version 48.0.2564.116
Setelah melihat spesifikasi W3 untuk text-overflow , saya tidak berpikir ini mungkin hanya menggunakan CSS. Ellipsis adalah properti new-ish, jadi mungkin belum menerima banyak penggunaan atau umpan balik.
Namun, orang ini tampaknya telah mengajukan pertanyaan yang serupa (atau identik), dan seseorang dapat menemukan solusi jQuery yang bagus. Anda dapat demo solusinya di sini: http://jsfiddle.net/MPkSF/
Jika javascript bukan opsi, saya pikir Anda mungkin kurang beruntung ...
sumber
Hanya ingin menambahkan pertanyaan ini demi kelengkapan.
sumber
-o-ellipsis-lastline
mungkin telah dihapus ketika Opera beralih ke WebKit. Meninggalkan peluru untuk tujuan sejarah.Pertanyaan yang bagus ... Saya berharap ada jawaban, tapi ini adalah yang terdekat yang bisa Anda dapatkan dengan CSS hari ini. Tidak ada elipsis, tetapi masih bisa digunakan.
sumber
Saya telah menemukan solusi css (scss) ini yang bekerja dengan sangat baik. Pada browser webKit ia menunjukkan elipsis dan pada browser lain itu hanya memotong teks. Yang baik untuk penggunaan yang saya maksudkan.
Contoh oleh pencipta: http://codepen.io/martinwolf/pen/qlFdp
sumber
-webkit-line-clamp
dukungan browser caniuse.com/#search=-webkit-line-clampIni adalah solusi terdekat yang bisa saya gunakan hanya dengan css.
HTML
CSS
Working Fiddle ( mengubah ukuran jendela untuk memeriksa )
Tautan ke blog saya untuk penjelasan
Biola yang Diperbarui
Saya harap sekarang beberapa ahli css akan mendapat ide tentang bagaimana membuatnya sempurna. :)
sumber
div::before
bukan yangspan
? :)Ada banyak jawaban di sini tetapi saya membutuhkannya:
Peringatannya adalah bahwa ia tidak menyediakan elipsis untuk browser yang tidak mendukung
-webkit-line-clamp
aturan (saat ini IE, Edge, Firefox) tetapi tidak menggunakan gradien untuk memudar teks mereka.Anda dapat melihatnya beraksi di CodePen ini dan Anda juga dapat melihat versi Javascript di sini (tanpa jQuery).
sumber
Agak terlambat ke pesta ini tetapi saya datang dengan, apa yang saya pikirkan, adalah solusi unik. Daripada mencoba memasukkan elipsis Anda sendiri melalui tipuan css atau js saya pikir saya akan mencoba dan roll dengan satu-satunya batasan garis. Jadi saya menduplikasi teks untuk setiap "baris" dan hanya menggunakan indentasi teks negatif untuk memastikan satu baris dimulai di mana yang terakhir berhenti. BIOLA
CSS:
HTML:
Lebih detail di biola. Ada masalah dengan peramban yang direfleksikan bahwa saya menggunakan redraw JS untuk dan sebagainya, jadi periksalah, tetapi ini adalah konsep dasarnya. Setiap pemikiran / saran sangat dihargai.
sumber
terima kasih @balpha dan @Kevin, saya menggabungkan dua metode bersama.
tidak dibutuhkan js dalam metode ini.
Anda dapat menggunakan
background-image
dan tidak ada gradien yang diperlukan untuk menyembunyikan titik.yang
innerHTML
dari.ellipsis-placeholder
tidak diperlukan, saya menggunakan.ellipsis-placeholder
untuk menjaga lebar yang sama dan tinggi dengan.ellipsis-more
. Anda bisa menggunakannyadisplay: inline-block
sebagai gantinya.jsfiddler
sumber
solusi javascript akan lebih baik
is-ellipsis
kelas jika ukuran jendela atau perubahan elmentgetRowRects
Element.getClientRects()
bekerja seperti inisetiap rect di baris yang sama memiliki nilai yang sama
top
, jadi cari tahu rect dengantop
nilai yang berbeda , seperti inimengapung
...more
seperti ini
mendeteksi ukuran jendela atau elemen diubah
seperti ini
sumber
lihat lebih banyak klik di sini
sumber
basis metode css murni pada -webkit-line-clamp:
sumber
Saya menemukan trik javascript, tetapi Anda harus menggunakan panjang string. Katakanlah Anda ingin 3 baris lebar 250px, Anda dapat menghitung panjang per baris yaitu
sumber