解决ie下移动浮动层闪动问题
IE浏览器下如果使用setInterval/setTimeout计时器实现实时移动浮动层时,浮动层会有一些细微的闪动或者震动,因为IE有一个多步的渲染进程,当滚动或调整浏览器大小的时候,它将重置所有内容并重画页面,这个时候它就会重新处理css表达式。这会引起一个丑陋的“闪动/振动”bug,在此处固定位置的元素需要调整以跟上(页面的)滚动,就会出现“跳动”。
IE7+浏览器可以通过增加xhtml申明,将文档模式修改为CSS1Compat支持position fixed定位,这样就不会闪动了。
如果是IE-或者未添加xhtml申明,解决此问题的技巧就是使用background-attachment:fixed为body或html元素添加一个background-image。这就会强制页面在重画之前先处理CSS。因为是在重画之前处理CSS,也就会同样在重画之前首先处理你的CSS表达式,这将让你实现完美的平滑的固定位置元素,不会出现闪动或者震动问题。
测试代码如下
IE6移动浮动层出现闪动问题,由于导入了xhtml申明,所以IE7+支持position fixed属性,不会闪动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <style> .scroll{position:fixed;top:0px;width:100px;height:200px;border:solid 1px black;_position:absolute;_top:expression(eval(document.body.scrollTop));right:0px} </style> <div style="height:1000px"></div> <div class="scroll"></div>
CSS修正IE6振动/闪动bug
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <style> * html,* html body /* 修正IE6振动/闪动bug */{background-image:url(about:blank);background-attachment:fixed;} .scroll{position:fixed;top:0px;width:100px;height:200px;border:solid 1px black;_position:absolute;_top:expression(eval(document.body.scrollTop));right:0px} </style> <div style="height:1000px"></div> <div class="scroll"></div>
加支付宝好友偷能量挖...
原创文章,转载请注明出处:解决ie下移动浮动层闪动问题