让IE5.5+也支持position:fixed;
2010-09-14 13:23:50 来源:WEB开发网div#fixme { position: absolute; left: 0px; top: 0px; }
body > div#fixme { position: fixed; }
它将产生一个相当漂亮的效果,并且与一个检测当前样式是绝对定位的JAVASCRIPT结合时将会更好,当获到onScroll事件时再重新定位。
可以改善这种情况吗?
可以。如果它仅用CSS可以实现的话那将会更简洁,我找到了一个离那个要求更近的方法。
在IE5的时候,㠞软就加入了它们的属性Expression到CSS当中,我急于选择这些去进行元素的绝对定位。在浏览器中,Expressions应该是一个根据变化自动更新的,如在滚动页面或者改变窗口的时候。
div#fixme {
left: expression( document.body.scrollLeft + 'px' );
top: expression( document.body.scrollTop + 'px' );
}
body > div#fixme { position: fixed; left: 0px; top: 0px; }
但还是太令人失望的。由于在IE表达式的说明中提到了一个BUG,它将不再更新这个,因此只能停留在(0,0)的坐标。
不管怎么样,用一些CSS就可以玩弄的,我产生了一些奇怪的念头。如果我分配这个值到变量当中的话,那我就将它指定到Expression的同一行中。在IE5.5和6.0中它已经更新了。虽然有轻微的抖动,但与用脚本来控制定位的技术相比也不算坏。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
top: expression( ( ignoreMe = document.body.scrollTop ) + 'px' );
当然,在IE6,按照顺从方式把document.documentElement.scrollTop赋给变量,所以我也需要去检查。IE7在这个问题上也是被排除的。
更多精彩
赞助商链接