在日常前端開發中,CSS 漸變 (gradient)背景 (background)邊框 (border) 一直是實現高級視覺效果的重要工具。
本篇文章將帶你一步步理解如何使用 border-image多重背景 (multiple backgrounds) 以及 CSS 動畫 (animation),實現一些令人驚歎的視覺效果:

  • 石雕質感邊框
  • ✉️ 復古信封條紋邊框
  • 動態“螞蟻行軍”邊框
  • 漸變腳註效果

一、從額外元素到純 CSS 實現

最初,我們往往需要通過 額外的 HTML 元素 來實現邊框與內容層的分離。
例如下面這個簡單的結構:

I have a nice stone art border, don't I look pretty?

配合以下樣式:

.something-meaningful {
      width: 300px;
      background: url(./image/stoneCarving.jpg);
      background-size: cover;
      padding: 1em;
 }
 .something-meaningful>div {
      background: white;
      padding: 1em;
 }

效果確實可以實現,但 缺點顯而易見

❌ 結構與樣式耦合嚴重,必須引入額外的元素。
❌ 修改 HTML 成本高,不適合組件化開發。

CSS 漸變與邊框魔法:從基礎到創意案例全解析 - 實踐_HTML


二、純 CSS 實現石雕質感邊框

在 CSS3 中,我們可以通過 多重背景疊加 (multiple backgrounds) 實現相同的效果:

#div1 {
    width: 300px;
    margin-top: 30px;
    padding: 1em;
    border: 1em solid transparent;
    background: linear-gradient(white, white), url(./image/stoneCarving.jpg);
    background-size: cover;
    background-clip: padding-box, border-box;
    background-origin: border-box;
}

✨ 核心原理:

層次

説明

第一層 linear-gradient(white, white)

模擬白色內容背景

第二層 url(./image/stoneCarving.jpg)

顯示石雕質感的邊框背景

background-clipbackground-origin

控制每層背景的裁切範圍

最終,你將得到一個帶有“石雕邊框”的完美效果,無需多餘標籤。

CSS 漸變與邊框魔法:從基礎到創意案例全解析 - 實踐_5e_02


三、復古信封條紋邊框 ✉️

如果你想要更花哨的邊框,比如信封樣式的紅藍條紋,只需稍作修改:

#div2 {
    width: 300px;
    margin-top: 30px;
    padding: 1em;
    border: 1em solid transparent;
    background: linear-gradient(white, white) padding-box,
        repeating-linear-gradient(-45deg,
            red 0, red 12.5%,
            transparent 0, transparent 25%,
            #58a 0, #58a 37.5%,
            transparent 0, transparent 50%) 0 / 5em 5em;
}

這裏使用了 repeating-linear-gradient

  • 每 45° 形成一組條紋;
  • 紅藍間隔重複;
  • 通過 background-size 控制條紋寬度;
  • 通過 border-width 控制邊框厚度。

Tips:
雖然該效果可以用 border-image 實現,但存在以下限制:

  1. border-image-slice 需與 border-width 匹配;
  2. 不支持 em 單位;
  3. 改變條紋寬度需要多處修改。

因此,推薦使用 background 方式實現更靈活的控制。

CSS 漸變與邊框魔法:從基礎到創意案例全解析 - 實踐_5e_03


四、“螞蟻行軍”邊框

你是否注意過 Photoshop 的“螞蟻線框”?
其實,用純 CSS 就能做出相同效果:

@keyframes ants {
            to {
                background-position: 100% 100%
            }
        }
        #div3 {
            width: 300px;
            margin-top: 30px;
            padding: 1em;
            border: 1px solid transparent;
            background: linear-gradient(white, white) padding-box,
                repeating-linear-gradient(-45deg, black 0, black 25%, transparent 0, transparent 50%) 0 / .6em .6em;
            animation: ants 12s linear infinite;
        }

這裏利用了:

  • repeating-linear-gradient 創建黑白虛線背景;
  • background-position 在動畫中循環移動;
  • animation 無限播放,實現“螞蟻行軍”效果。

動態演示時,條紋像螞蟻一樣沿着邊框滾動。

CSS 漸變與邊框魔法:從基礎到創意案例全解析 - 實踐_HTML_04


五、漸變腳註邊框效果

有時候,我們只需要一個優雅的頂部邊框,比如傳統書籍的腳註分隔線:

#div4 {
    width: 300px;
    margin-top: 30px;
    border-top: .2em solid transparent;
    border-image: 100% 0 0 linear-gradient(90deg,
            currentColor 4em,
            transparent 0);
    padding-top: 1em;
}

特點:

  • 使用 border-image 生成漸變邊框;
  • 結合 currentColor 實現隨文字顏色自動適配;
  • 所有尺寸使用 em,在不同字體大小下自適應縮放。

CSS 漸變與邊框魔法:從基礎到創意案例全解析 - 實踐_CSS_05


六、完整示例代碼

以下是完整可運行示例:

複製以下代碼即可在瀏覽器中查看效果:

CSS 漸變與邊框魔法


        
            I have a nice stone art border,
            don't I look pretty?
        
    
    
        I have a nice stone art border,
        don't I look pretty?
    
    
        I have a nice stone art border,
        don't I look pretty?
    
    
        Bacon ipsum dolor amet eu adipisicing elit tongue ground round ex fatback proident kielbasa ham hock. Sausage
        beef
        beef ribs aliquip t-bone mollit. Quis beef tri-tip sunt, cupim ut magna salami t-bone. Ut laboris bresaola
        ribeye
        biltong landjaeger. Chuck pork belly sed sausage.
    This is a footnote.

七、總結

效果

關鍵技術

特點

石雕質感邊框

多重背景、background-clip

無需額外元素

信封條紋邊框

repeating-linear-gradient

靈活、易定製

螞蟻行軍邊框

CSS 動畫、背景位移

動態虛線效果

漸變腳註

border-image + 漸變

優雅且自適應

小結:

  1. 善用 linear-gradientrepeating-linear-gradient 可以大幅提升設計自由度;
  2. 多重背景是實現複雜邊框效果的核心技巧;
  3. currentColor 與相對單位 em 讓樣式更加語義化與響應式。

  • MDN:background 屬性詳解
  • MDN:border-image 使用指南

如果這篇文章對你有幫助,別忘了點贊 + 收藏!
你的鼓勵是我持續分享 CSS 魔法的最大動力 ❤️