來點CSS 多行文字底線:告別不完整底線,打造優雅網頁排版

更新 發佈閱讀 3 分鐘

在設計網頁文字時,會需要在文字加上「底線」來強調重點,但一般的 text-decoration: underline; 有一個限制 —— 在具有多行文字時,在最後一行文字的底線無法填滿整行文字段落,而是只能文字尾端,看起來不夠美觀。

這篇文章要教你用一小段 CSS,製作出更「優雅」的多行底線效果 ✨


🔹 一般底線(基本用法)

text-decoration: underline;
text-underline-offset: 10px;
text-decoration-color: #CCCCCC;
text-decoration-thickness: 2px;

這組設定能調整底線與文字的距離、顏色、粗細,不過只會在文字本身下方畫線,不會隨著文字換行時延伸到底部。效果如下:


🔹 另一種做法:使用 background-image 模擬底線

想要「每一行文字都具有完整底線」的效果,可以使用 background-image 製作重複的底線圖層。

line-height: 1.8;
background-image:
repeating-linear-gradient(
transparent,
transparent calc(1.8em - 2px),
pink calc(1.8em - 2px),
pink 1.8em
/* 1.8em對應於文字的行高設定,2px則為底線的高度*/
);
background-size: 100% 1.8em;
/* 設定每一行的高度 */
padding-bottom: 2px;
/* 透過padding預留空間給底線 */

這段語法的原理是:

  • 使用 線性漸層 (linear-gradient) 畫出一條粉紅色底線;
  • transparent 代表空白區;
  • calc(1.8em - 2px) 控制底線與文字行距;
  • background-size 設定每一行的高度;
  • repeating-linear-gradient 讓線條自動重複,形成「多行底線」的效果。

效果如下:


💡 延伸應用:

  • 可以改變顏色以及底線高度來做出螢光筆風格 (background-color 淡黃色)
  • 或配合文字的行高來調整 background-size 以控制底線之間的距離
  • 也可以結合動畫,讓底線緩慢出現,作為強調效果

以上為關於文字底線的介紹,感謝收看。

留言
avatar-img
留言分享你的想法!
avatar-img
dizzydog的沙龍
2會員
6內容數
親愛的訪客您好!我是 dizzydog,一位熱衷於前端技術的工程師。這個部落格是我的數位筆記本,記錄著我在程式開發路上的各種發現、挑戰與突破。我相信「輸出」是最有效的學習方式,透過清晰地表達所學,不僅能加深自己的理解,也能幫助其他走在相同道路上的開發者。 歡迎您在這裡探索以及交流。
你可能也想看
Thumbnail
說到 HTML 元素的換行效果,在前端有滿多種實作方式的最常見的方式是使用 <br /> 這個 HTML 元素來進行換行 ⋯⋯
Thumbnail
說到 HTML 元素的換行效果,在前端有滿多種實作方式的最常見的方式是使用 <br /> 這個 HTML 元素來進行換行 ⋯⋯
Thumbnail
因為被 position 打敗,就要在 position 這裡站起來!
Thumbnail
因為被 position 打敗,就要在 position 這裡站起來!
Thumbnail
display 是一種 CSS 屬性,指定「 是否 / 如何 」顯示元素,而每一個 HTML element 都有預設的 display value,然而在預設的情況下,新手如我在剛接觸時常踩入深不見底的盲區, 一起來釐清學會辨識吧!
Thumbnail
display 是一種 CSS 屬性,指定「 是否 / 如何 」顯示元素,而每一個 HTML element 都有預設的 display value,然而在預設的情況下,新手如我在剛接觸時常踩入深不見底的盲區, 一起來釐清學會辨識吧!
Thumbnail
相信透過之前的介紹,大家對於 CSS 選擇器(CSS selector)已經不陌生了,今天我們要來聊聊兩個在實務上非常好用的偽類(pseudo class )語法,他們分別是 :nth-child() 與 :nth-of-type(),在了解這兩個語法之前,我們首先要先來聊聊什麼是「偽類」呢?
Thumbnail
相信透過之前的介紹,大家對於 CSS 選擇器(CSS selector)已經不陌生了,今天我們要來聊聊兩個在實務上非常好用的偽類(pseudo class )語法,他們分別是 :nth-child() 與 :nth-of-type(),在了解這兩個語法之前,我們首先要先來聊聊什麼是「偽類」呢?
Thumbnail
不論是在基礎或是進階的版面排列,幾乎離開不了 position 系列的 CSS 語法,如果對於這些語法不熟悉,要快速完成畫面需求幾乎是不可能的,甚至會延宕整個團隊的開發速度(對,position 語法就是這麽重要)。
Thumbnail
不論是在基礎或是進階的版面排列,幾乎離開不了 position 系列的 CSS 語法,如果對於這些語法不熟悉,要快速完成畫面需求幾乎是不可能的,甚至會延宕整個團隊的開發速度(對,position 語法就是這麽重要)。
Thumbnail
相信大家在一開始接觸 CSS 時,一定會很疑惑為什麼除了 width 外,還會有 max-width 及 min-width 語法呢? 當要開發響應式網頁時,到底要使用什麼語法來控制「斷點」?
Thumbnail
相信大家在一開始接觸 CSS 時,一定會很疑惑為什麼除了 width 外,還會有 max-width 及 min-width 語法呢? 當要開發響應式網頁時,到底要使用什麼語法來控制「斷點」?
Thumbnail
對於前端初學者來說,在切版時會出現很多規則、不規則的網頁區塊,這時候我們會嘗試用各種相對定位、絕對定位、margin 或是 padding 的方式來進行網頁區塊的推擠。
Thumbnail
對於前端初學者來說,在切版時會出現很多規則、不規則的網頁區塊,這時候我們會嘗試用各種相對定位、絕對定位、margin 或是 padding 的方式來進行網頁區塊的推擠。
Thumbnail
明明想要某個欄位的寬高為 200px,卻發現自己不知道為什麼怎麼更改都會改不動,又或者寬高更改了,卻沒有辦法與其他元素並列。 上述的狀況,通常都是在不熟悉 HTML display 特性而產生的狀況下才會出現⋯⋯
Thumbnail
明明想要某個欄位的寬高為 200px,卻發現自己不知道為什麼怎麼更改都會改不動,又或者寬高更改了,卻沒有辦法與其他元素並列。 上述的狀況,通常都是在不熟悉 HTML display 特性而產生的狀況下才會出現⋯⋯
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News