Bro*_*ell 5 html javascript css safari webkit
我正在尝试使用CSS过滤器来模糊图像.在所有浏览器中,模糊滤镜会导致模糊超出图像范围,无论您将模糊设置为(预期)的值.但是我想要定义边缘(并且图像有一个框阴影),所以我用另一个overflow设置为的div包装图像hidden.这适用于所有浏览器.
但是,由于某些特定于应用程序的约束,我需要在加载时使用JavaScript更新包装器的大小并调整大小.这适用于除Safari之外的所有浏览器.随机更改包装元素的大小会触发绘制错误,其中过滤器开始越过包装器的边界.它并不总是如此,但似乎在MobileSafari上和/或基于DOM的大小增加了可能性.
这是一个小演示的小提琴.使用Safari,重复调整窗口大小,您将触发错误.有时它会重新粉碎并自我修复,有时它不会.(使用Chrome或Firefox,它会正常工作.)
应该注意的是,与这个小提琴不同,在应用程序中我只是在它们改变时设置新的宽度和高度,并且即使在调整大小事件期间没有设置宽度和高度,Safari仍然在模糊转义和不转义之间波动. .
我尝试过的事情(没有奏效):
clearTimeout/ 完成resize事件setTimeoutoverflow: hidden更改大小后,使用JavaScript 取消设置包装器和图像window.getComputedStyle(wrapper)(和图像上,以及父元素)translateZ(0)变换),这确实会阻止一些模糊溢出,但还不够.(屏幕截图.)设置计时器以禁用转换只会将页面返回到完全模糊转义.white-space: nowrap在包装器上设置document.styleSheets[x].cssRules[x].style.setProperty()而不是object.style.width/height我现在很困惑,非常感谢你提供的任何帮助.谢谢!
你可以给CSS中的包装器提供一个流体width,这将与你的JS代码具有相同的效果,这可能会修复你的错误,你也可以将你的widthof更改img为max-width
#image_wrapper {
overflow: hidden;
margin: 30px auto;
box-shadow: rgba(0, 0, 0, 0.5) 0 5px 14px;
width:95% /* whatever fits you better here */
}
#image {
-webkit-filter: blur(50px);
filter: blur(50px);
max-width: 100%;
}Run Code Online (Sandbox Code Playgroud)
<div id="image_wrapper">
<img id="image" src="https://scratch.brockbatsell.com/black-wallpaper-13.jpg">
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |