造成边框圆角和边框渐变色无法同时起作用的原因就是,在使用border-image的时候
- 允许在元素的边框下绘制图像
- 使用该属性时,将会替换掉border-style属性所设置的边框样式
<div class="content"></div>
<style>
.content {
width: 190px;
height: 47px;
border: 3px solid;
box-sizing: border-box;
border-radius: 24px;
border-image: linear-gradient(#FE0140,#FF5728) 10;
margin: 300px auto;
}
</style>
效果如下:圆角没有起作用
解决方法
1.利用padding + background-image
<div class="content">
<div class="inner"></div>
</div>
<style>
.content {
border-radius: 24px;
margin: 300px auto;
padding: 3px;
width: 190px;
height: 47px;
box-sizing: border-box;
border-radius: 24px;
background: linear-gradient(90deg,rgba(254,1,64,1) 0%,rgba(255,87,40,1) 100%);
}
.inner {
border-radius: 24px;
width: 100%;
height: 100%;
background-color: #fff;
}
</style>
效果图如下
- 利用伪元素 + background-clip: padding-box
<div class="content">
<style>
.content {
position: relative;
width: 190px;
height: 47px;
border: 3px solid transparent;
border-radius: 24px;
background: #fff;
margin: 300px auto;
background-clip: padding-box;
}
.content::after {
content: '';
position: absolute;
top: -3px;
bottom: -3px;
left: -3px;
right: -3px;
background: linear-gradient(90deg,#FE0140 0%,#FF5728 100%);
z-index: -1;
border-radius: 24px;
}
</style>
需要注意的是
- 伪元素的z-index必须小于content
- 使用backgorun-clip时,属性必须设置为padding-box
background-clip
clip的意思为修剪,那么从字面上理解,background-clip的意思为背景裁剪
与box-sizing的取值非常相似,通常而言,它有三个值:
background-clip: border-box; // 从border区域向外裁剪背景
background-clip: padding-box; // 从padding区域向外裁剪背景
background-clip: content-box; // 从content区域向外裁剪背景