是否可以使用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>
答案 0 :(得分:2)
你不能单独使用CSS,因为它没有祖先选择器。
但是,您可以通过提供#header
相对定位并在列表末尾添加空li
来伪造效果,其中#header
的高度和宽度为li
,但是负z-index。
为这些样式提供空.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>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ci/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
答案 1 :(得分:0)
不,当第二个元素是第一个元素的子元素时,css中唯一的更改控制是可能的。 这是可能的,因为li是DOM树中#header的孩子。
#header:hover li {
color: red;
}
但是在DOM树上,它将不受css控制。 你可以用javascript做到这一点。