css子选择器不适用于thead中的元素

exc*_*eed 2 html css html5 html-table css-selectors

我有下表:

<table class="table-container">
  <thead class="table-heading">
    <th>test</th>
    <th>test</th>
    <th>test</th>
    <th>test</th>
  </thead>
  <tbody class="table-body">
    <tr>
      <td class="table-column">test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
    <tr>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

如果我在css中执行以下操作:

.table-body > tr > td {
  padding: 25px;
}
Run Code Online (Sandbox Code Playgroud)

它没有任何问题.

但如果我在css中执行以下操作:

.table-heading > th {
  padding: 25px;
}
Run Code Online (Sandbox Code Playgroud)

即使th元素是thead元素的子元素,它也不起作用.有谁知道为什么这不起作用?

Has*_*ami 8

你错过了里面的<tr>元素<thead>.现代Web浏览器<tr>动态添加,因此它们.table-heading > th不匹配ths,因为它们不是.table-heading元素的直接后代而是tr.

例如,尝试.table-heading > tr > th选择器.

.table-heading > tr > th {
  padding: 25px;
  background-color: gold;
}
Run Code Online (Sandbox Code Playgroud)
<table class="table-container">
  <thead class="table-heading">
    <th>test</th>
    <th>test</th>
    <th>test</th>
    <th>test</th>
  </thead>
  <tbody class="table-body">
    <tr>
      <td class="table-column">test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
    <tr>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

  • 另一个不信任表格的理由; 他们永远不会像你认为的那样. (5认同)

j08*_*691 5

因为您的HTML无效,并且大多数浏览器通过将<th>s 包装在s中来纠正它<tr>.所以正确的选择器将是:

.table-heading > tr > th {
  padding: 25px;
}
Run Code Online (Sandbox Code Playgroud)

jsFiddle例子