gpt4 book ai didi

css - 为什么 -webkit-filter 不适用于嵌套元素?

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:16 24 4
gpt4 key购买 nike

在 chrome 中关闭 -webkit-filter 似乎有问题。

当使用非浏览器特定的 filter css 属性时,它似乎也无法像我期望的那样在 firefox 34.0.5 或 firefox 35 中工作。

显然,根据 caniuse,属性应该可用.

给定以下代码片段(或 here on CodePen ):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style>
#outer {
background: blue;
-webkit-filter: grayscale(100%);
}

#outer #inner {
background: green;
-webkit-filter: none;
}
</style>
</head>
<body>
<div id="outer">
outer
<div id="inner">inner</div>
</div>
</body>
</html>

最重要的是,为什么 div#inner 没有关闭它的过滤器?

最佳答案

我认为您误解了 filter 的工作原理:过滤器不像其他 CSS 属性那样被继承,它只对 div 的呈现内容应用一次。因此,您的内部 div 没有应用过滤器,然后包含您的内部 div 的外部 div 应用了过滤器。

filter 是一个合成操作:渲染外框的内容,然后应用 filter。您无法“关闭”内框上的过滤器,因为它未应用于该级别。

将其想象成画中画:您有外部图像,粘贴到内部图像上,然后拍摄生成的图像并应用灰度效果。这基本上就是浏览器在这里所​​做的。

基本上,它是这样工作的:

Visual diagram of compositing process for inner/outer

如果你想让它工作,你可以把你的内部 div 放在一个完全独立的层上。也就是说,将您的“外部”div 放入较低层的 div,并将您的“内部”div 放入绘制在较低层 div 上方/前面的较高层 div,而不是包含在其中:

Visual diagram of compositing process for higher/lower

关于css - 为什么 -webkit-filter 不适用于嵌套元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28289554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com