如何在CSS中实现边框的局部透明?

relj7zay  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(75)


的数据
怎样才能达到如图所示的边框效果?
我之前的解决方案是使用伪元素来实现蒙版图层的效果。但是如果我的背景是图像或者渐变,那么调节蒙版图层的颜色会很困难。如何实现边框的局部透明,直接获得背景颜色呢?

xxls0lw8

xxls0lw81#

你可以使用面具:

.box {
  width: 250px;
  height: 100px;
  border: 10px solid;
  border-radius: 999px;
  margin: 10px;
  
  -webkit-mask:
    linear-gradient(#000 0 0) no-repeat
      70% 0/80px 10px, /* 70%: control the position | 80px: control the width | 10px: equal to border thickness */
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
}

body {
  background: linear-gradient(90deg,pink,lightblue);
}

个字符

kxxlusnw

kxxlusnw2#

不确定这是否可以完全使用CSS规则,所以我的解决方案是创建一个SVG图像并将其设置为背景图像。

body {
  background-image: url("https://picsum.photos/seed/picsum/200/300");
}

div {
  width: 116px;
  height: 46px;
  background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="116" height="46" viewBox="0 0 116 46" fill="none"><path d="M53 3H23C23 3 3 3 3 23C3 43 23 43 23 43H93C93 43 113 43 113 23C113 3 93 3 93 3H83" stroke="black" stroke-width="5"/></svg>');
  background-repeat: no-repeat;
  box-sizing: border-box;
  padding: 5px;
  border-radius: 999px;
}

个字符

相关问题