【发布时间】:2018-01-29 15:14:34
【问题描述】:
我正在寻找一种方法来模糊/玻璃背景以创建一些叠加层和对话框。我偶然发现了许多可能的解决方案,但没有一个符合我的要求。
您可以通过使用同一图像的两个版本(原始 + 模糊)来解决此问题,然后在叠加背景中偏移模糊版本,或者您可以使用一些疯狂的东西,例如 html2canvas,创建一个快照并基本上选择第一个解决方案。
问题是,这根本不是“活”的。如果 DOM 发生变化,您不会察觉,尤其是在您使用单个图像的模糊版本时。
壁虎来救援?
Firefox/Gecko 很久以前就引入了一个相当不错的 CSS 功能,称为 element()。它允许您只克隆实时 DOM 中任何元素的面。这很方便,可以解决我原来的问题,它看起来像这样:
演示:https://codepen.io/anon/pen/prLBpQ(不幸的是,仅适用于 Firefox)。
element() 的伟大之处在于,它是真实的,即使您在“目标”表面内移动其他元素,它也会立即反映在您的背景上。
尽管这个功能很棒,但它多年来只在 Firefox 中可用,所以我唯一的问题是,是否有任何其他聪明的方法可以在 webkit 上创建类似的实时效果,这是我目前想不到的。
【问题讨论】:
-
@user5014677,你读过这个问题吗?对我来说这听起来很合理。
-
@user5014677,这不是审查代码并使其变得更好,而是使其具有跨浏览器功能, 是 SO 的主题。
-
@zzzzBov dup 中的答案。帖子有点过时(这是在 filter:blur 可用 f.ex. 之前)。
-
@K3N,这并没有减少它的欺骗性,只是意味着是赏金的时候了。
-
@zzzzBov 没关系,我看到最佳答案已更新为过滤器解决方案
标签: javascript html css firefox