【问题标题】:Centering a column in a table将表格中的列居中
【发布时间】:2017-08-09 10:09:13
【问题描述】:

我试图将表格中的某些列居中,但我遇到了问题。我知道过去您只需将内联样式应用于每个 TD,但必须有更好的方法。

这是一个简单的例子:

.centerText{
	text-align:center;
}
    <table border="1">
      <col>
      <col class="centerText">
      <thead>
        <tr>
          <th>heading1</th>
          <th>heading2</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td>2</td>
        </tr>
        <tr>
          <td>3</td>
          <td>4</td>
        </tr>
        <tr>
          <td>5</td>
          <td>6</td>
        </tr>
        <tr>
          <td>7</td>
          <td>8</td>
        </tr>
      </tbody>
    </table>

在该课程中,我试图将文本居中。我知道将 css 应用于 col 将有助于更改列的背景颜色和文本颜色等,但我不确定如何使用它来使列居中。我假设是因为我需要将 td 的内容居中,这可能只是将 TD 元素本身居中;这已经是 100%。 我知道我只能说将 css 应用于此 TR 中的第 5 个 TD,但这似乎很脆弱。

另外,如果您能告诉我如何以这种方式更改列的宽度,则可以加分。我使用了 col 的 width 属性,但在 html 5 中已弃用(尽管它目前仍受支持。

【问题讨论】:

标签: html css html-table


【解决方案1】:

完成,您的课程没有在任何地方使用

tr td:nth-child(2) {
	text-align:center;
}
<table border="1">
  <thead>
    <tr>
      <th>heading1</th>
      <th>heading2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td >2</td>
    </tr>
    <tr>
      <td>3</td>
      <td>4</td>
    </tr>
    <tr>
      <td>5</td>
      <td>6</td>
    </tr>
    <tr>
      <td>7</td>
      <td>8</td>
    </tr>
  </tbody>
</table>

我删除了:

  <col>
  <col class="centerText">

.centerText{
    text-align:center;
}

因为 col 没有任何意义,而且您没有关闭标签。

【讨论】:

  • 但这就是您将所有项目居中的方式,我只是想将第二列居中。实际上,在我的项目中,我有 8 个列,其中包含 1000 个条目,并且我需要 3 个居中的列。col 确实存在,但可能已被弃用 w3schools.com/tags/tag_col.asp
  • "col 没有任何意义" 不完全正确,你不能使用 class :)
  • 完成了,你不是说你只需要第二列,现在可以了^^
【解决方案2】:

CSS

table {
  border-collapse: collapse;
  width: 100%;
}

td {
  text-align: center
}

【讨论】:

  • td {text-align:center;}
  • 但我必须在每一行中添加一个 align="center" ,不是吗?
【解决方案3】:

如果您想将所有 td 内容对齐到中心

将 centerText 类添加到您的表格中

<table class="centerText" border="1">

【讨论】:

    【解决方案4】:

    不完全清楚你想要什么,但是如果你想将某个列的内容居中,你可以使用这个 CSS 规则:

    td:nth-child(2) {
        text-align:center;
    }
    

    在此示例中,它适用于第二列,但您可以为任何列定义它。它之所以有效,是因为 td 始终是 tr 的子代,因此您可以使用 nth-child 选择器。

    td:nth-child(2) {
      text-align: center;
    }
    <table border="1">
      <col>
      <col class="centerText">
      <thead>
        <tr>
          <th>heading1</th>
          <th>heading2</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td>2</td>
        </tr>
        <tr>
          <td>3</td>
          <td>4</td>
        </tr>
        <tr>
          <td>5</td>
          <td>6</td>
        </tr>
        <tr>
          <td>7</td>
          <td>8</td>
        </tr>
      </tbody>
    </table>

    【讨论】:

    • 复制答案并重新发布有什么意义? :|
    • @MarcoSalerno BTW:我实际上已经阅读了您答案的第一句话(关于 OP 的课程),并认为这与我的想法不同(没有课程,只是一个选择器) - 所以我没有继续读下去。你实际上使用了一个选择器并且没有我在你评论后才看到的类。所以我们有相同的代码,但不同的解释......
    猜你喜欢
    • 2010-10-17
    • 2013-02-06
    • 1970-01-01
    • 2012-12-14
    • 2011-04-06
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多