[CSS] 如何避免文字過長影響排版:text-overflow & line-clamp

閱讀時間約 6 分鐘

當要顯示的文字過長時,一般會使用 CSS 隱藏超出的部分,並在文字尾端顯示 ... 來表示內容並未完全顯示。

raw-image


Demo:https://codepen.io/lwxidmpx-the-scripter/pen/MYgVmjm



單行文字截斷

overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;

多行文字截斷

overflow: hidden;
-webkit-line-clamp: 2;
display: -webkit-box;
-webkit-box-orient: vertical;


許多人會把這兩組 CSS 當成固定用法直接記下來,但如果能了解每個語法的用途,就能應用在更多不同情境。



單行文字截斷


overflow: hidden;:隱藏超出元素範圍的內容

除了 hidden 屬性,用 scroll 控制 scrollbar 也是常見的使用情境。並可以用 overflow-x & overflow-y 分別控制 水平與垂直的 scrollbar。


white-space: nowrap;:避免文字自動換行

當要顯示的內容為程式碼,希望縮排、換行都能完整呈現時,可以使用 white-space: pre;

<style>
.code {
white-space: pre;
}
</style>
<div class="code">
function example() {
console.log("保留縮排和換行");
}
</div>


text-overflow: ellipsis;:當文字超出範圍時顯示 ...



因此,實現單行文字截斷才需要將三個屬性一起使用。

  1. 避免文字自動換行。
  2. 隱藏超出元素範圍的內容。
  3. 當文字超出範圍時顯示 ...


如果還是不清楚,可以在 codepen 中試著移除任一屬性,看看有什麼差別。



多行文字截斷

-webkit-line-clamp: 2;:設定行數,並在文字超出範圍時顯示 ...

此屬性已經包含所有設定,理論上,只需加上 overflow: hidden; 將超出的行數隱藏即可。

然而,實際使用需要搭配 display: -webkit-box;-webkit-box-orient: vertical;

要解釋其原因,先來說明這個奇怪的前綴 -webkit。


CSS 瀏覽器前綴

古時候,各瀏覽器廠商會率先實現一些尚未完全標準化的 CSS 特性。為了避免這些實驗性功能造成影響,瀏覽器廠商引入了 CSS 前綴,用於標記哪些屬性是特定瀏覽器的實現。

-webkit-  /* 用於基於 WebKit 的瀏覽器,如 Safari 和 Chrome */
-moz- /* 用於 Firefox */
-ms- /* 用於舊版的 IE 和 Edge */
-o- /* 用於舊版的 Opera */

現在,大部分主流 CSS 特性都已標準化,需要使用前綴的情境已經相當少。


-webkit-line-clamp 是由 WebKit 引入的實驗性功能。由於其實用性高,其他瀏覽器也沿用該語法以保持兼容性。因此,現代開發仍持續使用帶有 -webkit- 前綴的語法來實現多行截斷。且 -webkit-line-clamp 必須要搭配 display: -webkit-box;-webkit-box-orient: vertical;使用。

It only works in combination with the display property set to -webkit-box or -webkit-inline-box and the -webkit-box-orient property set to vertical.

* https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp


display: -webkit-box;-webkit-box-orient: vertical; 是早期 WebKit Flexbox 的語法,除了搭配 -webkit-line-clamp 使用外,其他的使用情境均已被 display: flex; 取代。



延伸閱讀


在某些複雜的排版中,可能無法光靠 CSS 來實現文字截斷。此時,可以參考這篇文章中介紹的其他解決方案。


