-webkit-backface-visibility:hidden 这个CSS3可以在CSS3动画时解决闪烁的问题,但是你或许不知道,加上这个样式后可能会让你在某些时候遇到奇葩的问题。

我今天就因为这个样式让我纠结了半天,同样的CSS代码在别处可以,在这边就会出现overflow:hidden失效的问题,但是始终找不到问题所在,最后使用替换、一部分一部分大面积的删除代码的办法找到了问题所在。。。

然后我把CSS代码进行提炼,做了一个demo出来,链接 : http://jsfiddle.net/jonwang/q9LaB/5/

注意,用chrome或safari打开,我的浏览器版本是28.0.1500.95,截止目前是最新的。用firefox打开是好的,是浏览器BUG还是什么问题?

其实不光 -webkit-backface-visibility:hidden 这个CSS,当一个DIV使用了 -webkit-transform: translate(0, 0, 0); 这样的CSS后,也有可能导致某些异常问题,可能还是浏览器实现的细节需要完善吧,不过现在来说,还是要避免的,特别是当自己遇到一些奇葩的问题时,建议多从这些CSS上找问题,在使用时要特别小心。

这边在列举几个我遇到的问题,当然不是浏览器的问题,而是需要提升的CSS经验。
比如一个div样式 -webkit-transform: translate(0, 0, 1px); 然后又设置了 z-index: 1; 这时因为这个div已经设置了translate的Z轴,所以z-index就会没有用了。这种情况多发生在明明某个div的z-index比另外一个低,但是它却显示在另外一个div上。

当然,还有这哥儿遇到的问题 http://stackoverflow.com/questions/10355564/backface-visibility-broken-in-chrome-certain-platforms-versions
他贴了一个在线测试的地址 http://jsfiddle.net/csaltyj/TYuL3/
第二个div按传统的理解它应该覆盖在第一个div上,但是却没有。
这也是 -webkit-backface-visibility: hidden; 导致的,这和我遇到的问题不一样,这个表现应该是正确的,因为这个样式就是用来隐藏掉动画的背面的。

总之,CSS3有很多新的特性,有些问题可能是浏览器实现的bug,有些可能就是我们的经验问题了