在CSS中防止父动画到子动画

qfe3c7zg  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(232)
nav {
  display: inline-flex;
  align-items: center;
  width: 100%;
  height: 8rem;
  border-bottom: 1px solid black;
}

.nav-list {
  display: flex;
  width: 100%;
}

.nav-list li {
  line-height: 8rem;
  position: relative;
}

.sub-menu li {
  color: #c40707;
  line-height: 7rem;
}

.nav-list a {
  display: block;
  color: black;
  padding: 0 1.5rem;
  font-size: 1.4rem;
  text-transform: uppercase;
  transition: color 300ms;
}

.nav-list a::after {
  content: "";
  position: absolute;
  background-color: #ff2a00;
  height: 3px;
  width: 0;
  left: 0;
  bottom: 15px;
  transition: 0s;
}

.nav-list a:hover::after {
  width: 100%;
}

.nav-list a:hover {
  color: #e3dedd;
}

.sub-menu a {
  color: #7e7978;
  font-size: 1.5rem;
  font-weight: 200;
}

.sub-menu {
  width: 20rem;
  display: block;
  position: absolute;
  visibility: hidden;
  z-index: 500;
  background-color: rgb(255, 255, 255);
  box-sizing: border-box;
  top: 2rem;
}

.nav-list li:hover>.sub-menu {
  top: 7.5rem;
  opacity: 1;
  visibility: visible;
}
<header>
    <ul class="nav-list">
        <li>
            <a href="%">Men</a>
            <ul class="sub-menu">
                <li><a href="#">shirts</a></li>
                <li><a href="#">Shorts</a></li>
                <li><a href="#">Tracks</a></li>
                <li><a href="#">Shoes</a></li>
            </ul>
        </li>
    </ul>
</header>

我试图使用CSS创建一个下拉菜单。我创建了一个导航栏与某些元素中提到的代码。我应用了悬停效果的导航栏。我创建了一个下拉菜单使用.nav-list li: hover > .sub-menu作为命令。然而,悬停效果,我的导航栏正在应用到子菜单了。如何防止这种情况发生?

92dk7w1h

92dk7w1h1#

添加类"主菜单项"
第一个月
在CSS代码中,将悬停和after效果从"a"更改为:

.nav-list .main-menu-item::after {
        content: "";
        position: absolute;
        background-color: #ff2a00;
        height: 3px;
        width: 0;
        left: 0;
        bottom: 15px;
        transition: 0s;
    }

.nav-list .main-menu-item:hover {
        color: #e3dedd;
    }
    • 以下是运行示例:**

x一个一个一个一个x一个一个二个x

vmdwslir

vmdwslir2#

问题是你需要更具体的CSS选择器,因为你只想让hover影响顶层的父元素"Men",你需要在.nav-list选择器之后使用直接派生的>选择器**-因为你只想要顶层的li a
我改变了你的CSS在这一部分:

.nav-list > li > a {
  display: block;
  color: black;
  padding: 0 1.5rem;
  font-size: 1.4rem;
  text-transform: uppercase;
  transition: color 300ms;
}

.nav-list > li > a::after {
  content: "";
  position: absolute;
  background-color: #ff2a00;
  height: 3px;
  width: 0;
  left: 0;
  bottom: 15px;
  transition: 0s;
}

.nav-list > li > a:hover::after {
  width: 100%;
}

这确保了只有顶层直接子元素lia被选中。
x一个一个一个一个x一个一个二个x

相关问题