下列代码中的(.nav-element> a:hover)是否可以工作,但是(.nav-element> a:hover .nav-dropdown1)没有任何原因?我尝试了多种方法来激活它,但是规则上的语法有问题吗?这是到目前为止我得到的所有代码:

.nav-contaier {
clear:left;
background-color: #3B3B3B;
}

.element-container {
background-color:#3B3B3B;
height: 4em;
width: 100%;
margin: auto;
}

.element-container>ul {
width: 80%;
height: 100%;
margin: auto;
display: flex;
}

.nav-element {
text-align: center;
flex: 0 0 20%;
color: white;
display: inline-block;
margin-left: 0;
margin-right: 0;
}

.nav-element>a {
line-height: 4em;
color: white;
height: 100%;
width: 100%;
display: block;
}

.nav-element>a:hover {
background-color: black;

}

.nav-dropdown1 {
display: block;
opacity: 0;
width: 80%;
height: 100%;
margin-left: 10%;
position: absolute;
height: 2em;
z-index: 10;
background-color: blue;
}

.nav-element>a:hover .nav-dropdown1 {
    opacity: 1;
    height: 3em;
 }

 //HTML FROM HERE

    <div class="nav-contaier">
        <nav class="element-container">
            <ul>
                <li class="nav-element"><a href="index.html">Home</a></li>
                <li class="nav-element"><a href="index.html">Menu</a></li>
                <li class="nav-element"><a href="index.html">Lorem</a></li>
                <li class="nav-element"><a href="index.html">Ipsum</a></li>
                <li class="nav-element"><a href="index.html">Contact</a></li>
            </ul>
        </nav>
    </div>
    <div class="clearfix"></div>
    <div class="nav-dropdown1">

    </div>

最佳答案

是的,这是有原因的。

这样使用pseudo elements仅对childs元素的实际parent有效。

此时唯一的解决方案是使用JavaScript

只是一点说明,从您的HTML结构看来,您正在尝试为每个nav-dropdown创建一个listitem。一个更好的方法是

<ul>
  <li><a>Foo</a>
    <ul>
      <li><a>Foo dropdown</a></li>
    </ul>
  </li>
</ul>


有很多关于如何创建子菜单的示例,其优点是具有更好的HTML结构,并且您实际上可以使用您所询问的伪元素。

关于html - CSS:悬停以显示和隐藏HTML标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33270100/

10-09 15:23
查看更多