javascript - 解决 IE z-index 问题以将模态*放在* YUI 面板之上

标签 javascript html css internet-explorer yui

我的 Web 应用程序中有一个信息弹出模式,它基本上只是一个 <div>其“display”CSS 属性设置为“none”。当模式需要出现时,一段 JavaScript 会切换显示属性。

在大多数可以激活此模式的地方,它都可以正常工作。然而,站点上有一个页面,其中一些旧的 YUI 代码以“YAHOO.widget.Panel”对象的形式显示了一个模态。当有人触发此 YUI 模态内的信息事件时,我需要我的信息模态仍显示在 YUI 模态之上

这在除 IE 之外的所有浏览器中都可以正常工作。然而,在 IE 中,信息模式完全隐藏,因为它出现在 YUI 模式的后面。

StackOverflow 上有许多问题与 IE 中的“z-index”CSS 问题有关,但其中大部分似乎与初始页面加载时的布局问题有关。我遇到的问题是在页面加载后即时创建 YUI 面板。

无论我为我的信息模态设置多高的 z-index(或者我告诉 YUI 为它的模态设置多低的 z-index)...IE 总是给 YUI 面板一个更高的 z-index 因为它是后来创建的。

对于这种情况是否有任何干净的解决方法...您需要 IE 为 <div> 提供更高的 z-index在页面加载时创建的比在页面加载之后由 JavaScript 创建的要好?

最佳答案

为了面板在页面上的位置很重要,YUI 面板可能被附加到正文中。当你调用YUI面板的.render()方法时,指定parent div和你的popups的parent div一样,

yuipopup.render('infodivparent');

这将确保 z-indexes 正常工作。

即从这个改变,

<body>
<div id="yui_panel" style="z-index: 2;"></div>
<div id="content" style="z-index: 1;">
    <div id="mypopup" style="z-index: 100"></div>
</div>
</body>

对此,

<body>
<div id="content" style="z-index: 1;">
    <div id="mypopup" style="z-index: 100"></div>
    <div id="yui_panel" style="z-index: 2;"></div>
</div>
</body>

我还应该注意,时间从来不是决定 DOM 如何处理节点的因素。什么时候添加没有任何意义,只有添加的地方。

关于javascript - 解决 IE z-index 问题以将模态*放在* YUI 面板之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728619/

相关文章:

javascript - 数据库表未在phonegap中创建

javascript - reactjs - 在悬停时为从数组呈现的列表项呈现单个图标

javascript - AngularJS - JSON 返回后如何更新 $scope 上的变量

php - facebook sharer.php 如何捕获 og :image?

javascript - 输入类型 ="text"货币验证

javascript - 如何为::after 内容制作动画?

css - 创建 css 按钮的当前状态

javascript - 阻止 Android WebView 尝试在 loadData() 上加载/捕获 CSS 等资源

javascript - 为什么有些 npm 包有 es 目录?

javascript - 在 Div 后面画线