使用 CSS 定位接下来的几个兄弟姐妹

Posted

技术标签:

【中文标题】使用 CSS 定位接下来的几个兄弟姐妹【英文标题】:Targeting the next several siblings with CSS 【发布时间】:2020-07-20 15:13:33 【问题描述】:

我需要按数据属性查找元素,对其应用一些 CSS,但还要将其应用到它旁边的其他几个兄弟姐妹。

我已经尝试过类似的方法,但它只适用于具有数据属性的元素。

.fc-widget-header[data-date='2020-07-20T00:00:00']:nth-child(n+1):nth-child(-n+5)  color: #f00; 

我也试过这个,但它只会将 css 应用于我的元素的第一个兄弟元素与 data-attr。

.fc-widget-header[data-date='2020-07-20T00:00:00'] + .fc-widget-header:nth-child(n+1):nth-child(-n+5)  color: #f00; 

我需要应用到这样的元素,例如前 X 个元素(元素的数量是可变的)。

<th class="fc-widget-header" data-date="2020-07-20T00:00:00" colspan="2">
  <div class="fc-cell-content"><span class="fc-cell-text">po 20.</span></div>
</th>
<th class="fc-widget-header" data-date="2020-07-21T00:00:00" colspan="2">
  <div class="fc-cell-content"><span class="fc-cell-text">út 21.</span></div>
</th>
<th class="fc-widget-header" data-date="2020-07-22T00:00:00" colspan="2">
  <div class="fc-cell-content"><span class="fc-cell-text">st 22.</span></div>
</th>
<th class="fc-widget-header" data-date="2020-07-23T00:00:00" colspan="2">
  <div class="fc-cell-content"><span class="fc-cell-text">čt 23.</span></div>
</th>

【问题讨论】:

【参考方案1】:

看起来您正在寻找通用兄弟组合器 (~)。

.fc-widget-header[data-date='2020-07-20T00:00:00'] ~ th 
  color: #f00;
<table>
  <th class="fc-widget-header" data-date="2020-07-20T00:00:00" colspan="2">
    <div class="fc-cell-content"><span class="fc-cell-text">po 20.</span></div>
  </th>
  <th class="fc-widget-header" data-date="2020-07-21T00:00:00" colspan="2">
    <div class="fc-cell-content"><span class="fc-cell-text">út 21.</span></div>
  </th>
  <th class="fc-widget-header" data-date="2020-07-22T00:00:00" colspan="2">
    <div class="fc-cell-content"><span class="fc-cell-text">st 22.</span></div>
  </th>
  <th class="fc-widget-header" data-date="2020-07-23T00:00:00" colspan="2">
    <div class="fc-cell-content"><span class="fc-cell-text">čt 23.</span></div>
  </th>
</table>

基本上,general sibling combinator (~) 以所有后续兄弟为目标。

注意与adjacent sibling combinator (+) 的区别,它只针对下一个兄弟。

【讨论】:

以上是关于使用 CSS 定位接下来的几个兄弟姐妹的主要内容,如果未能解决你的问题,请参考以下文章

使用 'order' 属性在兄弟姐妹之间定位弹性项目

仅使用 CSS 均衡兄弟姐妹的高度? [复制]

使用 React 样式组件 / CSS 模块 / CSS-in-JS 的兄弟姐妹 CSS 规则

如何在悬停时定位先前的兄弟姐妹? [重复]

使用纯 CSS 使悬停效果应用于具有相同属性的相邻兄弟姐妹

如何使用 css 选择器从特定类中查找所有下一个兄弟姐妹