`

div固定顶部或底部,IE下postion:fixed问题

 
阅读更多


像你所遇到的问题一样, IE6浏览器有太多的bug让制作网页的人头疼。这篇文章介绍的是介绍的是如何解决IE6不支持position:fixed;属性的办法。如果我们需要做某个元素始终位于浏览器的底部,不会因为浏览器窗口的缩放和滚动条的滚动而变化,那个肯定是想到的用position:fixed生成绝对定位,只要设置这个CSS属性就能达到刚刚的需求。当其他浏览器都正常显示的时候,只有IE6不那么完美。该元素的位置是通过"left", "top", "right" 以及 "bottom" 属性进行规定。

一般的 position:fixed; 实现方法

以我的博客为例,在右下角 <div id="top">...</div>这个 HTML 元素使用的 CSS 代码如下:#top{
position:fixed;
bottom:0;
right:20px;
}
实现让 <div id="top">...</div> 元素固定在浏览器的底部和距离右边的20个像素。

在 IE6 中实现 position:fixed; 的办法

刚刚提过,在IE6中是不能直接使用 position:fixed; 。你需要一些 CSS Hack 来解决它。当然,IE6 的问题也不仅仅 position:fixed;

相同的还是让 <div id="top">...</div> 元素固定在浏览器的底部和距离右边的20个像素,这次的代码是:#top{
position:fixed;
_position:absolute;
bottom:0;
right:20px;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}
right 跟 left 属性可以用绝对定位的办法解决,而 top 跟 bottom 就需要用上面的表达式来实现。其中在_position:absolute; 中的 _ 符号只有 IE6 才能识别,目的是为了区分其他浏览器

上面的只是一个例子,下面的才是最重要的代码片段:

使元素固定在浏览器的顶部#top{
_position:absolute;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop));
}
使元素固定在浏览器的底部#top{
_position:absolute;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}
这两段代码只能实现在最底部跟最顶部,你可以使用 _margin-top:10px; 或者 _margin-bottom:10px; 修改其中的数值控制元素的位置。

position:fixed; 闪动问题

现在,问题还没有完全解决。在用了上面的办法后,你会发现:被固定定位的元素在滚动滚动条的时候会闪动。解决闪动问题的办法是在 CSS 文件中加入:*html{
//background-image:url(about:blank);
background-attachment:fixed;
}
其中 * 是给 IE6 识别的。

到此,IE6 的 position:fixed; 问题已经被解决了。这里还为大家搜集了一个采用JS解决的办法。

JS的解决方案

JS是我最不愿使用的解决方案,因为这种纯样式的bug用JS来解决有点大材小用,而且JS需要DOM载入后才执行,有可能会出现闪屏的现象.

JS的解决方案很简单,通过设置一个top来实现,top是指分页的上边距离document的上边的长度,可以被分解成下面几项(并不是完整的代码)

top = scrollTop + clientHeight - height(分页的高度)

JS解决IE6下position:fixed元素无效的原理

scrollTop和clientHeight分别用来解决上面两个问题,滚动条的滚动会影响到scrollTop,而窗口的变化会影响到clientHeight,所以当这两个事件被触发时必须重置top,于是就形成类似下面的代码,但这段脚本的刷新率会非常高,估计有性能问题.

window.onresize = window.onscroll = function(){
    //reset top
};
分享到:
评论

相关推荐

    JS 滚动事件[removed]与position:fixed写兼容IE6的回到顶部组件

    - 在页面底部右下角,使用一个`position:fixed`的`&lt;div&gt;`,内容是向上的箭头,初始状态是隐藏的。对于IE6的兼容,我们使用`_position: absolute`,并结合`expression`来模拟`position:fixed`的效果。 2. **CSS样式...

    ie6下定位bug解决

    在其他现代浏览器中,CSS的`position`属性如`relative`、`absolute`和`fixed`能很好地实现元素的定位,但在IE6中,这些属性的处理方式却大不相同,导致开发者需要进行特殊的“hack”来解决这些问题。 首先,IE6不...

    html css 控制div或者table等固定在指定位置的实现方法

    总结来说,要使div或table固定在指定位置,需要设置其CSS的position属性为fixed,并通过top、bottom、left、right等属性来确定其在页面中的确切位置。使用z-index属性来控制其与其他元素的层叠关系。而对于旧版...

    css 固定顶部 怎么用css定义一个固定在页面顶部的层

    在网页设计中,有时我们需要创建一个元素,使其始终固定在页面的特定位置,例如顶部或底部,以便用户在滚动页面时仍然能看见。这通常通过CSS(层叠样式表)来实现。本篇将详细解释如何使用CSS定义一个固定在页面顶部...

    CSS中position属性之fixed实现div居中

    对于IE6的兼容性问题,由于它不支持`fixed`定位,我们可以使用`_position:absolute;`这个私有属性进行hack,使IE6也能实现类似的效果。但要注意,这只是一个临时解决方案,因为IE6已经不再被广泛支持,现代的网站...

    css 兼容ie6,ie7,ff的fixed,元素上下端固定定位方法

    ### CSS兼容IE6、IE7及Firefox的Fixed定位方法 #### 背景与目标 在Web开发过程中,为了确保网站在不同浏览器上的兼容性,开发者经常需要采取一系列措施来应对旧版本浏览器(如IE6、IE7)的限制。其中,`position: ...

    JS简单实现DIV相对于浏览器固定位置不变的方法

    这种方法在某些情况下可能是必要的,例如在旧版IE浏览器中,`position: fixed`可能不被支持。 以下是关键代码解析: 1. `init()`函数在页面加载完成后执行,初始化`&lt;div id="oLayer"&gt;`的初始位置。 2. `document....

    用CSS实现跟随滚动条漂浮层代码

    `在某些旧版本的IE浏览器中可能不完全支持,因此为了保证兼容性,可能需要引入适当的polyfill或者采用备选方案,如`position: absolute;`结合JavaScript监听滚动事件来实现类似的效果。 总的来说,CSS的`position`...

    基于jquery的返回顶部效果(兼容IE6)

    总结来说,这个基于jQuery的返回顶部效果通过CSS的条件注释和JavaScript的动态计算,成功地解决了IE6不支持`position:fixed`的问题,实现了在所有浏览器中都能正常工作的返回顶部功能。在实际项目中,你可以根据自己...

    AmazeUI 固定元素

    虽然固定定位在现代浏览器中得到了广泛支持,但在一些老版本的浏览器(尤其是 IE8 及以下)中可能存在问题。AmazeUI 通过优雅降级策略来确保在这些浏览器中的基本功能,但可能无法实现所有高级效果。 7. **...

    fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器

    需要注意的是,由于IE6不支持`position: fixed`,fixedBox通常会使用一种叫做“静态模拟固定定位”的技术,即通过创建一个与固定元素大小相同的隐藏div,来模拟固定定位的效果。这种方法虽然能兼容IE6,但可能会增加...

    jquery仿淘宝回顶部和建议代码

    position: fixed; bottom: 20px; /* 距离底部的距离 */ right: 20px; /* 距离右侧的距离 */ display: none; /* 初始隐藏 */ width: 50px; height: 50px; background-color: #333; color: #fff; text-align:...

    div与css的

    - **定位**: 包括相对定位(`position:relative`)、绝对定位(`position:absolute`)、固定定位(`position:fixed`)等,通过这些定位方式可以精确地控制元素的位置。 **2.2 常用CSS属性** - **布局相关的属性**: `...

    仿淘宝返回顶部TOP效果

    通常,返回顶部按钮会被固定在页面的右下角,使用`position: fixed;`和适当的`bottom`和`right`属性。按钮在页面滚动到一定距离时才会显示,这可以通过CSS的`opacity`或`display`属性配合JavaScript来实现。 3. **...

    jQuery实现仿百度帖吧头部固定导航效果

    当用户向下滚动页面时,如果导航栏已经到达顶部,我们就将其设置为固定定位(`position: fixed`),这样它就会始终显示在屏幕顶部。如果用户向上滚动,当导航栏底部距离顶部超过一定阈值(例如250像素)时,我们将其...

    JS返回顶部代码

    position: fixed; bottom: 20px; right: 30px; z-index: 999; cursor: pointer; display: none; /* 初始隐藏返回顶部按钮 */ transition: opacity 0.5s; } #backToTop:hover { background-color: #ddd; ...

    JS制作的返回网页顶部按钮代码

    在网页的底部添加一个`div`元素,作为返回顶部的按钮。通常会使用CSS来让它悬浮在页面的右下角,并且设置一个合适的隐藏和显示的样式。例如: ```html &lt;div id="back-to-top" onclick="topFunction()"&gt;返回顶部&lt;/...

    scrollTop原生JavaScript实现的回到顶部库

    对于一个元素(如body或div),`scrollTop`表示元素顶部相对于其视口顶部的距离。在我们的回到顶部库中,它将用来检测当前页面的滚动位置,并决定何时显示或隐藏返回顶部的按钮。 二、创建HTML结构 首先,我们需要...

    纯css实现的跟随网页浮动的层

    标题中的“纯css实现的跟随网页浮动的层”指的是使用CSS(Cascading Style Sheets)技术来创建一个在用户滚动页面时始终固定在屏幕底部的元素,这种效果通常被称为“粘性底部”或者“浮动底部栏”。这个效果常用于...

Global site tag (gtag.js) - Google Analytics