网页制作 
首页 > 网页制作 > 浏览文章

ActiveX插件的Z-Index属性无效问题解决

(编辑:jimmy 日期: 2024/11/5 浏览:3 次 )
在Web开发中我们经常通过z-index设置多个元素之间的层叠关系,这种方式在多数情况下很有效,但是如果遇到有窗体元素时这种方式常常显得无能为力,今天我们就一块看一下如何有效的解决这个问题。

网页控件分为两大类:有窗体元素和无窗体元素。无窗体元素包括大多数html元素(例如div、table等)、无窗体的ActivX插件、iframe等;有窗体的元素包括<Object>元素、ActiveX插件、Plug-ins插件、Select元素等。所有的有窗体元素都会出现在无窗体元素之上,而有窗体元素和无窗体元素自身遵循z-index属性约束(注意使用z-index必须设置相应元素的position为absolute)。所有的无窗体元素都被浏览器渲染在同一个MSHTML平面,而有窗体元素被渲染在一个单独的MSHTML平面上。在同一个MSHTML平面当然可以通过设置z-index属性设置其层叠关系,但是对于不同平面上的元素,这个属性却无能为力。这里需要注意ActiveX插件,默认情况下VB和MFC控件是有窗体的,而ALT是无窗体的。

虽然上面说到ifame属于无窗体元素,但是在ie中它却横跨两边。无论是有窗体元素还是无窗体元素在显示时都会考虑iframe的顺序。因此如果要解决无窗体元素和有窗体元素之间的层叠关系时我们可以借助于iframe:通过把有窗体元素放到iframe中,然后设置iframe的z-index大于无窗体元素来解决二者层叠关系无法调整的问题;或者在无窗体元素内部放置一个iframe,设置其z-index小于无窗体元素并且其大小同无窗体元素相同;当然如果你觉得这两种方式都太麻烦的话可以使用jQuery的bgiframe插件,它的原理同第二种方式,不过使用起来就简单多了。

上面的方式或许可以解决大多数情况,但是实际应用中或多或少会给你造成一些额外的开发成本,如果你的项目中使用的Ext来进行前台开发,那么很幸运,Ext原生就对遮盖有窗体元素进行了支持。只需要在脚本开始处加上Ext.useShims=true;即可。

另外:多数情况下div被flash遮盖不用像上面这么麻烦,只需要设置wmode属性为transparent即可。

上一篇:CSS简写小集
下一篇:深入解析IE兼容模式问题
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 SiteMap