HTML – 边角形状勺不起作用

我想使用border-corner-shape属性来实现以下形状.但它不起作用.

我的代码如下:

.left-1 {
   background-color: #3498DB;
   border-corner-shape: scoop;
   border-radius: 30px;
   width: 200px;
   height: 200px;
}
<div class="left-1"></div>

为什么不起作用?

解决方法

使用径向渐变:

这是使用径向渐变实现边角角落效果的另一种替代方法.在这方法中,我们使用多个径向渐变并将它们定位在角落处.

.border-scoop {
  height: 300px;
  width: 300px;
  background: -webkit-radial-gradient(0% 100%,circle,transparent 15%,steelblue 15%) no-repeat,-webkit-radial-gradient(100% 0%,-webkit-radial-gradient(0% 0%,-webkit-radial-gradient(100% 100%,steelblue 15%) no-repeat;
  background: radial-gradient(circle at 0% 100%,radial-gradient(circle at 100% 0%,radial-gradient(circle at 0% 0%,radial-gradient(circle at 100% 100%,steelblue 15%) no-repeat;
  background-position: 0% 100%,100% 0%,0% 0%,100% 100%;
  background-size: 75% 75%;
}
body {
  background: -webkit-linear-gradient(90deg,crimson,indianred,purple);
  background: linear-gradient(90deg,purple);
}
<div class="border-scoop"></div>

使用剪辑路径:

使用剪辑路径也可以实现Scooped边角效果.纯CSS版本仅支持基本形状(圆形,多边形,椭圆形等),并且不支持路径或形状组合,但可以使用SVG(内联/外部).

.border-scoop {
  width: 200px;
  height: 200px;
  background-color: #3498DB;
  -webkit-clip-path: url(#scoop);
  clip-path: url(#scoop);
}
body {
  background: -webkit-linear-gradient(90deg,purple);
}
<svg width='0' height='0'>
  <defs>
    <clipPath id='scoop' clipPathUnits='objectBoundingBox'>
      <path d='M0.2,0 A0.2,0.2 0 0,1 0,0.2 
                     L0,0.8 A0.2,1 0.2,1
                     L0.8,1 A0.2,1 1,0.8
                     L1,0.2 A0.2,1 0.8,0z' />
    </clipPath>
  </defs>
</svg>
<div class='border-scoop'></div>

Box Shadow透明勺:

下面的片段是GCyrillus’答案的一个变体,它需要一个额外的元素,但即使页面的背景不是纯色也能工作.然而,该方法仍然具有与另一个答案中提到的相同的固定和已知尺寸限制.

必须注意的是,框阴影具有比径向渐变更好的浏览器支持.

.border-scoop{
  height: 300px;
  width: 300px;
  position: relative;
  overflow: hidden;
}
.inner{
  position: absolute;
  top: 0px; left: 0px;
  height: 100%;
  width: 100%;
}
.border-scoop:before,.border-scoop:after,.inner:after,.inner:before{
  position: absolute;
  content: '';
  height: 30%; width: 30%;
  border-radius: 50%;
  background: transparent;
  Box-shadow: 0px 0px 0px 210px steelblue;  
}
.border-scoop:before{
  top: -15%; left: 85%;
}
.border-scoop:after{
  top: -15%; left: -15%;
}
.inner:after{
  top: 85%; left: 85%;
}
.inner:before{
  top: 85%; left: -15%;
}

body{
  background: -webkit-linear-gradient(90deg,purple);
}
<div class="border-scoop">
  <div class="inner"></div>
</div>

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些