解决控件遮挡问题:关于有窗口元素和无窗口元素
问题 解决 关于 元素 控件 窗口 遮挡
2023-06-13 09:13:52 时间
不知道朋友们有没有碰到过控件的遮挡问题,最典型的就是DropdownList和ActiveX的遮挡,HTML的z-index就是用于处理这个问题,但是直接设置这个属性还不行,因为这中间还牵扯到有窗口元素和无窗口元素的问题。
有窗口元素大概有以下几种:
<object> 、ActiveX控件 、Plug-ins、DHTML Scriptlets、SELECT elements(即DropdownList的HTML表现)、IE5.01以前的IFRAMEs
无窗口元素包括:
无窗口的ActiveX控件、IE5.5以后的IFRAMEs、大部分的DHTML元素
其中很值得一提的就是ActiveX控件,默认情况下,VB和MFC的控件是有窗口的,ATL控件是无窗口的,但是ActiveX控件是作为无窗口来进行实现而且实际上被归类到无窗口元素中。
不管容器怎么设定,所有的有窗口元素都会出现在无窗口的元素之上,有窗口元素和无窗口元素内部自身互相会遵循z-index属性,它们会被绘制在不同的平面上进行显示,设置z-index只能对它们所在的平面起作用,而且有窗口元素的平面始终处于无窗口元素平面之上。
那么解决遮挡问题的思路就很简单了,把我们的元素封装进一个DIV中,代码示例如下:
<DIV id="PAL2" style="DISPLAY: inline; Z-INDEX: 8; LEFT: 80px; WIDTH: 360px; POSITION: absolute; TOP: 80px; HEIGHT: 168px">
<OBJECT id="dhtmltest" style="Z-INDEX: 8; WIDTH: 352px; HEIGHT: 168px" type="text/x-scriptlet" data="TestDivDropdownList.htm" VIEWASTEXT>
</OBJECT></DIV>
DIV的z-index为8,然后将SELECT的z-index调为7即可(只需要比DIV的z-index小)。
有窗口元素大概有以下几种:
<object> 、ActiveX控件 、Plug-ins、DHTML Scriptlets、SELECT elements(即DropdownList的HTML表现)、IE5.01以前的IFRAMEs
无窗口元素包括:
无窗口的ActiveX控件、IE5.5以后的IFRAMEs、大部分的DHTML元素
其中很值得一提的就是ActiveX控件,默认情况下,VB和MFC的控件是有窗口的,ATL控件是无窗口的,但是ActiveX控件是作为无窗口来进行实现而且实际上被归类到无窗口元素中。
不管容器怎么设定,所有的有窗口元素都会出现在无窗口的元素之上,有窗口元素和无窗口元素内部自身互相会遵循z-index属性,它们会被绘制在不同的平面上进行显示,设置z-index只能对它们所在的平面起作用,而且有窗口元素的平面始终处于无窗口元素平面之上。
那么解决遮挡问题的思路就很简单了,把我们的元素封装进一个DIV中,代码示例如下:
<DIV id="PAL2" style="DISPLAY: inline; Z-INDEX: 8; LEFT: 80px; WIDTH: 360px; POSITION: absolute; TOP: 80px; HEIGHT: 168px">
<OBJECT id="dhtmltest" style="Z-INDEX: 8; WIDTH: 352px; HEIGHT: 168px" type="text/x-scriptlet" data="TestDivDropdownList.htm" VIEWASTEXT>
</OBJECT></DIV>
DIV的z-index为8,然后将SELECT的z-index调为7即可(只需要比DIV的z-index小)。
相关文章
- 解决pycharm中使用pip安装numpy失败的问题「建议收藏」
- 关于以太网没有有效的ip配置问题解决方法[通俗易懂]
- 关于电脑有独立显卡但torch.cuda.is_available()运行出现为False的问题解决方法
- 3招解决python程序输出重定向时的延迟问题
- cannot be resolved to absolute file path because it does not reside in the file system 问题解决
- 关于配置深度开发学习环境所遇到的问题与解决
- 关于sql脚本导入Oracle时重复生成check约束的问题解决
- mysql锁表需要注意的问题详解数据库
- 东风17导弹在2000℃环境飞行,隔温耐热问题如何解决?
- 解决Oracle表锁定问题的方法(oracle表被锁怎么办)
- 使用Oracle集合查询轻松解决复杂问题(集合查询oracle)
- 解决MySQL退出循环问题的方法(mysql退出循环)
- 探索Linux下Flash:解决视频播放问题(linux下flash)
- 解决MSSQL连不上NBU的问题(mssql连不上nbu)
- MySQL跨服务器查询:解决跨越网络的数据访问问题(mysql跨服务器查询)
- MSSQL查询优化:解决慢查询问题(mssql查询缓慢)
- 解决MySQL存入数据出现乱码问题(存入mysql乱码)
- 解决mysql无法运行的程序问题(mysql不能运行的程序)
- 商城系统采用Redis解决高并发问题(商城 redis 高并发)
- Redis连接资源的不归还问题(redis连接不回收)
- 关于Appserv无法打开localhost问题的解决方法
- JS中批量给元素绑定事件过程中的相关问题使用闭包解决
- 关于PHP内存溢出问题的解决方法
- c#Listfind()方法返回值的问题说明(返回结果为对象的指针)
- javascript函数中参数传递问题示例探讨