下拉菜单隐藏在我的英雄 img 后面

dropdown menu is hidden behind my hero img

我的主图有问题,它总是隐藏我的下拉菜单,即使我在菜单上放置了更高的 z-index。我为此找到了一个 "solution",我给了主图 z-index:-1,但现在我在主图上的按钮不起作用。我想在没有任何解决方法的情况下完成这项工作。

这里是 jsfiddle(这里的下拉菜单有效,因为#hero-img 的 z-index:-1,但顶部按钮不起作用)

https://jsfiddle.net/xLo7wcph/1/

1) 请帮我找到 z-index > 0 不起作用的原因 + 解决方案,不使用 z-index:0;

2) 奖励问题,为什么当我将 hero img 设置为负 z-index 时按钮不起作用,即使我有 btn z-index : 1;

   <nav id="navbar" class="flex">
            <div class="flex-1 "><img src="images/drevo2.svg"></div>
            <div class="flex-2 "><a href="index.html">falco's woodwork.</a></div>
            <div class="flex-3 flex-element push">
                <a href="index.html">domů</a>
            </div>
            <div class="flex-4 flex-element">
                <a href="#categories">nabídka</a>
                <div class="dropdown">
                    <a href="#categories"><p>motýlci</p></a>
                    <a href="#categories"><p>dekorace</p></a>
                    <a href="#categories"><p>ostatní</p></a>
                </div>
            </div>     
            <div class="flex-5 flex-element">
                <a href="#contact">kontakt</a>
            </div>   
            <div class="flex-6 flex-element">
                <a href="https://www.seznam.cz/">nákup</a>
            </div>  
        </nav>

        <div id="hero-img">
            <div class="text-box">
                <h1>
                    <span class="text-box--main">objevte krásu</span>
                    <br>
                    <span class="text-box--sub">ručně tvořených výrobků</span>
                    <br>

                </h1> 
            </div>
            <button class="btn"><a href="#about-us"><img src="images/SIPKA DOLU.svg"></a></button>   
        </div>




#navbar{
    border-bottom:solid 1px black;

    .dropdown{
        position:absolute;
        z-index: 3;
        display:none;
        border-top:none;
        padding:1rem 2rem;
        background-color: rgba(0, 0, 0, 0.801);
        left:-1.8rem;
        top:3.7rem;

        p{
            color:white;

            &:hover{
                border-bottom: 1px solid white;
            }
        }
    }

    .flex-element:hover .dropdown{
        display:block;
        z-index: 2;
    }


}

#hero-img{
    position: relative;
    background:linear-gradient(to top, black 0%, rgba(0, 0, 0, 0.5) 0%), url("../images/hero image.jpg") no-repeat top;
    height: calc(100vh - 3.8rem);/* - vyska nav baru*/
    background-size: cover;
    z-index: -1;
}

#hero-img 中删除 z-index: -1; 并添加这些行可以解决您的问题。

#navbar{
  position: relative;
  z-index: 1;
}

最初发生的事情是,#hero-img 上的 position: relative 隐藏了您的下拉菜单。因为按位置 #hero-img 高于 #navbar。这就是为什么您还应该在 #navbar.

中添加 z-index

并且您给出了负值 z-index 以显示下拉列表。当你给一个元素负数 z-index 时,它将在其他元素下呈现。

在这种情况下,#hero-img 在正文下方。当您提供高 z-index 值时,该按钮将不会显示,因为它的父级 #hero-img 在顶层之下。

工作演示:

btn,
.btn:link,
.btn:visited {
  background-color: rgba(255, 255, 255, 0);
  border-style: none;
  animation: btnFadeIn .5s ease-in  forwards;
  outline: none;
  position: absolute;
  bottom: 2%;
  left: 50%;
  transform: translateX(-50%);
  z-index: 3; }

.btn:hover {
  cursor: pointer; }

#navbar {
  border-bottom: solid 1px black; }
