z-index从一开始就被我忽略,几乎没有用到而导致对他的理解为零,他的准确含义是:检索或设置对象的层叠顺序。在IE5.5+中, iframe 对象开始支持此属性。而在之前的浏览器版本中, iframe 对象是窗口控件,会忽略此属性。此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。
www.80t.net 首页顶部banner为特殊的滤镜切换效果,因为如果加了dtd申明效果无效,所以此处为iframe嵌套的单独页面,这个效果在FF同样无效。如何去兼容,以前考虑了N种办法,因为此滤镜IE独有,完全效果兼容是不可能的,但有如下变通达到效果上一致:
1. 更改行为兼容,判断客户端浏览器分别载入显示,即IE正常切换,FF就显示一张图。
2. 让iframe透明,被嵌套页用图片做背景,即图片不能切换就显示背嵌套页内做背景的图片。
实践证明2不可行,1是可行的,而且也比较简单。可是在更改过程中,又发现一种使用css来兼容的方法。
此处如果按照三维角度去看一共是四层结构,最上层的在线人数显示,第二层的iframe,第三层的右侧阴影横条,第四层是背景。
想法很简单,再增加一层,绝对定位的位置和大小完全同第二层一样,也就是说两层重叠在一起,谁优先级高能看见谁,两层书写先后不影响。于是z-index就发挥了强大的作用。
<div style="width:760px; height:160px; background:url(http://www.80t.net/skin/80t/banner_default.gif); position:absolute; top:70px; left:0; z-index:2!important; z-index:1;"></div>
<iframe style="position:absolute; top:70px; left:0; z-index:1!important; z-index:2;" frameborder="0" src="/banner.htm" width="760" height="160"></iframe>
两层代码如上,通过z-index指定优先级,再综合声明判断客户端,自动指派优先级高低,很清晰的逻辑,测试通过,缺点是增加了一层的载入时间。