让IE5.5+也支持position:fixed;
2010-09-14 13:23:50 来源:WEB开发网另外的问题如何解决?
好,也许你想把它放在右下角。理论上,你只需要将左替换为右,上替换为下。你只要将表达式的开头部分的+号改为-号即可。如果那样简单就好了。但并不是那样简单。IE获到的是完全错误的位置,直到你滚动页面,然后重新配置两倍的距离,如果你除以2将每次1个像素,呸!
因此,它总是需要通过左上来进行定位,无论喜欢与否。但是我们能重新定位它检查它自己的尺寸和窗口的尺寸。移动它到其它的角落。我们可以通过在“标准遵从规范”里的documentElement对象规范的clientHeight的属性解决它自己的大小(多么垃圾!如果IE一开始就遵从规范那样我就就不必要去经历这么多愚蠢的事-离题了),还有在Quirks mode 中的Body对象(详细信息看这个我的Javascript 文档window size部分)。我们可以得到元素本身的大小通过使用fixme.offsetHeight。这是为了更正常的表现的IE的简短方法。
document.getElementById('fixme').offsetHeight
太感谢了,这个窗口与元素的大小不必任何的戏法去强制它们去更新。但我们一直需要去检查这个standards/quirks模式。
这个默认安装是使用右下属性的,所以浏览器正好正确的支持。在IE5.5+,这些要重新设置,并且左上的位置替换。记住右下的效法像这样,在表达式中这个补偿必须是负的。
<style type="text/css">
#fixme {
/* Netscape 4, IE 4.x-5.0/Win and other lesser browsers will use this */
position: absolute; right: 20px; bottom: 10px;
}
body > div#fixme {
/* used by Opera 5+, Netscape6+/Mozilla, Konqueror, Safari, OmniWeb 4.5+, iCab, ICEbrowser */
position: fixed;
}
</style>
<!--[if gte IE 5.5]>
<![if lt IE 7]>
<style type="text/css">
div#fixme {
/* IE5.5+/Win - this is more specific than the IE 5.0 version */
right: auto; bottom: auto;
left: expression( ( -20 - fixme.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
top: expression( ( -10 - fixme.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
}
</style>
<![endif]>
<![endif]-->
为什么不在Netscape 4的浏览器中用 JavaScript 去解决它呢?
如果你想去做,仅仅只需要像这样:
if( document.layers ) { setInterval ( 'document.layers.divID.top=window.pageYOffset;', 100 ); }
你甚至可以在IE4 和 5.0/Win用 document.all. 但老实说, 在Netscape 4浏览器中,我正面临使CSS可以工作的非常讨厌的问㼵,我知道有许多的问题可以通过它可以解决,但是面临事实吧;NETSCAPE4 不通应对今天的CSS。它虽然很好但它的历史一去不复返了。让它安息吧。
更多精彩
赞助商链接