通过CSS实现渐变色边框的几种方法:
1. 使用border-image实现渐变色边框,边框圆角
.box{
border-radius: 16px;
border: 10px solid;
border-image: linear-gradient(#8f41e9, #578aef,#ff5277)30 30;
}
这种方式虽然简单但有个明显的缺陷,不支持设置border-radius
,外框想设置成圆角需要加
clip-path: inset(0 round 10px);
优点: 内容背景可以透明
2. 使用 background-image实现渐变色边框,边框圆角
.box{
border: 4px solid transparent;
border-radius: 16px;
background-clip: padding-box, border-box;
background-origin: padding-box, border-box;
background-image: linear-gradient(to right, #222, #222), linear-gradient(90deg, #8F41E9, #578AEF);
}
缺点:
- 内容背景不能半透明
- 实现复杂
- 不能使用padding
- 不是内圆角
3、border-image + overflow: hidden实现
.radius-gradient-border3{
max-width: 300px;
border-radius: 5px;
margin-bottom: 20px;
overflow: hidden;
}
.radius-gradient-border3 .inner{
padding: 8px;
border: 5px solid transparent;
border-image: linear-gradient(90deg, #387EE8, #f60) 1;
color: #f60;
background-color: rgba(255,255,255,0.7);
}
缺点: 需要多嵌套一层父元素,并且还需要设置overflow: hidden;
4、动态边框
.box{
border-radius: 16px;
border: 10px solid;
border-image: linear-gradient(#8f41e9, #578aef,#ff5277)30 30;
animation: light 3s linear infinite;
}
@keyframes light {
0% {filter: hue-rotate(0deg);/*色调旋转*/}
20% {filter: hue-rotate(100deg);/*色调旋转*/}
40% {filter: hue-rotate(200deg);/*色调旋转*/}
100% {filter: hue-rotate(360deg);/*色调旋转*/}
}