是否可以仅使用 CSS3 将多个不同元素与特定元素上的单个事件连接起来?
下面是我的例子;阅读标题选择器中的评论。
CSS
#header {
border-color: darkred; /* change this along when .nav > li:hover {} */
border-width: 0 0 3px;
}
.nav > li {
background-color: darkred;
}
.nav > li:hover {
background-color: red;
/*border-bottom: 3px red;*/
}
html
<nav id="header" class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Example</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="{{ nav_home }}"><a href="#">Home</a></li>
</ul>
</div>
</div>
</nav>
最佳答案
您不能单独在 CSS 中执行此操作,因为它没有祖先选择器。
但是,您可以通过给 #header
相对定位,并在列表末尾添加一个空的 li
来伪造效果,其高度和宽度为#header
,但带有负 z-index。
给空的li
这些样式:
.nav > li:last-of-type {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
background-color: transparent;
}
并添加此样式:
.nav > li:hover ~ li:last-of-type {
background-color: red;
}
片段:
#header {
border-color: darkred;
border-width: 0 0 3px;
position: relative;
}
.nav > li {
background-color: darkred;
}
.nav > li:hover {
background-color: red;
}
.nav > li:hover ~ li:last-of-type {
background-color: red;
}
.nav > li:last-of-type {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
background-color: transparent;
}
<nav id="header" class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Konecranes Trainer</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="{{ nav_home }}"><a href="#">Home</a></li>
<li></li>
</ul>
</div>
</div>
</nav>
关于css - 使用单个事件连接多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156108/