Temui Fred. Dia adalah sebuah meja:
<table border="1" style="width: 100%;">
<tr>
<td>This cells has more content</td>
<td>Less content here</td>
</tr>
</table>
Apartemen Fred memiliki kebiasaan aneh dalam mengubah ukuran, jadi dia belajar menyembunyikan sebagian isinya agar tidak mendorong semua unit lain dan mendorong ruang tamu Ny. Whitford untuk dilupakan:
<table border="1" style="width: 100%; white-space: nowrap; table-layout: fixed;">
<tr>
<td style="overflow: hidden; text-overflow: ellipsis">This cells has more content</td>
<td style="overflow: hidden; text-overflow: ellipsis">Less content here</td>
</tr>
</table>
Ini bekerja, tetapi Fred memiliki perasaan mengomel bahwa jika sel kanannya (yang dia juluki Celldito) menyerah sedikit, sel kirinya tidak akan terpotong sepanjang waktu. Bisakah kamu menyelamatkan kewarasannya?
Singkatnya: Bagaimana sel-sel tabel dapat melimpah secara merata, dan hanya ketika mereka semua telah menyerahkan semua spasi putihnya?
html
css
overflow
tablelayout
s4y
sumber
sumber
Jawaban:
http://jsfiddle.net/7CURQ/
sumber
<col>
s dengan mengganti lebar lebar dengan<td>
gaya: jsfiddle.net/7CURQ/64Saya yakin saya punya solusi non-javascript! Lebih baik terlambat daripada tidak, kan? Bagaimanapun, ini adalah pertanyaan yang sangat bagus dan Google sudah mengatasinya. Saya tidak ingin menerima perbaikan javascript karena saya menemukan sedikit kegelisahan tentang hal-hal yang bergerak setelah halaman dimuat menjadi tidak dapat diterima.
Fitur :
Cara kerjanya : Di dalam sel tabel, tempatkan dua salinan konten dalam dua elemen berbeda dalam elemen kontainer yang diposisikan relatif. Elemen spacer diposisikan secara statis dan karenanya akan mempengaruhi lebar sel tabel. Dengan membiarkan isi sel spacer untuk membungkus kita bisa mendapatkan "paling cocok" lebar sel tabel yang kita cari. Ini juga memungkinkan kami untuk menggunakan elemen yang diposisikan benar-benar untuk membatasi lebar konten yang terlihat dengan induk yang diposisikan relatif.
Diuji dan bekerja di: IE8, IE9, IE10, Chrome, Firefox, Safari, Opera
Gambar Hasil :
JSFiddle : http://jsfiddle.net/zAeA2/
Contoh HTML / CSS :
sumber
title
alih-alihdata-spacer
mendapatkan tooltip di mouse :)Saya telah menghadapi tantangan yang sama beberapa hari yang lalu. Tampaknya Lucifer Sam menemukan solusi terbaik.
Tapi saya perhatikan Anda harus menduplikasi konten di elemen spacer. Saya pikir itu tidak terlalu buruk, tetapi saya juga ingin menerapkan
title
popup untuk teks terpotong. Dan itu berarti teks panjang akan muncul ketiga kali dalam kode saya.Di sini saya mengusulkan untuk mengakses
title
atribut dari:after
pseudo-element untuk menghasilkan spacer dan menjaga HTML tetap bersih.Bekerja pada IE8 +, FF, Chrome, Safari, Opera
http://jsfiddle.net/feesler/HQU5J/
sumber
Jika Javascript dapat diterima, saya menyusun rutinitas cepat yang dapat Anda gunakan sebagai titik awal. Secara dinamis mencoba untuk menyesuaikan lebar sel menggunakan lebar bagian dalam rentang, sebagai reaksi terhadap peristiwa ukuran jendela.
Saat ini diasumsikan bahwa setiap sel biasanya mendapatkan 50% dari lebar baris, dan itu akan menutup sel kanan untuk menjaga sel kiri pada lebar maksimum untuk menghindari meluap. Anda bisa menerapkan logika penyeimbang lebar yang jauh lebih kompleks, tergantung pada kasus penggunaan Anda. Semoga ini membantu:
Markup untuk baris yang saya gunakan untuk pengujian:
JQuery yang menghubungkan acara pengubahan ukuran:
sumber
Ada solusi yang jauh lebih mudah dan lebih elegan.
Di dalam sel tabel yang ingin Anda terapkan pemotongan, cukup sertakan div kontainer dengan tata letak tabel css: diperbaiki. Wadah ini mengambil lebar penuh sel tabel induk, sehingga bahkan bertindak responsif.
Pastikan untuk menerapkan pemotongan ke elemen dalam tabel.
Bekerja dari IE8 +
dan css:
inilah Fiddle yang berfungsi https://jsfiddle.net/d0xhz8tb/
sumber
Masalahnya adalah 'table-layout: fixed' yang membuat kolom dengan lebar spasi tetap. Tetapi menonaktifkan properti-css ini akan membunuh text-overflow karena tabel akan menjadi sebesar mungkin (dan tidak ada yang ingin meluap).
Maaf, tetapi dalam hal ini Fred tidak dapat memiliki kue dan memakannya .. kecuali jika pemiliknya memberi Celldito lebih sedikit ruang untuk bekerja, Fred tidak dapat menggunakan ...
sumber
Anda dapat mencoba "memberi bobot" pada kolom tertentu, seperti ini:
Anda juga dapat mencoba beberapa tweak yang lebih menarik, seperti menggunakan kolom bandwidth 0% dan menggunakan beberapa kombinasi
white-space
properti CSS.Anda mendapatkan idenya.
sumber
Ya saya akan mengatakan tiga puluh tidak memilikinya, tidak ada cara untuk melakukannya kecuali Anda menggunakan metode js. Anda berbicara tentang serangkaian kondisi render kompleks yang harus Anda tetapkan. misalnya apa yang terjadi ketika kedua sel menjadi terlalu besar untuk apartemen mereka, Anda harus memutuskan siapa yang memiliki prioritas atau hanya memberi mereka persentase dari area dan jika mereka berlebihan mereka akan mengambil area itu dan hanya jika ada yang memiliki spasi Anda meregangkan kaki di sel lain, atau tidak ada cara untuk melakukannya dengan css. Meskipun ada beberapa hal yang cukup funky yang dilakukan orang dengan css yang belum saya pikirkan. Saya benar-benar ragu Anda bisa melakukan ini.
sumber
Seperti jawaban samplebias, sekali lagi jika Javascript adalah jawaban yang dapat diterima, saya membuat plugin jQuery khusus untuk tujuan ini: https://github.com/marcogrcr/jquery-tableoverflow
Untuk menggunakan plugin ketikkan saja
Contoh lengkap: http://jsfiddle.net/Cw7TD/3/embedded/result/
Suntingan:
sumber
Gunakan beberapa css hack, tampaknya
display: table-column;
bisa menyelamatkan:JSFiddle: http://jsfiddle.net/blai/7u59asyp/
sumber
Cukup tambahkan aturan berikut ke
td
:Contoh:
PS: Jika Anda ingin mengatur lebar kustom ke
td
properti penggunaan lainmin-width
.sumber
Pertanyaan ini muncul di bagian atas Google, jadi dalam kasus saya, saya menggunakan potongan css dari https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ tetapi menerapkannya pada td TIDAK memberikan hasil yang diinginkan.
Saya harus menambahkan tag div di sekitar teks di td dan elipsis akhirnya berfungsi.
Kode HTML Singkatan;
CSS disingkat;
sumber
Periksa apakah "nowrap" menyelesaikan masalah sampai batas tertentu. Catatan: nowrap tidak didukung dalam HTML5
sumber
white-space: nowrap
memiliki efek yang sama dengannowrap
atribut (dan saya menggunakannya dalam contoh). Menambahkannya di sini tidak mengubah apa pun, sejauh yang saya tahu.Anda dapat mengatur lebar sel kanan ke minimum lebar yang diperlukan, lalu menerapkan overflow-hidden + text-overflow ke bagian dalam sel kiri, tetapi Firefox bermasalah di sini ...
meskipun, tampaknya, flexbox dapat membantu
sumber
Saya baru-baru ini mengerjakannya. Lihatlah tes jsFiddle ini , cobalah sendiri mengubah lebar tabel dasar untuk memeriksa perilaku).
Solusinya adalah dengan menyematkan tabel ke tabel lain:
Apakah Fred sekarang senang dengan ekspansi Celldito?
sumber
Tidak tahu apakah ini akan membantu siapa pun, tapi saya memecahkan masalah yang sama dengan menentukan ukuran lebar spesifik dalam persentase untuk setiap kolom. Jelas, ini akan bekerja paling baik jika setiap kolom memiliki konten dengan lebar yang tidak terlalu bervariasi.
sumber
Saya memiliki masalah yang sama, tetapi saya perlu menampilkan beberapa baris (jika
text-overflow: ellipsis;
gagal). Saya menyelesaikannya dengan menggunakantextarea
di dalamTD
dan kemudian gaya untuk berperilaku seperti sel tabel.sumber
Mengingat bahwa 'tata letak tabel: diperbaiki' adalah persyaratan tata letak yang penting, bahwa ini menciptakan kolom yang tidak dapat disetel secara merata, tetapi bahwa Anda perlu membuat sel dengan lebar persentase berbeda, mungkin mengatur 'colspan' sel Anda menjadi beberapa?
Misalnya, menggunakan lebar total 100 untuk perhitungan persentase mudah, dan mengatakan bahwa Anda memerlukan satu sel 80% dan 20% lainnya, pertimbangkan:
Tentu saja, untuk kolom 80% dan 20%, Anda bisa mengatur colspan sel lebar 100% menjadi 5, 80% menjadi 4, dan 20% menjadi 1.
sumber
td
s?