之前遇到過漸層邊框的需求,當時是產一張圖片,利用 border-image-slice 處理。這次改版再次研究,找到了不用圖片、可以保留透明背景的作法。
TL;DR
1 | div { |
範例效果
div#example { width: 200px; height: 80px; border-image: linear-gradient(red, yellow) 30; border-width: 30px; mask: linear-gradient(black, black); border-radius: 16px; border-style: solid; }
原理
簡單而言,具體要處理的問題是:border-image 和 border-radius 衝突的問題。解決方法就是用 mask,把超出圓角的部分遮住。因為 mask 受到 border-radius 的控制,從而達成我們的目的。