【CSS】保证弹出项在最上层
2017-01-11 00:00
148 查看
angular 组件开发中涉及到会产生弹出层的组件:dialog、alert、message、menu、popupbutton、combobox、tooltip 等。 在 html 中,控制元素的显示层级,需要设置元素(position 为 relative 、absolute、fixed)的 z-index,其值越大,越靠上。所以我们需要弹出项的 z-index 足够大。 最初为所有弹出层统一样式,设置 z-index:5000(一个较大的数字)以使其显示在其他DOM元素上,之后在写 demo 时,发现忽略了多个弹出层的情况,如:dialog 中有一个 combobox,这个 combobox 有可能被 dialog 遮挡。此时我们需要一个公用的方法来生产递增 z-index,每次弹出层时,调用此方法获取新的 z-index 并附加到弹出层的样式中,来保证最后弹出的 z-index 总是最大。
此外,z-index 并不是总体排序的。比如 A(z-index:0),B(z-index:20),A 中有一个 A1(z-index:200),A1 仍然会被 B 遮挡,所以我们之后将组件中的弹出项都 append 到 body 中,使得所有弹出项都在同一个父元素 body 中。
之后测试中加入了 iframe,frame 中的弹出项会附加在该 frame 的 body 中,无法遮挡 frame 外的其他元素,最后在 append 到 body 之前,先查找到最顶层的 window 后将弹出项附加到其 body 中。
此外,z-index 并不是总体排序的。比如 A(z-index:0),B(z-index:20),A 中有一个 A1(z-index:200),A1 仍然会被 B 遮挡,所以我们之后将组件中的弹出项都 append 到 body 中,使得所有弹出项都在同一个父元素 body 中。
之后测试中加入了 iframe,frame 中的弹出项会附加在该 frame 的 body 中,无法遮挡 frame 外的其他元素,最后在 append 到 body 之前,先查找到最顶层的 window 后将弹出项附加到其 body 中。
相关文章推荐
- 每日学习总结:CSS:Clear属性的用法、重复交易提示框、弹出提示框后页面变形、asp.net调用smtp服务发送邮件问题
- html+css源码之实现登录弹出框遮罩层效果
- css 协议弹出层卡的问题
- 用css制作有滚蛋条的弹出框剧中,在滚动滚动条是不闪
- Div+Css+JS做弹出窗口
- 用 js和css弹出层
- jquery封装了一个简洁轻巧的可拖动可自定义样式的纯div+css带遮罩层的仿模态弹出框
- div+css 下拉多级弹出菜单
- 用 js、html、css实现一个弹出提示控件:
- javascript操作css实现弹出对话框
- CSS实现鼠标滑过文字弹出一段说明文字无JS代码
- JS+CSS实现可拖动的弹出提示框
- JS+CSS实现实用的单击输入框弹出选择框的方法
- css解决滚动弹出层里边的滚动条时带动了整个页面滚动的问题
- PHPCMS V9 导航条联动二级菜单(配合js css鼠标移动上去向下弹出显示二级菜单)
- css实现弹出框在页面居中
- div+css制作的弹出菜单(标准且无js)
- 如何用CSS实现图像替换链接文本显示并保证链接可点击
- 仅用css编写无限分级弹出菜单
- .NET, MVC框架下利用html, CSS,js实现弹出窗口