css - 使用单个事件连接多个元素

标签 css

是否可以仅使用 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/

相关文章:

css - 从 Controller angularJS更改元素顺序

html - 页脚代码在CSS样式表中显示为红色,但是HTML代码很好

css - 模态页脚 - Ajax 消息在模态页脚中居中

javascript - Highcharts X 范围。最大高度的列

CSS:自动调整宽度以换行文本内容?

html - 使用 rowspan 替换 HTML 表中的行颜色

html - 条件图像宽度 - 响应式

css - 如何在 codeigniter 中加载 css?

javascript - 单击下拉列表中的值列表时删除悬停

CSS 颜色部分呈对 Angular 线倾斜