搜索

查看: 3174|回复: 11

[CSS/HTML] 详解IE6中的position:fixed问题与随滚动条滚动的效果

[复制链接]
发表于 2023-5-4 16:49:52 | 显示全部楼层 |阅读模式
Editor 2023-5-4 16:49:52 3174 11 看全部
详解IE6中的position:fixed问题与随滚动条滚动的效果
前言:
在《【jQuery】兼容IE6的滚动监听》(点击打开链接)提及到解决IE6fixed问题,具体是要引入一个js文件,还要声明一条脚本就为这个div声明fixed定位去解决,起始这样很不好啊。引入的Javascript不好管理之余,还要在head声明引入javascript,之后又要给这个div声明一个id,之后又要在脚本出弄一条声明,实在是烦死了。

使用position:fixed无非是想做出如下的效果。

基本上position:fixed是在IE7以上的所有浏览器都是没有问题的:

IE8:

201709201459035.gif

详解IE6中的position:fixed问题与随滚动条滚动的效果948 作者:Editor 帖子ID:2831 详解,ie6,问题,滚动,滚动条知鸟论坛_zn60.com


野狐禅FireFox:

201709201459036.gif

详解IE6中的position:fixed问题与随滚动条滚动的效果322 作者:Editor 帖子ID:2831 详解,ie6,问题,滚动,滚动条知鸟论坛_zn60.com


然而由于IE6中直接就没有position:fixed属性,要做出如下的效果:

201709201459037.gif

详解IE6中的position:fixed问题与随滚动条滚动的效果4730 作者:Editor 帖子ID:2831 详解,ie6,问题,滚动,滚动条知鸟论坛_zn60.com


只能利用position: absolute;加一段在css样式中执行的javascript脚本去解决。




   
     
    Untitled Document
         
      .fixedbox {
        background: #69C;
        height: 60px;
        width: 100px;         
        position: fixed;
        bottom: 100px;
        /*IE6实现position: fixed;*/
        /*等价于position: fixed;虽然代码好长,但是根本就不用管*/
        _position: absolute;         
        _top: expression(eval(
        document.documentElement.scrollTop + document.documentElement.clientHeight-this.offsetHeight-
        (parseInt(this.currentStyle.marginTop,10)||0)-
        (parseInt(this.currentStyle.marginBottom,10)||0)));
        /*等价于position: fixed;虽然代码好长,但是根本就不用管*/
        _margin-bottom:100px;/*设置位置,不要用bottom,而是改用margin-bottom,margin-xx来实现*/
      }
     
   
  
     
      sss
sss
sss
sss
sss
sss
sss
sss
sss

      sss
sss
sss
sss
sss
sss
sss
sss
sss

      sss
sss
sss
sss
sss
sss
sss
sss
sss

      sss
sss
sss
sss
sss
sss
sss
sss
sss
   
     
     
         
  



上述代码,对于IE6的样式,前面都加上了_,_的部分是IE6特定的重写样式声明,具体见《【CSS】关于CSS样式中的!important、*、_符号》(点击打开链接

而实际上,在IE6中,以下的CSS:


.fixed{
  position: absolute;        
  top: expression(eval(
    document.documentElement.scrollTop + document.documentElement.clientHeight-this.offsetHeight-
    (parseInt(this.currentStyle.marginTop,10)||0)-
    (parseInt(this.currentStyle.marginBottom,10)||0)));
}

等价于其它浏览器的:


.fixed{
  position: fixed;
}

当然IE6中实现position:fixed的CSS可能在某些浏览器中不正常,因此在各个样式前面补上一条下划线_,表示仅在IE6中执行。

同时IE6应有的如上样式之后,不要像其它浏览器用right,top,left,bottom去定位,而是用margin-bottom,margin-left,margin-right去设置被position:fixed的div的位置,

这里调节div的位置的时候还需要注意,由于上述的兼容IE6的CSS利用到top的属性,所以设置margin-top是不管用,如果你要设置这个div在浮动的时候,离浏览器的顶部是多少的话,你应该这样写:


.fixed{
  /*IE6实现position: fixed;*/
  _position: absolute;         
  _top: expression(eval(document.documentElement.scrollTop));
  _margin-top:100px;
}

这里关于_top的代码之所以短了这么多,是因为无须用document.documentElement.clientHeight来获取浏览器显示窗口大小。

而-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)一切是为了微调更加精确,如果你不想要也可以不加,仅仅是有一点视觉效果而已。

再者,上述的代码,大家可以看到,关于fixedbox这个东西,我并没有设置其right,left,是因为,我想让其在随滚动条滚动的时候,依旧能够保持父级div的float:left属性。

就是,右边的蓝色色块,与左边一大堆sss,依旧是80%与20%的分割。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
发表于 2023-6-28 22:11:04 | 显示全部楼层
知足常乐77 2023-6-28 22:11:04 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
发表于 2023-6-28 22:56:17 | 显示全部楼层
尘埃416 2023-6-28 22:56:17 看全部
楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
发表于 2023-6-29 13:43:35 | 显示全部楼层
贰十岁装成熟装s 2023-6-29 13:43:35 看全部
我看不错噢 谢谢楼主!知鸟论坛越来越好!
发表于 2023-6-29 16:18:52 | 显示全部楼层
伊索谗言 2023-6-29 16:18:52 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛。
发表于 2023-6-29 19:20:15 | 显示全部楼层
ffycxyw2274436 2023-6-29 19:20:15 看全部
感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
发表于 2023-6-29 19:57:25 | 显示全部楼层
井底燕雀傥 2023-6-29 19:57:25 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
发表于 2023-6-29 22:56:52 | 显示全部楼层
当当当当裤裆坦 2023-6-29 22:56:52 看全部
既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
发表于 2023-6-30 02:14:44 | 显示全部楼层
幸福341 2023-6-30 02:14:44 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
发表于 2023-6-30 10:01:13 | 显示全部楼层
六翼天使494 2023-6-30 10:01:13 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| 小黑屋| 知鸟论坛 |网站地图
本站资源来自互联网用户收集发布,如有侵权请邮件联系处理。 联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表