我已将 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。
我正在使用额外的 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)