【问题标题】:Force div to be topmost element of any and all webpages强制 div 成为任何和所有网页的最顶层元素
【发布时间】:2012-11-24 23:41:40
【问题描述】:

我目前正在为 Chrome 构建一个开源插件。它已经完成了——但我正在尝试解决一些错误。本质上,在任何和所有网页中移动的 div(注入到页面的 HTML 中)必须是最顶层的元素,以便它可见。这是通过 z-index @ 999 实现的。但是在某些网页上,这不起作用!

在我的脑海中,当您在 code.google.com 上登录时,菜单栏覆盖了我的 div。

无论网络开发人员做什么,我如何在注入时强制它成为最顶层?

这是我的 div 的 CSS:

#ezselected {
  -webkit-transition: all .2s ease-in-out;
  -moz-transition: all .2s ease-in-out;
  -o-transition: all .2s ease-in-out;
  -ms-transition: all .2s ease-in-out;
  transition: all .2s ease-in-out;
  position:absolute;
  border-radius: 15px;
  z-index: 999;
  -webkit-box-shadow: 0px 0px 15px 5px rgba(255, 255, 100, .80);
  -moz-box-shadow: 0px 0px 15px 5px rgba(255, 255, 100, .80);
  /*box-shadow: 0px 0px 15px 5px rgba(255, 255, 100, .80);*/
  pointer-events:none; /* Make click-able through the DIV (for example, if it's on top of something with an event with kb) */
}

P.S.,我试过 !important 无济于事。

谢谢!

【问题讨论】:

  • 好吧 z-index:999 显然不会将元素放在具有 z-index:1000 或更高级别的其他元素之上...
  • 没错,这可能会有所帮助:stackoverflow.com/questions/491052/…
  • 有时,如果parent elementoverflow: hidden,即使它位于最顶端并设置为绝对值且z-index 较高,您也可能无法看到该元素。祝你好运...

标签: javascript html css google-chrome-extension


【解决方案1】:

您的 z-index 为 999。在这种情况下,您尝试覆盖的元素的 z-index(附加了 .menuDiv 类的元素)的 z-index 为 1001。999 绝不是浏览器允许的最大 z-index 值,因此您注入的 div 仍将低于更高 z-indexed 元素。

根据您收到的问题之一,请参阅Minimum and Maximum value of Z-INDEX,了解有关允许的 z-index 值以及在尝试创建最大级别元素时使用什么(通常为 +2147483647)的讨论。

如果你知道你不希望这个元素被任何东西覆盖(警告:除了可能的元素也使用相同的元素),使用:

z-index: 2147483647;

如果您想保留一些灵活性,您可以考虑使用稍微低一些的东西。您可能会被竞争元素分层的几次可能是值得的。只要您的 z-index 值接近 Max,如果您不介意可能会导致插件出现一些渲染问题,您还可以编写一些脚本来将高于您的任何 z-index 降低到您的以下。

如果您再次遇到类似情况,Chrome 有一个相当不错的内置检查工具:右键单击导致您出现问题的元素,检查元素,然后在右侧显示区域中展开“计算样式”。请注意,z-index 可能很难跟踪(即使打开“视图继承”):您需要选择适当定位的 div/etc,而不是静态内部元素。继续退出嵌套直到找到它。

【讨论】:

  • 感谢您的提示。听到这个理论极限非常酷。不幸的是 - 我的问题仍然存在(清除缓存等)。还有其他影响 z 分层的因素吗?最顶层是什么?
  • 为了测试,我将您的 css 附加到 code.google.com/p/chromium 页面。然后,我使用 ezselected id 属性添加了一个 div(到正文),并在其中放置了一些测试文本,但覆盖了宽度和顶部以确保它与右上角的菜单区域部分重叠。使用您开始使用的 z-index,它将位于菜单下拉菜单下。将 z-index 提高到 google 用于那些(1001)修复它的上方。您的 css 中可能有其他内容在其他位置覆盖,或者如果您有更多使用非静态定位的内部元素,它们可能会采用不同的 z-index?
  • 尝试检查您自己的渲染元素并查看计算的 z-index 是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 2013-02-08
  • 2018-12-09
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
相关资源
最近更新 更多