我在寻找一种方法来模糊/玻璃化背景,以创建一些叠加层和对话框。我发现了很多可能的解决方案,但没有一个符合我的要求。你可以通过使用两个版本的相同图像(原始+模糊)来解决此问题,然后在叠加背景中偏移模糊版本,或者您可以可能使用一些疯狂的东西,如html2canvas,创建快照并基本上采用第一个解决方案。问题是,这根本不是“真实的”。如果DOM中有任何更改,您都无法捕获它,尤其是如果您只使用单个图像的模糊版本。Firefox / Gecko引入了一个非常好的CSS功能,称为element(),它允许您仅克隆您的实时DOM中任何元素的面部。这非常方便,以解决我的原始问题,并且看起来像这样:
https://istack.dev59.com/sxAz0.webp
演示:https://codepen.io/anon/pen/prLBpQ(不幸的是,仅适用于Firefox)。element()的最棒之处在于,它是真正的实时的,即使您将其他元素移动到“目标”表面内,它也会立即反映在您的背景上。尽管这个功能很棒,但多年来它仅在Firefox中提供,因此我的唯一问题是,如果有其他聪明的方法可以在WebKit上创建类似的实时效果,在目前我还想不到。