我正在尝试模糊图像的边缘,如https://stackoverflow.com/a/24953573所示的图片。
我需要在前景图像上执行此操作(而不是在CSS中设置一个,因为img url是动态更改的。但是盒子阴影似乎对前景图像没有影响。我也在使用Bootstrap 4.3 img-fluid
类。
换句话说,上面引用的SO处的代码可以工作,但是此图像上的边缘没有模糊(为简单起见,内联css:]
<img src="/images/mypic.jpg"
class="img-fluid"
style="box-shadow: 0 0 5px 5px white inset;">
.img-fluid
设置max-width: 100%
和height:auto
。我尝试用特定的值覆盖这些值(我不想这样做以维护响应式图像),但也没有任何效果。
inset
的样式图像存在问题。
但是您有2种替代方法。您可以向此容器添加一个位置相对的容器,并在内部放置带有类img-fluid
的put img和具有正位置绝对值的div。
第二个选项是设置一个容器,在其内部具有相对位置和img,并使用伪类::after
对该容器进行样式设置。
如果您可以这样做,则可以,但是如果img小于容器,则正确的框阴影会出现问题。如果您将使用一些JS代码,则可以修复这些问题。
我用jQuery作了一个示例(因为您正在使用引导程序,而引导程序正在使用jquery)。
[不幸的是,CSS“插入”框阴影不适用于img
标签。要解决此问题,您有几个选择,例如,可以将图像包装在div
标签上,并使用伪元素在其上应用box-shadow
。
这里的问题是,作为标准,div
标签是一个“块”元素,因此将覆盖整个父宽度。您可以应用display: inline-block
或float: left
属性来解决此问题。也许不是最好的“符合标准”,但可以在这种情况下使用。我在下面附上这个概念的示例:
div {
position: relative;
display: inline-block;
}
div:after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 0 5px 5px white inset;
}
<div>
<img src="https://picsum.photos/200/300" class="img-fluid">
</div>
您需要用类名img
的div
元素包装.img-blur
标记,因此可以使用:after
伪元素在元素的内容之后插入一些内容。
.img-blur{
position: relative;
display: inline-block;
}
.img-blur:after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: inset 0 0 10px 10px #ffffff;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<div class="container">
<div class="row" >
<div class="col-4 my-3">
<div class="img-blur">
<img class="img-fluid" src="https://via.placeholder.com/400x400/22ff22">
</div>
</div>
<div class="col-4 my-3">
<div class="img-blur">
<img class="img-fluid" src="https://via.placeholder.com/400x400/ffff22">
</div>
</div>
<div class="col-4 my-3">
<div class="img-blur">
<img class="img-fluid" src="https://via.placeholder.com/400x400/22ff22">
</div>
</div>
</div>
</div>