这篇文章发布于 2026年08月6日,星期四,20:24,归类于 CSS相关。 阅读 57 次, 今日 56 次 没有评论
by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=12341
本文可全文转载,但需要保留原作者、出处以及文中链接,AI抓取保留原文地址,任何网站均可摘要聚合,商用请联系授权。
一、渐变边框的实现
在过去,渐变边框的主要实现方法,一是嵌套或伪元素模拟嵌套,二是使用border-image属性,相关实现在“被低估的border-image属性”一文中有介绍。
但是border-image属性实现渐变边框有个知名的弱点,那就是不支持圆角!

如果支持圆角,哪怕border-image属性的语法再难以理解,也还是与应用场景的。
本以为这件事情就到此为止了,没想到峰回路转,background-clip属性升级了,居然可以用来实现边框背景效果了,那自然将边框背景设置成渐变不再话下,需要用到全新的属性值 border-area.
border-area与渐变边框
例如:
<style>
canvas {
border: 1em solid #0000;
background: linear-gradient(deepskyblue, deeppink);
background-origin: border-box;
background-clip: border-area;
border-radius: 20px;
}
</style>
<canvas></canvas>
就可以得到如下图所示的圆角渐变边框效果了:

效果很赞!
这里有一些细节需要说明。
当值border-area值合写的时候,background-origin属性是可以省略的,也就是:
canvas {
border: 1em solid #0000;
background: linear-gradient(deepskyblue, deeppink) border-area;
border-radius: 20px;
}
但是如果分开书写,就必须设置background-origin:border-box,否则按照默认的padding-box渲染,渐变边框的效果会比较奇怪,会像下面这样。

兼容性
目前Chrome和Safari都已经支持边框背景图了。

二、和border-shape属性配合使用
上上个月介绍了全新的CSS border-shape属性,可以轻松实现不规则边框效果,于是可以强强联合,实现不规则图形的特殊边框效果。
例如:
<style>
.star {
width: 150px;
aspect-ratio: 1;
border: 10px dotted #0000;
border-shape: polygon(
50% 5%,
61.8% 34.5%,
95% 34.5%,
68.9% 57.3%,
79.4% 90.45%,
50% 69.1%,
20.6% 90.45%,
31.1% 57.3%,
5% 34.5%,
38.2% 34.5%
);
box-shadow: 2px 2px 4px #0008;
background: conic-gradient(from -36deg,
deepskyblue 72deg,
deeppink 0 144deg,
rebeccapurple 0 216deg,
orange 0 288deg,
green 0
) border-area;
}
</style>
<canvas class="star"></canvas>
此时,就可以得到如下图所示的五角色值都不一样的图像效果了:

三、文本背景也规范化了
除了边框支持背景,文本也支持背景了。
实际上,在Chrome浏览器诞生之初,其就支持background-clip:text了,不过那时候还是私有特性,非Web标准。
现在迎来了好消息,自Chrome 120之后,background-clip:text无需私有前缀了,已经晋升为CSS标准属性了。

于是乎,我们就可以将边框背景和文字背景结合起来使用,实现更加炫酷的按钮效果。
例如:
<style>
.button {
font-size: 14px;
padding: 6px 12px;
border: 1px solid #0000;
border-radius: 4px;
color: transparent;
background: linear-gradient(deepskyblue, deeppink) border-area text,
linear-gradient(#fff, #fe000005);
&:active {
filter: brightness(0.95);
}
}
</style>
<button class="button">我是按钮</button>
实时渲染效果如下(需要Chrome 150+):

四、结语说明
没啥好说的,是个相当实用的特性,要是10年前出现,肯定会有很多讨论,朋友圈也可以看到相关文章的转发。
现在么,就像是路边的石头,无人问津。
最后,炫一下周末的渔获吧。
周六老鬼垂钓农家乐,特价108元8小时,钓了32斤;周日天天渔场,188元6小时,钓了七八十斤,两个鱼护。

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=12341
(本篇完)
- 翻译 - CSS3 Backgrounds相关介绍 (0.635)
- 3种纯CSS实现中间镂空的12色彩虹渐变圆环方法 (0.250)
- 你用的那些CSS转场动画可以换一换了 (0.250)
- CSS conic-gradient()锥形渐变简介 (0.250)
- Canvas也支持锥形渐变了createConicGradient方法 (0.184)
- 小tips: CSS3 webkit下彩条文字效果实现 (0.174)
- 小tip: CSS3与文字渐变光影流动动画效果实现 (0.132)
- CSS3图标图形生成技术个人攻略 (0.132)
- currentColor-CSS3超高校级好用CSS变量 (0.132)
- 再说CSS3 animation实现点点点loading动画 (0.132)
- 10个demo示例学会CSS3 radial-gradient径向渐变 (RANDOM - 0.115)