html – 多透明的圆圈,只使用CSS(剪切)

前端之家收集整理的这篇文章主要介绍了html – 多透明的圆圈,只使用CSS(剪切)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经读过这个伟大的问题 Transparent hollow or cut out circle
但我想画更多的圈子(比方说三个).

所以我尝试使用一个额外的元素为圆,而不是一个伪元素(所以我可以添加更多),它适用于一个圆,但不是更多.问题在于它们不透明,因为最后一个涵盖了所有内容.这是我的尝试:

body{
  background-color:violet;
}
.shape{  
    height: 150px;
    width: 150px;
    position:relative;
    overflow:hidden;
}
.hole{
    position:absolute;
    border-radius:100%;
    width:30px; height:30px;
    color:red;
    Box-shadow: 0px 0px 0px 2000px black;
}
.hole:nth-child(1) {
    left:25px; top:25px; 
}
.hole:nth-child(2) {
    left:65px; top:25px; 
}
.hole:nth-child(3) {
    left:55px; top:65px; 
}
<div class="shape">
  <div class="hole">1</div>
  <div class="hole">2</div>
  <div class="hole">3</div>
</div>

解决方法

只需使用svg.面罩的黑色部分从被应用的元件上移除并保持白色:
html,body {
  height: 100%;
  margin: 0;
  background: linear-gradient(to top,red,blue);
}

svg {
  display: block;
  width: 150px;
}
<svg viewBox="0 0 150 150">
  <mask id="circles" maskUnits="objectBoundingBox">
    <rect x="0" y="0" width="100%" height="100%" fill="white" />
    <circle cx="40" cy="40" r="15" fill="black" />
    <circle cx="80" cy="40" r="15" fill="black" />
    <circle cx="70" cy="80" r="15" fill="black" />
  </mask>
  
  <rect x="0" y="0" width="100%" height="100%" fill="green" style="mask: url(#circles)" />
</svg>
原文链接:https://www.f2er.com/html/224371.html

猜你在找的HTML相关文章