解决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下移动浮动层闪动问题

评论(0)Web开发网
阅读(776)喜欢(1)HTML/CSS兼容/XML