【发布时间】:2013-09-25 23:47:43
【问题描述】:
我想创建一个不透明模糊覆盖,类似于 Windows Aero 或 iOS7。不幸的是,filter: blur() 或 filter: url(#svgBlur) 属性只能应用于元素,不能应用于其背后的内容。
为了解决这个问题,我们需要一个模糊的背景副本。这可以在 FX 中使用 background: -moz-element(#elementId) 实验性 CSS 属性实现。使用它我可以在FX only中得到我想要的效果。
有otherquestions关于解决模糊问题,one solution貌似是使用html2Canvas插件。
但是,这是重新创建整个模糊内容,包括手动重新创建的样式等。这是一项非常令人印象深刻的工作,但对于这种效果来说,这似乎是一种巨大的矫枉过正(无论是在性能上还是在尺寸上)。
我想做的是为-moz-element 创建某种垫片。看起来像 should be possible using an SVG foreignObject,但如果您的 HTML 不是有效的 XML,它会同时存在安全问题和失败。
有没有什么方法可以模拟-moz-element(使用画布、SVG 或其他东西)而我不必解析/重绘整个覆盖区域?
【问题讨论】:
-
你不能使用半透明背景图片作为后备并收工吗?
-
@cimmanon 实际上一个 CSS
opacity标志将是不兼容浏览器的后备方案,但仅此而已:后备方案。 -
问这个问题已经 2 年多了,但 firefox 仍然是唯一支持这个很棒的功能的浏览器。真可惜。
标签: css firefox canvas svg shim