网页上的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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律