浏览器在 opacity 继承问题上的差异
2015-12-21 · 282 chars · 2 min read
这次说的不是什么大问题,但是出现问题后很难排查。最近一个项目用了大量的 CSS3 动画,使用 PostCSS 的 autoprefixer 自动加前缀,兼容 IE10 以上的所有浏览器,但是在 chrome 开发完毕,做兼容测试的时候,却发现 IE10、IE11 的 opacity 失效了。百思不得其解……
万幸的是并不是所有的 opacity 都失效了,对比生效和失效的代码,终于发现,IE10、11 和 chrome 等浏览器,在处理 opacity 的继承性问题上,存在差异。简单来说就是,父元素没有定位,子元素使用了定位属性 position(脱离文档流),IE 下子元素不继承父元素的 opacity,而其他浏览器会继承。
大家可以测试下面的代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Opacity</title> <style> .parent { width: 100px; height: 100px; opacity: 0.5; } .child { width: 100px; height: 100px; background: #000; position: absolute; z-index: 1; top: 0; left: 0; } </style> </head> <body> <div class="parent"> <div class="child"></div> </div> </body> </html>