将元素的 z-index 放置在父元素的同级元素上方

发布于 2025-01-11 13:04:49 字数 1125 浏览 0 评论 0原文

我有一个包含两个元素的菜单:

<nav id="menu">
            <div id="menu-list">
                <a href="{{ path('recipes') }}" class="menu-list-item menu-list-item-selected" id="menu-list-item-recipes">{{ 'recipes.tab.label'|trans }}</a>
                <a href="{{ path('ingredients') }}" class="menu-list-item" id="menu-list-item-ingredients">{{ 'ingredients.tab.label'|trans }}</a>
            </div>
        </nav>

两个 元素都是相对定位的,它们的父元素(#menu#menu-list 是未定位)

加载页面时,页面上有一个 50% 不透明的黑色层,它是 #menu 的同级元素:

<div id="blackLayer" onclick="hideBlackLayer()">
    </div>

#blackLayer 定位固定并具有 z 索引在2.

我希望在页面加载时有一个(且仅有一个).menu-list-item 元素(比如#menu-lits-item-recipes) 位于暗层上方。

如果我将 #menu-lits-item-recipes z-index 设置为 3,则不会发生任何情况。如果我将#menu的z-index设置为3(使用position:relative),所有内容都在黑暗层之上。

有没有一种方法可以在黑暗层上只制作一个 而不修改 DOM 树,因为我无法更改 HTML ?

I have a menu with two elements :

<nav id="menu">
            <div id="menu-list">
                <a href="{{ path('recipes') }}" class="menu-list-item menu-list-item-selected" id="menu-list-item-recipes">{{ 'recipes.tab.label'|trans }}</a>
                <a href="{{ path('ingredients') }}" class="menu-list-item" id="menu-list-item-ingredients">{{ 'ingredients.tab.label'|trans }}</a>
            </div>
        </nav>

Both <a> elements are positionned relative and their parents (#menu and #menu-list aren't positionned)

On load of the page, there is a 50%-opaque black layer on the page that is a #menu's sibling element :

<div id="blackLayer" onclick="hideBlackLayer()">
    </div>

#blackLayer is positionned fixed and has a z-index at 2.

I want, on the load of the page that one (and only one) of .menu-list-item elements (say the #menu-lits-item-recipes) to be above the dark layer.

If i set the #menu-lits-item-recipes z-index at 3, nothing happens. And if I set the #menu's z-index at 3 (with position: relative) everything is above the dark layer.

Is there a way to make only one <a> over the dark layer without modifying DOM tree since I cannot change the HTML ?

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

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

发布评论

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

评论(1

熊抱啵儿 2025-01-18 13:04:49

您可以尝试我在这里创建的解决方案。

https://jsfiddle.net/mc1ekzu4/37/

请注意,我正在尝试模拟您的情况,但关键是你应该为突出显示的元素设置 position:relative;

#blackLayer {
  position: fixed;
  z-index: 2;
  background-color: rgba(0, 0, 0, 0.5);
  width: 100vw;
  height: 100vh;
  top: 0;
  left: 0;
}

#menu-list-item-recipes {
  z-index: 3;
  position: relative;
  background-color: #FFF;
}

You can try this solution which I created here.

https://jsfiddle.net/mc1ekzu4/37/

Note that I'm trying to simulate your case, but the key thing is you should have position: relative; for your highlighted element.

#blackLayer {
  position: fixed;
  z-index: 2;
  background-color: rgba(0, 0, 0, 0.5);
  width: 100vw;
  height: 100vh;
  top: 0;
  left: 0;
}

#menu-list-item-recipes {
  z-index: 3;
  position: relative;
  background-color: #FFF;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文