中央西門風痕影 好奇
2 weeks ago @Edit 2 weeks ago
CSS 的 text-overflow: ellipsis 可以截短塞不下的字,並自動加上刪節號,但只適用單行的文字

多行文字的情況,就我所知應該只能用 JS 將字一個一個寫進去(並在後面加上刪節號),測試什麼時候高度會超過限制,超過的話就用上個 step 的字數。我們也在 2016 年前用過類似原理的 jQuery 函式庫:
jeffchan/truncate.js

Webkit 系瀏覽器自 2010 年起有 -webkit-line-clamp 可用。最近查了下,發現 Firefox 居然在 2019 年支援了(還保留了 -webkit- 前綴)

因此現在可以只用 CSS 解決了(雖然是有前綴的)
latest #7
沒想到吧汪
真的可以嗎汪
中央西門風痕影
2 weeks ago @Edit 2 weeks ago
瀏覽器支援

根據 MDN,2010 年的 Safari 5、Chrome 6 開始支援:
-webkit-line-clamp

Edge 現在也是用 Blink 引擎,因此可以用

不過他從 2018 年的 17 就開始支援(當時還沒改用 Blink 引擎),而且也保留了 -webkit- 前綴)
立即下載
中央西門風痕影
2 weeks ago @Edit 2 weeks ago
使用條件

必須先指定 display: -webkit-boxdisplay: -webkit-inline-box,並指定 -webkit-box-orient: vertical

這時再使用 -webkit-line-clamp: 3,且內容超過了 3 行,那在第 3 行的結尾就會出現刪節號,但後面內容還是會出現

如果要隱藏後面的內容,必須再加上 overflow: hidden
中央西門風痕影
2 weeks ago @Edit 2 weeks ago
CSS 草案

CSS Overflow Module Level 4 的草案裡已有 line-clamp,但目前沒有瀏覽器支援

為了向下相容,草案裡甚至規定支援 line-clamp 的瀏覽器也必須支援 -webkit-line-clamp,且行為與前者不同

草案裡也有 max-linescontinueblock-ellipsis 這類東西可以用,目前沒有瀏覽器支援。line-clamp-webkit-line-clamp 被定義為這些 property 的簡短寫法
中央西門風痕影
2 weeks ago @Edit 2 weeks ago
其他

Firefox 的支援與此 issue 有關(最早於 2013 年提出):
866102 - (webkit-line-clamp) ellipsis multiple lines...

裡頭也提到了 W3C 那邊的討論:
[css-overflow] Consider support for multiple-line el...
中央西門風痕影
2 weeks ago @Edit 2 weeks ago
老實說沒想過帶前綴的 property 居然會進草案(雖然是考慮到相容),還被其他家的瀏覽器支援
back to top