avatar-img
3會員
33內容數
零基礎到成功轉職,一路上會遇到哪些挑戰、應該如何解決? - 猶豫階段:「這適合我嗎?薪水如何?...」 - 起步階段:「怎麼開始學?要不要做 side project?...」 - 成長階段:「如何優化開發效率?選擇框架?...」 - 面試階段:「怎麼準備技術和行為面試?...」
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
前端轉職經驗談 的其他內容
你可能也想看
Google News 追蹤
Thumbnail
2025 年,從分享精彩的 #Myvocus2024 年度回顧開始! #Myvocus2024 年度回顧通知已送達 vocus 的 2024 有超過 12 萬筆訂單、35 萬則以上的內容、16 萬以上的新會員、4 千+ 筆數位商品訂單,5 萬 + 則貼文! 曬曬你的 2024 vocus 吧!
Thumbnail
相信大家現在都有在使用網銀的習慣 以前因為打工和工作的關係,我辦過的網銀少說也有5、6間,可以說在使用網銀App方面我可以算是個老手了。 最近受邀參加國泰世華CUBE App的使用測試 嘿嘿~殊不知我本身就有在使用他們的App,所以這次的受測根本可以說是得心應手
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章教你如何製作側邊欄,包括準備工作、HTML和CSS的部分,還有一些互動效果。文章涵蓋了連結、圖片、超連結、大小、顏色、排版、flex和滑鼠互動等內容。
Thumbnail
作為一個非常不專業的前端初學者,有陣子常常卡在公司官網,要插入 Youtube 影片無法RWD(響應式)的問題。 跟不熟悉 網頁技術的朋友們介紹,RWD 就是指網頁的排版能跟著螢幕的大小縮放、變化編排,在這個人手一機的時代,特別重要。
圖片大小 漂亮的圖片讓人賞心悅目,對網站美化也是一大加分項,但若是為了呈現自家商品或吸引人的圖片搭配文字,而塞進過量的圖片,導致網站本身太重跑得太慢,容易使客人失去耐性。|SEO工具 隨著時代的進步網路速度也與時俱進,但若網站本身太重,就算網路狀況再良好也無法馬上將網站載好,根據統計,大多數人的
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
Thumbnail
HTML 語意化標籤,不僅可以使網頁結構更加清晰、易於理解,也對搜索引擎優化(SEO)和提升網頁無障礙訪問性(Accessibility)有明顯的幫助。本文將介紹 HTML 語意化標籤的定義、重要性以及常見的語意化標籤。
Thumbnail
背景(background)是 CSS 中最常用的功能之一,本文將介紹如何使用 CSS 來設定網頁背景,讓你的網站更加美觀。
Thumbnail
2025 年,從分享精彩的 #Myvocus2024 年度回顧開始! #Myvocus2024 年度回顧通知已送達 vocus 的 2024 有超過 12 萬筆訂單、35 萬則以上的內容、16 萬以上的新會員、4 千+ 筆數位商品訂單,5 萬 + 則貼文! 曬曬你的 2024 vocus 吧!
Thumbnail
相信大家現在都有在使用網銀的習慣 以前因為打工和工作的關係,我辦過的網銀少說也有5、6間,可以說在使用網銀App方面我可以算是個老手了。 最近受邀參加國泰世華CUBE App的使用測試 嘿嘿~殊不知我本身就有在使用他們的App,所以這次的受測根本可以說是得心應手
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章教你如何製作側邊欄,包括準備工作、HTML和CSS的部分,還有一些互動效果。文章涵蓋了連結、圖片、超連結、大小、顏色、排版、flex和滑鼠互動等內容。
Thumbnail
作為一個非常不專業的前端初學者,有陣子常常卡在公司官網,要插入 Youtube 影片無法RWD(響應式)的問題。 跟不熟悉 網頁技術的朋友們介紹,RWD 就是指網頁的排版能跟著螢幕的大小縮放、變化編排,在這個人手一機的時代,特別重要。
圖片大小 漂亮的圖片讓人賞心悅目,對網站美化也是一大加分項,但若是為了呈現自家商品或吸引人的圖片搭配文字,而塞進過量的圖片,導致網站本身太重跑得太慢,容易使客人失去耐性。|SEO工具 隨著時代的進步網路速度也與時俱進,但若網站本身太重,就算網路狀況再良好也無法馬上將網站載好,根據統計,大多數人的
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
Thumbnail
HTML 語意化標籤,不僅可以使網頁結構更加清晰、易於理解,也對搜索引擎優化(SEO)和提升網頁無障礙訪問性(Accessibility)有明顯的幫助。本文將介紹 HTML 語意化標籤的定義、重要性以及常見的語意化標籤。
Thumbnail
背景(background)是 CSS 中最常用的功能之一,本文將介紹如何使用 CSS 來設定網頁背景,讓你的網站更加美觀。