Saya memiliki halaman web dengan tata letak elastis yang mengubah lebarnya jika jendela browser diubah ukurannya.
Dalam tata letak ini ada tajuk ( h2
) yang akan memiliki panjang variabel (sebenarnya menjadi tajuk utama dari blogpost yang saya tidak punya kendali atas). Saat ini - jika mereka lebih lebar dari jendela - mereka dipecah menjadi dua baris.
Apakah ada solusi (lintas-peramban) yang elegan dan teruji - misalnya dengan jQuery - yang memperpendek innerHTML tag judul itu dan menambahkan "..." jika teks akan terlalu lebar untuk masuk ke dalam satu baris pada layar saat ini / lebar kontainer?
Jawaban:
Saya punya solusi untuk FF3, Safari dan IE6 + dengan teks tunggal dan multiline
jquery.ellipsis.js
sumber
Solusi khusus CSS berikut untuk memotong teks pada satu baris berfungsi dengan semua browser yang terdaftar di http://www.caniuse.com pada saat penulisan dengan pengecualian Firefox 6.0. Perhatikan bahwa JavaScript sama sekali tidak perlu kecuali Anda perlu mendukung pembungkus teks multiline atau versi Firefox yang lebih lama.
Jika Anda memerlukan dukungan untuk versi Firefox yang lebih lama, periksa jawaban saya untuk pertanyaan lain ini .
sumber
Saya membuat kode ini menggunakan sejumlah posting lain, dengan perangkat tambahan berikut:
display: block
ke gaya, sehingga bentang bekerjaCSS:
jquery.ellipsis.js
sumber
Jawaban saya hanya mendukung teks baris tunggal. Lihat komentar gfullam di bawah ini untuk garpu multi-baris, sepertinya cukup menjanjikan.
Saya menulis ulang kode dari jawaban pertama beberapa kali, dan saya pikir ini harus menjadi yang tercepat.
Pertama-tama ia menemukan panjang teks "Estimasi", dan kemudian menambahkan atau menghapus karakter hingga lebarnya benar.
Logika yang digunakan ditunjukkan di bawah ini:
Setelah panjang teks "diperkirakan" ditemukan, karakter ditambahkan atau dihapus sampai lebar yang diinginkan tercapai.
Saya yakin ini perlu beberapa penyesuaian, tapi ini kodenya:
sumber
Untuk berjaga-jaga jika Anda berakhir di sini pada tahun 2013 - ini adalah pendekatan css murni yang saya temukan di sini: http://css-tricks.com/snippets/css/truncate-string-with-ellipsis/
Ini bekerja dengan baik.
sumber
text-overflow
tidak bekerja dengantextarea
elemen (per 2015). Jika Anda memerlukan dukungan untuk itu,textarea
Anda dapat mencapainya dengan memodifikasi jawaban yang diterima atau dengan menggunakan garpu ini .Saya membuat plugin jQuery yang sangat keren untuk menangani semua jenis ellipsis teks yang disebut ThreeDots @ http://tpgblog.com/threedots
Ini jauh lebih fleksibel daripada pendekatan CSS, dan mendukung perilaku dan interaksi yang jauh lebih maju dan dapat disesuaikan.
Nikmati.
sumber
Plugin jQuery yang lebih fleksibel memungkinkan Anda untuk menyimpan elemen setelah elipsis (misalnya tombol "baca-lebih") dan perbarui onWindowResize. Ini juga berfungsi di sekitar teks dengan markup:
http://dotdotdot.frebsite.nl
sumber
trunk8 jQuery plugin mendukung banyak baris, dan dapat menggunakan html apa saja, tidak hanya karakter ellipsis, untuk akhiran pemotongan: https://github.com/rviscomi/trunk8
Demo di sini: http://jrvis.com/trunk8/
sumber
Sebenarnya ada cara yang cukup mudah untuk melakukan ini dalam CSS mengeksploitasi fakta bahwa IE memperluas ini dengan non-standar dan dukungan FF
:after
Anda juga dapat melakukan ini di JS jika Anda ingin dengan memeriksa scrollWidth dari target dan membandingkannya dengan lebar orang tuanya, tetapi jika ini kurang kuat.
Sunting: ini tampaknya lebih berkembang daripada yang saya kira. Dukungan CSS3 mungkin segera ada, dan beberapa ekstensi tidak sempurna tersedia untuk Anda coba.
Yang terakhir adalah bacaan yang baik.
sumber
Saya telah melakukan sesuatu yang serupa untuk klien baru-baru ini. Berikut adalah versi dari apa yang saya lakukan untuk mereka (contoh diuji di semua versi browser terbaru di Win Vista). Tidak sempurna di seluruh papan, tetapi bisa di-tweak cukup mudah.
Demo: http://enobrev.info/ellipsis/
Kode:
sumber
Nah, satu solusi sederhana, itu tidak cukup menambahkan "...", tetapi mencegah <h2> dari memecah menjadi dua baris adalah menambahkan sedikit css ini:
Saya memikirkannya lagi, dan saya datang dengan solusi ini, Anda harus membungkus konten tekstual dari tag h2 Anda dengan tag lain (mis. Rentang) (atau membungkus h2s dengan sesuatu yang memiliki ketinggian tertentu) dan kemudian Anda dapat menggunakan javascript semacam ini untuk memfilter kata-kata yang tidak dibutuhkan:
sumber
Inilah solusi JavaScript lainnya. Bekerja sangat baik dan sangat cepat.
https://github.com/dobiatowski/jQuery.FastEllipsis
Diuji pada Chrome, FF, IE pada Windows dan Mac.
sumber
Ada solusi untuk teks multi-baris dengan css murni. Ini disebut
line-clamp
, tetapi hanya berfungsi di browser webkit. Namun ada cara untuk meniru ini di semua browser modern (semuanya lebih baru daripada IE8.) Juga, itu hanya akan bekerja pada latar belakang yang solid karena Anda memerlukan gambar latar belakang untuk menyembunyikan kata-kata terakhir dari baris terakhir. Begini caranya:Diberikan html ini:
Inilah CSS-nya:
ellipsis_bg.png menjadi gambar dengan warna yang sama dengan latar belakang Anda, yang lebarnya sekitar 100px dan memiliki tinggi yang sama dengan tinggi garis Anda.
Ini tidak terlalu cantik, karena teks Anda mungkin terpotong di tengah-tengah huruf, tetapi mungkin berguna dalam beberapa kasus.
Referensi: http://www.css-101.org/articles/line-clamp/line-clamp_for_non_webkit-based_browsers.php
sumber
Ellipsis Multi-baris CSS Murni untuk konten teks:
Silakan checkout cuplikan untuk contoh langsung.
sumber
Ini mirip dengan Alex tetapi melakukannya dalam waktu log, bukan linear, dan mengambil parameter maxHeight.
sumber
Ada solusi jQuery sederhana oleh Devon Govett :
https://gist.github.com/digulla/5796047
sumber
Saya menulis ulang fungsi Alex untuk digunakan ke perpustakaan MooTools. Saya mengubahnya sedikit ke kata lompatan daripada menambahkan elipsis di tengah kata.
sumber
Saya tidak dapat menemukan skrip yang berfungsi persis seperti yang saya inginkan begitu juga skrip saya sendiri untuk jQuery - cukup banyak opsi untuk diatur dengan lebih banyak di jalan mereka :)
https://github.com/rmorse/AutoEllipsis
sumber
Saya agak terkejut dengan perilaku css.
Kecuali saya memberikan lebar ke kontrol yang saya butuhkan untuk mengikat elipsis tidak mendukung saya. Apakah lebar harus ditambahkan properti ??? Tolong taruh pikiran Anda.
sumber
LAKUKAN ELLIPSIS MENGGUNAKAN HANYA CSS
* Kode ini berfungsi di sebagian besar browser saat ini. Jika Anda mengalami masalah dengan Opera dan IE (yang mungkin tidak akan Anda lakukan), tambahkan ini dalam gaya:
* Fitur ini adalah bagian dari CSS3. Sintaks lengkapnya adalah:
sumber
Berikut ini adalah widget / plugin plugin yang bagus yang memiliki ellipsis bawaan: http://www.codeitbetter.co.uk/widgets/ellipsis/ Yang perlu Anda lakukan adalah referensi perpustakaan dan panggil yang berikut:
sumber
Anda dapat melakukan ini lebih mudah hanya dengan css, misalnya: mode sass
dan Anda memiliki ellipsis;)
sumber
Sama seperti @acSlater saya tidak dapat menemukan sesuatu untuk apa yang saya butuhkan jadi saya menggulung sendiri. Berbagi seandainya orang lain dapat menggunakan:
Metode: Pemakaian: Kode dan Tautan Demo: https://gist.github.com/cemerson/10368014sumber
sumber