CSS :悬停以显示和隐藏 HTML 标签
CSS :hover to show and hide HTML tags
是否有任何原因导致下面代码中的 (.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
仅适用于 parent
元素的实际 childs
。
此时唯一的解决方案是使用 JavaScript
。
只是一点旁注,从您的 HTML
结构看来,您正试图为每个 listitem
创建一个 nav-dropdown
。更好的方法是
<ul>
<li><a>Foo</a>
<ul>
<li><a>Foo dropdown</a></li>
</ul>
</li>
</ul>
关于如何创建子菜单的示例有很多,优点是具有更好的 HTML
结构,而且您实际上可以使用您询问过的伪元素。
是否有任何原因导致下面代码中的 (.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
仅适用于 parent
元素的实际 childs
。
此时唯一的解决方案是使用 JavaScript
。
只是一点旁注,从您的 HTML
结构看来,您正试图为每个 listitem
创建一个 nav-dropdown
。更好的方法是
<ul>
<li><a>Foo</a>
<ul>
<li><a>Foo dropdown</a></li>
</ul>
</li>
</ul>
关于如何创建子菜单的示例有很多,优点是具有更好的 HTML
结构,而且您实际上可以使用您询问过的伪元素。