【发布时间】:2012-07-21 22:17:38
【问题描述】:
当一个元素被赋予opacity 时,该元素的所有静态和相对子元素都以部分透明的方式呈现。但是,带有position: absolute(或position: fixed)的元素不会继承这一点,而是以完全不透明的方式呈现,除非另有说明。
现在,我可以通过调用执行分配的函数来替换对style.opacity 的分配,然后循环遍历所有子项,获取它们的计算样式并查看它们的位置属性是否需要添加它自己的style.opacity。 ..但这有点像核弹。
我也知道我可以将opacity: inherit 添加到适当的元素中,但这仅适用于褪色元素的直接子元素 - 如果它们是后代怎么办?
我想知道是否有办法强制元素继承正确的透明度。
旁注:当我使用filter:alpha(...) 时,IE 会执行我想要的方式,这很有趣。
【问题讨论】:
-
我似乎无法复制您描述的任何行为。在 IE 上,我的绝对定位元素永远不会获得透明度,即使是
filter。在所有其他浏览器上,绝对定位元素的行为与所有其他子元素一样,以与父元素上设置的相同的不透明度呈现。 -
Made a Fiddle - 刚刚在 Chrome 中测试过,你是对的,这似乎是 IE 特有的问题...