正在加载...
    1

很早就在这里看到过解决方案,与嗷嗷讨论后发现这个方案还是很可靠的。当然,唯一的缺点就是每一个属性都要去Hack,但我在很多实践中,只用‘修正’1-2个属性就可以了。

具体写法很容易:

#someNode
{
    position: fixed;
   #position: fixed;
   _position: fixed;
}
  • 第一排给Firefox以及其他浏览器看
  • 第二排给IE7(可能以后的IE8、IE9也是如此,谁知道呢)看
  • 第三排给IE6以及更老的版本看

最好的应用就是可以让IE6也“支持”position:fixed,而且,配合这个原理,可以做到不引入JavaScript代码(仅用IE6的expression),我这里有一个现成的页面,CSS如下写:

#ff-r
{
 position:  fixed;
_position:  absolute;
 right:     15px;
 top:       15px;
_top:       expression(eval(document.compatMode && 
            document.compatMode=='CSS1Compat') ? 
            documentElement.scrollTop+15 : 
            document.body.scrollTop +
            (document.body.clientHeight
            -this.clientHeight));
}

是不是很方便:)

还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:


本文相关评论: 才 25 条评论
  1. 胡戈戈 2007-10-13 12:11:15

    DDDDDDDDDDDDDD

  2. zicjin 2007-10-13 12:27:30

    微软刚刚已经给盗版用户升级IE7了,,,IE6应该可以放弃了,有时间去网吧观察一下是不是这样

    • aw 2007-10-13 01:55:55

      从我的Google Analytics结果表明,IE6就算要消亡,也不是朝夕之事

  3. afcn007 2007-10-13 03:33:30

    其实还是这样
    .test{
    position:fixed !important;
    position:absolute;
    }
    比较简单,ie6的important bug处理起来最简单了

    • iVane Hwang 2007-10-13 06:27:08

      这样只能解决IE6与IE7,FF之类浏览器的Hack,并不能解决IE7跟FF,Opera之类浏览器的Hack~

  4. david 2007-10-13 09:42:50

    用expression会非常耗资源,以前referer后台有这样用,后来发现网页莫名奇妙的狂占内存,后来发现是expression的问题,因为css中的expression是不断在执行。

    • aw 2007-10-13 09:45:11

      呃。这个,也就是说同样效果的JavaScript代码会是一个更好的solution?

      • david 2007-10-15 12:42:36

        是这样,expression只是一种取巧的写法。你可以观察一下,在用expression实现滚动效果的页面中,鼠标随便晃动,内存都会增加

        • aw 2007-10-15 01:01:37

          寒,这个到真没有观察。Anyway,我觉得小项目这样做也没关系。要知道Flash7的内存泄漏比这个厉害多了。
          其实使用expression主要就是为了省掉JavaScript,呵呵……

          • david 2007-10-18 11:45:23

            忽然想起当初为什么发现这个问题,其实不是因为内存占用,是因为ie crash!
            刚开始有短时间在clicki的后台进行操作,ie经常莫名其妙死掉,我以为是ajax的问题,后来发现是这个expression造成的!

            (评论已经达到最大深度!)
  5. Cat Chen 2007-10-14 12:33:36

    我也是最近搜索如何让IE支持verticle-align的时候才发现#和_的区别,一个包括IE7,一个仅包括IE6-。

  6. wondger 2007-10-14 01:31:20

    “第二排给IE7″~···
    怎么我的IE6也认识呢~···
    那这样“*”和“#”有和区别了?不都是区分IE?

  7. LEMONed 2007-10-14 07:21:45

    只可惜不能通过校验,其实这个方法是很不错的。

  8. Richbox 2007-10-15 10:49:54

    expression确实在执行效率上有问题,不推荐使用。

    • aw 2007-10-15 11:14:34

      “执行效率”?这似乎和“内存泄漏”是两回事儿啊。

  9. firepage 2007-10-15 06:01:20

    习惯用
    #someNode
    {
    position: fixed;
    +position: fixed;
    _position: fixed;
    }

  10. 厦门网站建设 2007-10-18 08:33:03

    不错。IE6总要淘汰

  11. Ivy 2007-12-24 05:19:17

    很有用的資訊
    但不知為何我的IE7已經update了仍然出現IE6的毛病
    奇怪了

  12. xhlv 2008-01-07 04:39:26

    为什么无法区分ie6和ie7??
    难道是ie7修复了这个bug??

    #someNode
    {
    position: fixed;
    #position: fixed;
    _position: fixed;
    }

    #someNode
    {
    position: fixed;
    +position: fixed;
    _position: fixed;
    }

  13. CSS 2008-01-23 09:42:51

    我固执的认为CSS和HTML应该尽量通过W3C认证

    某天的某个升级,也许hacks就无法生效了。

  14. nh 2008-06-17 07:10:39

    有用哦!谢谢你!
    不过其余的margin貌似就没用了。。。

  15. 胖乎乎的坛子 2008-07-22 05:46:31

    请教一下在表格中使用positon定位,在ie中是可以的,但是在ff里面却有问题:
    ie 6 显示是根据定位样式 来的.但在ff里面却挤成一团了.感谢..

  16. baguser 2009-10-05 12:42:14

    你好,请教以下,如果让我的网站实现对ie6的css hack,其他ie7,ie8,safari,firefox都已经完成,ie6把我难道了,如果可以帮助我,万分感谢

  17. 清如许 2009-10-07 12:28:31

    IE 8 和 firefox 显示效果很像 我试了好几个都和 firefox 一致  

  18. 郑义文 2010-09-12 01:25:37

    刚碰到无端端ie6、ie7间隔40像素的问题,用
    #margin-left:-40px;
    _margin-left:-40px;
    解决了

[支持Ctrl+Enter]为了我们大家和家人的安全,留言请慎重!
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