选择前面的兄弟元素的 CSS 选择器

标签 css css-selectors

我有下表:

table { border-collapse: collapse; }
tr:not(.header) td:not(.empty) {
    background: #eee;
    width: 100px;
    padding: 5px;
}
td.empty {
    width: 25px;
    background: white;
    border-right: 1px solid red;
}
tbody tr.header + tr td:not(.empty){ border-top: 1px solid red; }
<table>
    <tbody>
        <tr class="header">
            <td colspan="3">HEADER</td>
        </tr>
        <tr>
            <td class="empty">&nbsp;</td>
            <td>cell</td>
            <td>cell</td>
        </tr>
        <tr class="header">
            <td colspan="3">HEADER</td>
        </tr>
        <tr>
            <td class="empty">&nbsp;</td>
            <td>cell</td>
            <td>cell</td>
        </tr>
        <tr>
            <td class="empty">&nbsp;</td>
            <td>cell</td>
            <td>cell</td>
        </tr>
        <tr>
            <td class="empty">&nbsp;</td>
            <td>cell</td>
            <td>cell</td>
        </tr>
        <tr class="header">
            <td colspan="3">HEADER</td>
        </tr>
        <tr>
            <td class="empty">&nbsp;</td>
            <td>cell</td>
            <td>cell</td>
        </tr>
        <tr>
            <td class="empty">&nbsp;</td>
            <td>cell</td>
            <td>cell</td>
        </tr>
    </tbody>
</table>

标记由 Kendo 框架生成。我正在使用启用了可分组功能的 Kendo Grids ( http://demos.telerik.com/kendo-ui/grid/api )。我无法编辑提供的标记。

我正在尝试在灰色区域的底部放置相同的红色边框,但我不确定我能否在纯 CSS 中做到这一点。我在摆弄相邻/一般兄弟选择器,但没有运气。

表格应该是这样的:

enter image description here

有没有办法(在纯 CSS 中)给灰色区域的底部一个红色边框?

最佳答案

    table { border-collapse: collapse; }
    tr:not(.header) td:not(.empty) {
        background: #eee;
        width: 100px;
        padding: 5px;
    }
    td.empty {
        width: 25px;
        background: white;
        border-right: 1px solid red;
    }
    tbody tr.header + tr td:not(.empty){ border-top: 1px solid red; }
table { position:relative; }
table:after { content:'\A';position:absolute;bottom:0;width:89%;left:27px;border-bottom:1px solid red; }
tr.header:before { content:'\A';height:1px;left:27px;position:absolute;width:89%;border-top:1px solid red; }
tr.header:first-of-type:before { border-top:none; }
<table>
  <tbody>
    <tr class="header">
      <td colspan="3">HEADER</td>
    </tr>
    <tr>
      <td class="empty">&nbsp;</td>
      <td>cell</td>
      <td>cell</td>
    </tr>
    <tr class="header">
      <td colspan="3">HEADER</td>
    </tr>
    <tr>
      <td class="empty">&nbsp;</td>
      <td>cell</td>
      <td>cell</td>
    </tr>
    <tr>
      <td class="empty">&nbsp;</td>
      <td>cell</td>
      <td>cell</td>
    </tr>
    <tr>
      <td class="empty">&nbsp;</td>
      <td>cell</td>
      <td>cell</td>
    </tr>
    <tr class="header">
      <td colspan="3">HEADER</td>
    </tr>
    <tr>
      <td class="empty">&nbsp;</td>
      <td>cell</td>
      <td>cell</td>
    </tr>
    <tr>
      <td class="empty">&nbsp;</td>
      <td>cell</td>
      <td>cell</td>
    </tr>
  </tbody>
</table>

关于选择前面的兄弟元素的 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28619584/

相关文章:

html - CSS3 Nth-child 设置动态左边位置

html - 如何结合 flexbox order 和 nth-child(odd)

html - 为什么 input[type ="text"] 改变焦点大小?

javascript - Bootstrap 导航栏无法正确折叠

css - 视口(viewport)单元 VW 重叠 - 每个视口(viewport)小于 100 vw?

css - 如何使用 CSS2 选择器获取元素的第 n 个子元素?

html - 如何将图像 float 在div之上

css - 试图让 Sprite 工作 - css

css - 空格在 CSS 选择器中意味着什么?即.classA.classB 和.classA .classB 之间有什么区别?

selenium - 第 n 个类型的 css 选择器