网页上的DIV, IFRAME标签, ActiveX控件之间互相覆盖的问题

网页中的控件可以分为两类: 有窗体的(Windowed element)和无窗体的(Windowless element)

 

有窗体的控件包括:

  • <OBJECT> 标签元素
  • ActiveX 控件
  • Plug-ins 插件
  • Dynamic HTML (DHTML) Scriptlets
  • SELECT elements
  • Internet Explorer 5.01以及更早的版本上的IFRAMEs

无窗体控件包括:

  • Windowless ActiveX controls
  • Internet Explorer 5.5 以及以版本中的IFRAMEs
  • 大多数的DHTML元素, 比如说超链接或表格

如果控件或元素重叠, 那么如何确定谁显示在上面?

==============

不论容器的配置如何, 所有的有窗体的元素(Windowed element)都会被显示在无窗体的元素(Windowless element)之上.

但是, 在所有的无窗体的元素之间, 它们还是会遵循z-index属性的约束. 正如无窗体的元素在彼此之间遵循z-index约束一样.

 

所有的无窗体元素(Windowless element)都被渲染在相同的MSHTML平面上, 有窗体元素(Windowed element)被画在一个单独的MSHTML平面上. 你可以使用z-index属性来操纵相同平面上的元素的高低, 但是却不能影响其他平面上的元素. 你可以重新安排相同平面内的z-index属性, 但是有窗体的平面会永远地画在无窗体元素的上面.

 

关于z-index在IE5中如何工作, 请参考下面的KB.

 

这里将z-index如何在IE5以后的版本中工作的要点摘抄如下:

  • 如果select的z-index的值大于IFRAME, select会画在IFRAME的上面
  • 如果select的z-index的值小于IFRAME, IFRAME会盖住select元素
  • 如果DIV的z-index的值大于IFRAME, 它会被画在IFRAME的上面
  • 如果DIV的z-index的值小于IFRAME, IFRAME会被画在DIV的上面
  • 如果DIV的z-index的值等于IFRAME, 那么谁画在上面就取决于在代码中, 谁出现在比较靠后的部分. 后面的会盖住前面的.

参考资料

==============

INFO: How the Z-index Attribute Works for HTML Elements

http://support.microsoft.com/kb/177378

posted on   中道学友  阅读(6316)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2011年4月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

技术追求准确,态度积极向上

点击右上角即可分享
微信分享提示