Z-index:如何使嵌套元素出现在其父元素下方

发布于 2024-11-17 08:58:34 字数 235 浏览 2 评论 0原文

这个小提琴应该演示这个问题:

http://jsfiddle.net/5sqxQ/2/

我想要子菜单显示在父菜单下方。然后我想用 JavaScript 来扩展它,以便在悬停在父 li 元素上时从下面滑动菜单。

对 JavaScript 不感兴趣,但不知道如何设计元素的样式以实现所需的分层。

This fiddle should demonstrate the issue:

http://jsfiddle.net/5sqxQ/2/

I want the sub menu to appear underneath the parent menu. I was then was looking to extend this with JavaScript to slide the menu from underneath on hover of the parent li element.

Not fussed about the JavaScript but can't figure out how to style the elements to achieve the desired layering.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

乖乖哒 2024-11-24 08:58:34

它不起作用,因为您将 z-index 应用于父元素,这使得子元素相对于父元素中的其他元素堆叠

一旦你为一个元素分配了一个值
z-index(除 auto 之外),即
元素建立自己的局部
堆叠上下文。这意味着所有
该元素的后代有
他们自己的堆叠顺序,相对于
祖先元素。

因此,如果父级的 z-index 为 z-index: 9 而子级的 z-index: 8,则类似于分配 z-index 为 9, 8

请参阅此处的文章以获得更好的解释。

如果您删除父元素上的 z-index 并将同级元素设置为 z-index: -1,那么应该可以工作。我不确定是否适用于所有浏览器,但无论如何它都可以在 Chrome 中使用。

这是更新的小提琴

希望有所帮助。

It doesn't work because you are applying a z-index to the parent element which makes the child element stack relative to the other elements within the parent.

Once you assign an element a value for
z-index (other than auto), that
element establishes its own local
stacking context. This means that all
of the element's descendants have
their own stacking order, relative to
the ancestor element.

So if the parent has z-index: 9 and the child is z-index: 8, it's kind of like assigning a z-index of 9, 8

See the article here for a better explanation.

If you remove the z-index on the parent and set the sibling element to z-index: -1, that should work. I'm not sure about all browsers, but it works in Chrome anyway.

Here is the updated fiddle

Hope that helps.

忆离笙 2024-11-24 08:58:34

你不知道。

相反,将 a 设为“登录”“按钮”。

像这样的东西: http://jsfiddle.net/5sqxQ/15/

You don't.

Instead, make the a be the "Sign In" "button".

Something like this: http://jsfiddle.net/5sqxQ/15/

灯角 2024-11-24 08:58:34

尝试将父容器和同级容器位置设置为相对位置。
它以前对我有用。

Try setting the parent and siblings containers position to relative.
Its worked for me before.

巷雨优美回忆 2024-11-24 08:58:34

查看下面的规则,了解元素如何堆叠,您可以轻松想出自己的解决方案。

前任。就像三十点所说,输入“登录”.users >力> a 位置,相对绝对,以及 z-index: 1

下面的堆叠顺序和堆叠上下文规则来自此链接

Stacking Order inside a Stacking Context

元素的顺序

  1. :堆叠上下文的根元素(默认情况下 元素是唯一的堆叠上下文,但任何元素都可以是堆叠上下文的根元素,请参阅下面的规则)
    • 您不能将子元素放在根堆叠上下文元素后面
  2. 具有负 z-index 值的定位元素(及其子元素)(较高的值堆叠在较低的值前面;具有负 z-index 值的元素(及其子元素)相同的值根据 HTML 中的外观进行堆叠)
  3. 非定位元素(按 HTML 中的外观排序)
  4. z-index 值为 auto 的定位元素(及其子元素)(按 HTML 中的外观排序)
  5. 定位元素(及其子元素)具有正 z-index 值(较高的值堆叠在较低的值前面;具有相同值的元素根据 HTML 中的外观进行堆叠)

当形成堆叠上下文时

  • 当某个元素是以下元素的根元素时文档( 元素)
  • 当元素具有除 static 以外的位置值时 除 auto 以外的 z-index 值
  • 时 当元素具有不透明度值时少于 1
  • 几个较新的 CSS 属性还创建堆叠上下文。其中包括:转换、过滤器、CSS 区域、分页媒体以及可能的其他内容。请参阅 https://developer.mozilla.org/en -US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
  • 作为一般规则,似乎如果CSS 属性需要在离屏上下文中渲染,它必须创建一个新的堆叠上下文。

Look at the rules below for how elements are stacked and you can easily come up with your own solution.

ex. Like thirtydot said, give "Sign In" .users > li > a a position, relative or absolute, and z-index: 1

The Stacking order and stacking context rules below are from this link

Stacking Order within a Stacking Context

The order of elements:

  1. The stacking context’s root element (the <html> element is the only stacking context by default, but any element can be a root element for a stacking context, see rules below)
    • You cannot put a child element behind a root stacking context element
  2. Positioned elements (and their children) with negative z-index values (higher values are stacked in front of lower values; elements with the same value are stacked according to appearance in the HTML)
  3. Non-positioned elements (ordered by appearance in the HTML)
  4. Positioned elements (and their children) with a z-index value of auto (ordered by appearance in the HTML)
  5. Positioned elements (and their children) with positive z-index values (higher values are stacked in front of lower values; elements with the same value are stacked according to appearance in the HTML)

When a Stacking Context is Formed

  • When an element is the root element of a document (the <html> element)
  • When an element has a position value other than static and a z-index value other than auto
  • When an element has an opacity value less than 1
  • Several newer CSS properties also create stacking contexts. These include: transforms, filters, css-regions, paged media, and possibly others. See https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
  • As a general rule, it seems that if a CSS property requires rendering in an offscreen context, it must create a new stacking context.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文