在IE6中伪造固定位置

时间:2010-04-21 12:52:02

标签: javascript jquery internet-explorer-6 css

我的网站使用了底部固定位置标头:http://www.entheospartners.com/newsite/

这个设置适用于除IE6以外的所有浏览器,IE6至少不支持固定定位,所以这就是我所做的:

当IE6用户访问该页面时,我使用这段代码确定是否需要滚动:

var windowHeight = $(window).height();
var totalHeight = windowHeight - 100; // where 100 is the sum of the top nav height + footer height
var contentHeight;

if($('#subpage-content-small').length) { // main content div for a three column layout
    contentHeight = $('#subpage-content-small').height();
};

if($('#subpage-content-wide').length) { // main content div for a two column layout
    contentHeight = $('#subpage-content-wide').height();
};

if(contentHeight > totalHeight) {
    $('#container-container').css({
        'overflow-y' : "scroll",
        'height' : totalHeight
    });
};

...正确计算所有内容,将滚动条放在需要的位置(向右平齐),并将它们设置为适当的高度。问题是滚动条不会移动内容。我不能说我以前见过这样的东西,所以我希望这里的其他人有。提前谢谢!

PS - 显然,这需要在IE6中进行故障排除,我知道这对你来说和我一样痛苦。

更新

在对CSS表达式进行一点挖掘后,基于第一个答案,我找到了一个解决方案,用于将菜单固定定位到页面顶部。我只需要能够使用它并将其应用到页面底部。它并不像将所有“顶部”切换到“底部”那么简单,所以我希望有人可以启发我。这是CSS:

#divfixed { 
    position: absolute; 
    top: expression(0+((e=document.documentElement.scrollTop)?e:document.body.scrollTop)+'px'); 
    left: expression(0+((e=document.documentElement.scrollLeft)?e:document.body.scrollLeft)+'px');}

2 个答案:

答案 0 :(得分:1)

您可以使用CSS表达式。以下代码已从here复制。

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]-->

答案 1 :(得分:0)

经过更多基于CSS表达式的研究后,我发现了一个有用的jQuery插件,对我来说非常有用:http://chrisiona.com/fixedposition/

我正在使用条件来定位IE6并将页脚栏定位为绝对底部,然后应用fixedPosition插件并且它工作得很好。我无法设想太多其他时间我会使用这个插件,但希望它能够帮助其他人。