#navbar .dropdown {
  position: absolute;
  z-index: 3;
  display: none;
  border-top: none;
  padding: 1rem 2rem;
  background-color: rgba(0, 0, 0, 0.801);
  left: -1.8rem;
  top: 3.7rem; }
#navbar .dropdown p {
  color: white; }
#navbar .dropdown p:hover {
  border-bottom: 1px solid white; }
#navbar .flex-element:hover .dropdown {
  display: block;
  z-index: 2; }
#navbar .flex-1 {
  width: 3rem;
  height: 3rem;
  margin-left: .5rem;
  align-self: center;
  padding: .3rem;
  font-size: 2rem; }
#navbar .flex-2 {
  padding: .3rem;
  font-size: 2rem;
  margin-right: 5rem; }
#navbar .flex-2 a {
  text-decoration: none;
  color: black; }
#navbar .flex-element {
  padding: .3rem;
  font-size: 2rem;
  margin-right: 5rem;
  transition: all .2s ease-out;
  position: relative; }
#navbar .flex-element a {
  text-decoration: none;
  color: black; }
#navbar .flex-element:first-child {
  margin-right: 0; }
#navbar .flex-element:hover {
  transform: translateY(1.5px); }
#navbar .flex-element:active {
  transform: translateY(-1.5px); }

@font-face {
  font-family: 'Proxima Nova';
  src: url("../proxima_ssv/Proxima Nova Thin.otf") format("opentype"); }

*,
*::after,
*::before {
  margin: 0;
  padding: 0;
  box-sizing: inherit; }

html {
  font-size: 62.5%;
  scroll-behavior: smooth; }

body {
  font-family: 'Proxima Nova', sans-serif;
  line-height: 1.6;
  color: black;
  box-sizing: border-box; }

.push {
  margin-left: auto; }

.line {
  background-color: #C6C6C6;
  border: solid .1rem #C6C6C6;
  max-width: 960px; }

#navbar{
  position: relative;
  z-index: 1;
}

#hero-img {
  position: relative;
  /*background: linear-gradient(to top, black 0%, rgba(0, 0, 0, 0.5) 0%), url("../images/hero image.jpg") no-repeat top;*/
  background-color:darkgreen;
  height: calc(100vh - 3.8rem);
  /* - vyska nav baru*/
  background-size: cover;
  }

.text-box {
  position: absolute;
  top: 30%;
  left: 50%;
  transform: translate(-50%, 40%);
  backface-visibility: hidden;
  text-transform: uppercase;
  text-align: left; }
.text-box h1 {
  line-height: 1; }
.text-box--main {
  display: inline-block;
  font-size: 4rem;
  color: white;
  animation: moveInLeft 1.5s ease-out; }
.text-box--sub {
  display: inline-block;
  color: white;
  font-size: 6.5rem;
  animation: moveInRight 1.5s ease-out; }

.flex {
  display: flex;
  flex-wrap: wrap; }
<nav id="navbar" class="flex">
  <div class="flex-1 "></div>
  <div class="flex-2 "><a href="index.html">falco's woodwork.</a></div>
  <div class="flex-3 flex-element push">
    <a href="index.html">domů</a>
  </div>
  <div class="flex-4 flex-element">
    <a href="#categories">nabídka</a>
    <div class="dropdown">
      <a href="#categories"><p>motýlci</p></a>
      <a href="#categories"><p>dekorace</p></a>
      <a href="#categories"><p>ostatní</p></a>
    </div>
  </div>
  <div class="flex-5 flex-element">
    <a href="#contact">kontakt</a>
  </div>
  <div class="flex-6 flex-element">
    <a href="https://www.seznam.cz/">nákup</a>
  </div>
</nav>

<div id="hero-img">
  <div class="text-box">
    <h1>
      <span class="text-box--main">objevte krásu</span>
      <br>
      <span class="text-box--sub">ručně tvořených výrobků</span>
      <br>
    </h1>
  </div>
  <button class="btn"><a href="#about-us">theButtonThatDoesntWork</a></button>
</div>