css

边框圆角和边框渐变色无法同时起作用

Posted by WWJ on May 31, 2019

造成边框圆角和边框渐变色无法同时起作用的原因就是,在使用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>

效果如下:圆角没有起作用 enter image description here

解决方法

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>

效果图如下 enter image description here

  1. 利用伪元素 + 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区域向外裁剪背景