我用这段代码模糊了一些图像
img {
filter: blur(5px);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
}
图像的边缘也会变得模糊。在保持边缘清晰的同时,是否可以使图像模糊?像插图模糊之类的?
Answers:
你可以把它放在一个<div>
与overflow: hidden;
并设置<img>
到margin: -5px -10px -10px -5px;
。
img {
filter: blur(5px);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
margin: -5px -10px -10px -5px;
}
div {
overflow: hidden;
}
<div><img src="http://placekitten.com/300" /></div>
img
内,div
并且blur
溢出的边界div
。该overflow: hidden;
砍下。
我能够通过
transform: scale(1.03);
属性应用于图像。由于某种原因,在Chrome上,如果存在相对定位的父元素,则提供的其他解决方案将无法正常工作。
检查http://jsfiddle.net/ud5ya7jt/
这样,图像将被稍微放大3%,并且边缘将被裁剪,无论如何对于模糊图像来说这都不是问题。在我的情况下效果很好,因为我使用的是高分辨率图像作为背景。祝好运!
overflow: hidden
将删除滚动条!谢谢!
我用-webkit-transform: translate3d(0, 0, 0);
用overflow:hidden;
。
DOM:
<div class="parent">
<img class="child" src="http://placekitten.com/100" />
</div>
CSS:
.parent {
width: 100px;
height: 100px;
overflow: hidden;
-webkit-transform: translate3d(0, 0, 0);
}
.child {
-webkit-filter: blur(10px);
}
演示:http : //jsfiddle.net/DA5L4/18/
该技术适用于Chrome34和iOS7.1
如果您使用的是最新版本的Chrome,则无需使用-webkit-transform: translate3d(0, 0, 0);
hack。但它不适用于Safari(webkit)。
您也可以保留整个视频,而不必删除某些内容。
您可以在白色模糊的边缘上覆盖插图阴影。
这看起来也很好:)
只需将此代码粘贴到视频的父级:
.parent {
-webkit-box-shadow: inset 0 0 200px #000000;
-moz-box-shadow: inset 0 0 200px #000000;
box-shadow: inset 0 0 200px #000000;
}
box-shadow: inset 0 0 200px #000000, inset 0 0 200px #000000;
在许多可以将IMG定位到绝对位置的情况下,可以使用clip隐藏隐藏的边缘-不需要外部DIV。
img {
filter: blur(5px);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
position: absolute;
clip: rect(5px,295px,295px;5px);
}
今天,我本人已经解决了相同的问题,所以我想提出一种(当前)适用于主要浏览器的解决方案。此页面上的其他一些答案确实可以使用一次,但是最近的更新(无论是浏览器还是操作系统)都使大部分/所有这些答案无效。
关键是将图像放置在容器中,然后进行变换:从该容器的溢出:隐藏的父对象中缩放该容器。然后,将模糊应用于容器内部的img,而不是容器本身。
工作小提琴:https://jsfiddle.net/x2c6txk2/
的HTML
<div class="container">
<div class="img-holder">
<img src="https://unsplash.it/500/300/?random">
</div>
</div>
的CSS
.container {
width : 90%;
height : 400px;
margin : 50px 5%;
overflow : hidden;
position : relative;
}
.img-holder {
position : absolute;
left : 0;
top : 0;
bottom : 0;
right : 0;
transform : scale(1.2, 1.2);
}
.img-holder img {
width : 100%;
height : 100%;
-webkit-filter : blur(15px);
-moz-filter : blur(15px);
filter : blur(15px);
}
您可以通过裁剪图像并应用包装器元素(将模糊效果设置为0像素)来阻止图像重叠其边缘。它是这样的:
的HTML
<div id="wrapper">
<div id="image"></div>
</div>
的CSS
#wrapper {
width: 1024px;
height: 768px;
border: 1px solid black;
// 'blur(0px)' will prevent the wrapped image
// from overlapping the border
-webkit-filter: blur(0px);
-moz-filter: blur(0px);
-ms-filter: blur(0px);
filter: blur(0px);
}
#wrapper #image {
width: 1024px;
height: 768px;
background-image: url("../images/cats.jpg");
background-size: cover;
-webkit-filter: blur(10px);
-moz-filter: blur(10px);
-ms-filter: blur(10px);
filter: blur(10px);
// Position 'absolute' is needed for clipping
position: absolute;
clip: rect(0px, 1024px, 768px, 0px);
}
最简单的方法是向包含图像的div添加透明边框,并将其display属性设置为inline-block,如下所示:
div{
margin: 2rem;
height: 100vh;
overflow: hidden;
display: inline-block;
border: 1px solid #00000000;
}
img {
-webkit-filter: blur(2rem);
filter: blur(2rem);
}
<div><img src='https://images.unsplash.com/photo-1557853197-aefb550b6fdc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=375&q=80' /></div>
这是一个描绘相同内容的codepen:https ://codepen.io/arnavozil/pen/ExPYKNZ
我发现就我而言,我不必添加包装器。
我刚刚添加-
margin: -1px;
要么
margin: 1px; // any non-zero margin
overflow: hidden;
我模糊的元素绝对定位。
这是我想出的一种解决方案,可以保留100%的图像,并且不需要裁剪:
基本上,我将图像镜像到3x3网格中,然后对所有内容进行模糊处理,然后放大中心图像,从而在后期效果模糊化时有效地像重复边缘一样创建,css3没有内置的重复边缘有点奇怪。
链接到方法/代码: 如何使用CSS3模糊图像而不会裁切或淡化边缘?
margin
是必需的。