很早就在这里看到过解决方案,与嗷嗷讨论后发现这个方案还是很可靠的。当然,唯一的缺点就是每一个属性都要去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)); }
是不是很方便:)
DDDDDDDDDDDDDD
微软刚刚已经给盗版用户升级IE7了,,,IE6应该可以放弃了,有时间去网吧观察一下是不是这样
从我的Google Analytics结果表明,IE6就算要消亡,也不是朝夕之事
其实还是这样
.test{
position:fixed !important;
position:absolute;
}
比较简单,ie6的important bug处理起来最简单了
这样只能解决IE6与IE7,FF之类浏览器的Hack,并不能解决IE7跟FF,Opera之类浏览器的Hack~
用expression会非常耗资源,以前referer后台有这样用,后来发现网页莫名奇妙的狂占内存,后来发现是expression的问题,因为css中的expression是不断在执行。
呃。这个,也就是说同样效果的JavaScript代码会是一个更好的solution?
是这样,expression只是一种取巧的写法。你可以观察一下,在用expression实现滚动效果的页面中,鼠标随便晃动,内存都会增加
寒,这个到真没有观察。Anyway,我觉得小项目这样做也没关系。要知道Flash7的内存泄漏比这个厉害多了。
其实使用expression主要就是为了省掉JavaScript,呵呵……
忽然想起当初为什么发现这个问题,其实不是因为内存占用,是因为ie crash!
刚开始有短时间在clicki的后台进行操作,ie经常莫名其妙死掉,我以为是ajax的问题,后来发现是这个expression造成的!
我也是最近搜索如何让IE支持verticle-align的时候才发现#和_的区别,一个包括IE7,一个仅包括IE6-。
“第二排给IE7″~···
怎么我的IE6也认识呢~···
那这样“*”和“#”有和区别了?不都是区分IE?
只可惜不能通过校验,其实这个方法是很不错的。
expression确实在执行效率上有问题,不推荐使用。
“执行效率”?这似乎和“内存泄漏”是两回事儿啊。
习惯用
#someNode
{
position: fixed;
+position: fixed;
_position: fixed;
}
不错。IE6总要淘汰
很有用的資訊
但不知為何我的IE7已經update了仍然出現IE6的毛病
奇怪了
为什么无法区分ie6和ie7??
难道是ie7修复了这个bug??
#someNode
{
position: fixed;
#position: fixed;
_position: fixed;
}
#someNode
{
position: fixed;
+position: fixed;
_position: fixed;
}
我固执的认为CSS和HTML应该尽量通过W3C认证
某天的某个升级,也许hacks就无法生效了。
有用哦!谢谢你!
不过其余的margin貌似就没用了。。。
请教一下在表格中使用positon定位,在ie中是可以的,但是在ff里面却有问题:
ie 6 显示是根据定位样式 来的.但在ff里面却挤成一团了.感谢..
你好,请教以下,如果让我的网站实现对ie6的css hack,其他ie7,ie8,safari,firefox都已经完成,ie6把我难道了,如果可以帮助我,万分感谢
IE 8 和 firefox 显示效果很像 我试了好几个都和 firefox 一致
刚碰到无端端ie6、ie7间隔40像素的问题,用
#margin-left:-40px;
_margin-left:-40px;
解决了