在 CSS 中,我们有transform
和filter
,我们也有backdrop-filter
. 但据我所知,我们没有backdrop-transform
,或类似的东西。
解释我的意思:backdrop-filter
允许您过滤某些特定元素后面的东西,例如,您可以通过将 a 定位div
在该区域上,然后应用backdrop-filter: hue-rotate(90deg)
到它来调整背景图像的特定区域的色调,就像这样:
backdrop-transform
财产的类似物也是如此transform
。您可以transform
作为背景图像的一部分,如下所示:
您也可以使用单个嵌入式 youtube 视频(或任何其他 iframe)执行类似的操作,例如:
请注意,如果您尝试使用两个单独的 iframe 来模拟这一点,您需要以某种方式保持彼此同步(关于滚动、视频播放等),如果 iframe 是,这可能很难/不可能跨域。更不用说为您要转换的每个片段嵌入新的 iframe/视频的成本。
也许我对 Houdini 的惊人承诺太醉了,但我认为这样的东西会非常强大并且非常有用(至少对我来说!)。例如,您可以嵌入一个视频元素,但将其分成四份,甚至使用 CSS 将这些四份混杂在一起!用 4 个不同的蒙版视频来做这件事会很乏味,并且试图让它们逐帧完美同步可能会很麻烦(尤其是考虑到 HTML5 视频 API 的时间分辨率低),并且在服务器上剪切视频 -只是看起来不必要的艰巨。
对于我的特定用例,我什至无法控制视频(它位于跨域 iframe 中),因此 CSS 是实现我想做的唯一方法。backdrop-filter
让我走到了一半,但我还需要能够独立地转换这些片段。
可能的解决方案#1:element()
CSSelement(...)
可以在url(..)
函数可以使用的任何地方使用。它允许您将页面上任何元素的完整快照(包括跨域内容)用作图像(令人惊叹)。对于那些感兴趣的人,这里有一些演示。唯一的问题是它目前只被 Firefox 支持,但它是在标准轨道上,所以它很有可能在未来被其他浏览器支持。如果我们获得了该函数的跨浏览器版本,我们可以通过假设属性element()
实现一切可能。backdrop-transform
我们只需在该区域上放置一个 div,然后获取它的实时快照,并根据需要对其进行转换。性能可能是一个问题,具体取决于element()
幕后的实现方式。这是铬的element()
问题。