html - CSS 兄弟选择器未按预期工作

标签 html css twitter-bootstrap

我正在尝试使用 CSS 兄弟选择器,但它们似乎没有按规则工作。

基本上,我正在使用 Bootstrap 中的 panel 并尝试通过规则更改 panel-heading css。

我创建了一个类似的标记来复制这个问题,下面是相同的 JS Fiddle 链接

Link to JS Fiddle

我也尝试过使用下面的 CSS:

.collpase + .heading{
   opacity: 0.2
 }

.collpase.in + .heading{
  opacity: 1
}

有什么想法吗?

最佳答案

由于无法选择前一个兄弟,因此可以使用 flexbox 通过标记中的一个顺序和另一个视觉呈现来实现该效果。

这里我使用了 flex,切换了标记中的顺序,并再次在视觉上使用 flexbox 属性 order

现在,CSS 同级选择器 ~/+ 都可以工作,因为它们以标记中的下一个同级为目标。

.heading {
  color: #fff;
  background: #000;
  padding: 5px;
  margin: 5px;
}
.collapse {
  padding: 5px;
  display: none;
  order: 2                      /*  added property  */
}
.collapse.in {
  display: block;
}
.flex {                         /*  added rule */
  display: flex;
  flex-direction: column;
}
.collapse ~ .heading {          /*  "collapse" was misspelled  */
  opacity: 0.2;
}
.collapse.in ~ .heading {       /*  "collapse" was misspelled  */
  opacity: 1;
}
<div class="parent">
  <div class="firstChild flex">
    <div class="collapse in">
      Content
    </div>
    <div class="heading">
      STep 1
    </div>
  </div>
  <div class="secondChild flex">
    <div class="collapse">
      Content
    </div>
    <div class="heading">
      STep 2
    </div>
  </div>
  <div class="thirdChild flex">
    <div class="collapse">
      Content
    </div>
    <div class="heading">
      STep 3
    </div>
  </div>
  <div class="fourthChild flex">
    <div class="collapse">
      Content
    </div>
    <div class="heading">
      STep 4
    </div>
  </div>
</div>

对于旧版浏览器,可以使用display:table

.heading {
  color: #fff;
  background: #000;
  padding: 5px;
  margin: 5px;
}
.collapse {
  padding: 5px;
  display: none;
}
.collapse.in {
  display: table-footer-group;  /*  changed property */
}
.child {                        /*  added rule */
  display: table;
}
.collapse ~ .heading {          /*  "collapse" was misspelled  */
  opacity: 0.2;
}
.collapse.in ~ .heading {       /*  "collapse" was misspelled  */
  opacity: 1;
}
<div class="parent">
  <div class="first child">
    <div class="collapse in">
      Content
    </div>
    <div class="heading">
      STep 1
    </div>
  </div>
  <div class="second child">
    <div class="collapse">
      Content
    </div>
    <div class="heading">
      STep 2
    </div>
  </div>
  <div class="third child">
    <div class="collapse">
      Content
    </div>
    <div class="heading">
      STep 3
    </div>
  </div>
  <div class="fourth child">
    <div class="collapse">
      Content
    </div>
    <div class="heading">
      STep 4
    </div>
  </div>
</div>

关于html - CSS 兄弟选择器未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38289132/

相关文章:

asp.net-mvc - 如何覆盖 Bootstrap 样式?

javascript - 使用 ng-repeat 将表格行数据显示为模态

javascript - 文件读取器内存泄漏

html - 将登录链接移动到导航栏的右侧

css - Transition 导致菜单跳转

php - 最佳实践使用数据库中的值填充 Bootstrap HTML 表单 SELECT 下拉列表

jquery - 如何为 Shiny 模块内的元素定义 CSS

html - 对象匹配是否会破坏 Chrome 中的某些图像纵横比?

html - CSS 动画突然移动

html - 粗体字重移动文本对齐