您遇到的问题是,由于该选项会剪切包括元素在内的任何内容,box-shadow
因此被剪切掉了。-webkit-mask-image
box-shadow
解决方案
使用蒙版图像作为蒙版图像下方显示的另一个元素,以便您可以使用其形状来渲染阴影。为了做到这一点,我们必须知道最初被遮罩的图像的宽度和高度。如果您不知道图像大小或者它是动态的,您可以使用 JavaScript。
我们面临的问题是我们不能使用box-shadow
,因为它会渲染一个与遮罩形状不匹配的盒子阴影。
box-shadow
不会在形状周围呈现
相反,我们将尝试使用drop-shadow
过滤器来模拟它。
我更喜欢用相同大小的 div 包裹被遮罩的图像,并具有遮罩图像的背景图像。这就是它的样子。
HTML
<div class="image-container">
<img class="wrap-image" src="<Original Image URL>" id="wrap-image">
</div>
CSS
.image-container {
width: <Original Image Width>;
height: <Original Image Width>;
background-size: 100%;
background-image: url(URL of Mask Image);
-webkit-filter: drop-shadow(1px 1px 4px rgba(0,0,0,0.75));
-moz-filter: drop-shadow(1px 1px 4px rgba(0,0,0,0.75));
-ms-filter: drop-shadow(1px 1px 4px rgba(0,0,0,0.75));
-o-filter: drop-shadow(1px 1px 4px rgba(0,0,0,0.75));
}
#wrap-image {
mask: url("URL of Mask Image");
-webkit-mask-box-image: url("URL of Mask Image");
}
这是一个 JSFiddle。