細節藏在邊線裡:如何用linear-gradient打造高質感裝飾線條

更新 發佈閱讀 4 分鐘

當我們在切版時,面對設計稿上的分隔線反應往往是寫下 border-bottom: 1px solid #000;。若是想要一點變化,也許會改成 dasheddotted,或者可以使用偽元素::before::after,但你是否曾覺得,border預設的虛線樣式太過呆版,圓點太圓,且間距無法調整,顏色也只能選一種。

今天來分享一段透過 linear-gradient 模擬出的高質感裝飾線條,為你的網頁帶來彷彿「精緻縫線」般的細節。

傳統邊線的極限

普通的 border 屬性雖然方便,但它的極限在於:

  1. 無法控制節奏:你不能決定虛線的長度是 5px 而間距是 2px。
  2. 無法多色混合:一條邊線只有一種顏色。

而透過 CSS 的 background 來繪製線條,我們可以像像素畫家一樣,精確控制這條線上的每一個像素。

::before + background: linear-gradient 代碼解析

raw-image

讓我們來看看如何透過CSS實現如上圖的效果:

.container::before {
content: "";
width: 100%;
min-height: 2px;
position: absolute;
top: 50%;
right: 0;

/* 重點在這裡 */
background: linear-gradient(
to right,
#DEE4E7 0,
#DEE4E7 2px, /* 第一段顏色:2px 寬 */
transparent 2px,
transparent 3px, /* 第一段間距:1px 寬 */
#D2DDE2 3px,
#D2DDE2 4px, /* 第二段顏色(較短):1px 寬 */
transparent 4px,
transparent 5px /* 第二段間距:1px 寬 , 以上為一個循環*/
);
background-size: 5px 2px; /* 定義一個循環的總寬度 */
background-repeat: repeat-x;
}

這段代碼創造的不是一條邊線,而是一個像素圖案的無限循環。就像是花磚作品一樣,background-size: 5px 2px; 定義了一個 5px 寬的「花磚」,這塊花磚的內容是:

  • 0px - 2px: 淺灰藍色實線 (長度 2px)
  • 2px - 3px: 透明 (間距 1px)
  • 3px - 4px: 深一點的灰藍色 (長度 1px)
  • 4px - 5px: 透明 (間距 1px)

藉由設定不同顏色以及長度的小磁磚,可以拼貼出具有節奏感(長——空—短—空)的效果,且配合#DEE4E7#D2DDE2 兩個非常接近但略有深淺的顏色,這些細微的差異,讓螢幕上的單純像素彷彿縫紉機留下的縫線,為網頁添加了一份手工感。

此外,透過使用 transparent(透明),讓背景圖案可以透出來,使得分隔線與整體頁面融合得更自然,不會像實線那樣產生強烈的「切割感」。

最後附上codePen,這裡為了清楚起見,將我們的「花磚」放大了十倍!

結語

網頁設計的質感往往不是來自於詳細的資訊或酷炫的動畫,而是來自於這些 1px、2px 的微小堅持。下次當你想用 border 時,不妨試試看::before 結合linear-gradient,為你的使用者介面縫上一條更有溫度的線,謝謝收看!

留言
avatar-img
留言分享你的想法!
avatar-img
dizzydog的沙龍
2會員
9內容數
親愛的訪客您好!我是 dizzydog,一位熱衷於前端技術的工程師。這個部落格是我的數位筆記本,記錄著我在程式開發路上的各種發現、挑戰與突破。我相信「輸出」是最有效的學習方式,透過清晰地表達所學,不僅能加深自己的理解,也能幫助其他走在相同道路上的開發者。 歡迎您在這裡探索以及交流。
你可能也想看
Thumbnail
你有想過嗎?如果把你過去一週、甚至一整個月的信用卡帳單全部攤開,會變成什麼畫面?😉 格編最近做了一個小實驗:把每一筆消費都丟到地圖上標記,結果它變成一張非常誠實的「生活熱力圖」。把每一筆刷卡都丟到地圖上之後,哪一條路上出現最多「小點點」,就代表你最常走那一條路;哪一個區塊被畫滿圈圈、標記最多店家
Thumbnail
你有想過嗎?如果把你過去一週、甚至一整個月的信用卡帳單全部攤開,會變成什麼畫面?😉 格編最近做了一個小實驗:把每一筆消費都丟到地圖上標記,結果它變成一張非常誠實的「生活熱力圖」。把每一筆刷卡都丟到地圖上之後,哪一條路上出現最多「小點點」,就代表你最常走那一條路;哪一個區塊被畫滿圈圈、標記最多店家
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 的方式來進行網頁區塊的推擠。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News