css mask-image 之后元素的边框丢失

Sak*_*kis 5 css css-mask

我已将 svg 作为遮罩图像应用于某些 div。这样做之后,他们的边界就消失了。

.icon {
  padding:5px;
  border:5px solid #000;
  width: 150px;
  height: 150px;
  display: inline-block;
  -webkit-mask: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/18515/heart.svg) no-repeat 50% 50%;
  -webkit-mask-size: contain;
  mask-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/18515/heart.svg) no-repeat 50% 50%;
  mask-size: contain;
}

.red {
  background-color: red;
}

.blue {
  background-color: blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrap">
  <div class="icon red"></div>
  <div class="icon blue"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

知道为什么会发生这种情况吗?任何解决方案都应该仅基于 CSS。

Kir*_*ash 0

我正在使用额外的 div 包装器在包含蒙版的 div 周围创建边框。

我已在代码中添加了注释来解释我的更改。

.maskborder{
  width: 150px;
  height: 150px;
  border:5px solid #000;
  position: relative;
  float: left;
}

.maskborder.two {
  margin-left: 10px; /* Change this to suit how much gap you want between first and second box */
}

.icon {
  padding:5px;
  border:5px solid #000;
  width: 150px;
  height: 150px;
  display: inline-block;
  mask: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/18515/heart.svg) no-repeat 50% 50%;
  -webkit-mask: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/18515/heart.svg) no-repeat 50% 50%;
  mask-size: contain;
  -webkit-mask-size: contain;
  position: absolute;
  transform: translate(-10px, -10px) /* To offset the 5px border width so that the icons can be centred correctly in middle */
}

.red {
  background-color: red;
}

.blue {
  background-color: blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrap">
  <div class="maskborder">
    <div class="icon red"></div>
  </div>
  <div class="maskborder two">
     <div class="icon blue"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)