использование выравнивания текста по центру в colgroup - PullRequest
65 голосов
/ 06 августа 2009

У меня есть таблица на моей странице, я использую группы для форматирования всех ячеек в этом столбце одинаково, хорошо работает для цвета фона и все. но не могу понять, почему центр выравнивания текста не работает. он не выравнивает текст по центру.

пример:

<table id="myTable" cellspacing="5">
    <colgroup id="names"></colgroup>
    <colgroup id="col20" class="datacol"></colgroup>
    <colgroup id="col19" class="datacol"></colgroup>
    <colgroup id="col18" class="datacol"></colgroup>

    <thead>
        <th>&nbsp;</th>
        <th>20</th>
        <th>19</th>
        <th>18</th>
    </thead>
    <tbody>
        <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>

CSS:

#names {
    width: 200px;
}

#myTable .datacol {
    text-align: center;
    background-color: red;
}

Ответы [ 4 ]

110 голосов
/ 06 августа 2009

Только ограниченный набор свойств CSS применяется к столбцам , и text-align не является одним из них.

См. «Тайна того, почему только четыре свойства применяются к столбцам таблицы» для описания, почему это так.

В вашем простом примере проще всего было бы добавить следующие правила:

#myTable tbody td { text-align: center }
#myTable tbody td:first-child { text-align: left }

Это будет центрировать все ячейки таблицы, кроме первого столбца. Это не работает в IE6, но в IE6 text-align действительно фактически (неправильно) работает с колонкой. Я не знаю, поддерживает ли IE6 все свойства или только большее подмножество.

Да, и ваш HTML неверен. <thead> пропускает <tr>.

25 голосов
/ 06 августа 2009

См. Аналогичный вопрос: Почему нельзя использовать стилизацию столбцов таблицы?

Вам разрешено устанавливать только свойства border , background , width и visibility , поскольку ячейки не ' t прямые потомки столбцов, только строк.

Есть несколько решений. Самое простое - добавить класс в каждую ячейку столбца. К сожалению, это означает больше HTML, но это не должно быть проблемой, если вы генерируете таблицы из базы данных и т. Д.

Другое решение для современных браузеров (т.е. не IE6) заключается в использовании некоторых псевдоклассов. tr > td:first-child выберет первую ячейку в строке. Opera, Safari, Chrome и Firefox 3.5 также поддерживают селектор :nth-child(n), поэтому вы можете указывать определенные столбцы.

Вы также можете использовать td+td для выбора из второго столбца и далее (это на самом деле означает «выбрать все td элементов, которые имеют один элемент td слева). td+td+td выбирает из третьего столбца - вы можно продолжать таким образом, переопределяя свойства. Честно говоря, это не очень хороший код.

4 голосов
/ 14 августа 2013

С помощью следующего CSS вы можете просто добавить один или несколько классов к элементу таблицы, чтобы соответствующим образом выровнять его столбцы.

CSS

.col1-right td:nth-child(1) {text-align: right}
.col2-right td:nth-child(2) {text-align: right}
.col3-right td:nth-child(3) {text-align: right}

HTML

<table class="col2-right col3-right">
  <tr>
    <td>Column 1 will be left</td>
    <td>Column 2 will be right</td>
    <td>Column 2 will be right</td>
  </tr>
</table>

Пример: http://jsfiddle.net/HHZsw/

0 голосов
/ 23 февраля 2018

В дополнение к ограничениям, упомянутым в других ответах, по состоянию на февраль 2018 года видимость: коллапс по-прежнему не работает с группами в браузерах на основе Chrome и Chromium из-за ошибки. См. « Видимость col CSS: коллапс не работает в Chrome ». Поэтому я считаю, что используемые в настоящее время свойства - это просто рамка, фон, ширина (если вы не используете какой-либо тип полифилла для Chrome и других браузеров на основе Chromium). Ошибка может быть отслежена в https://crbug.com/174167.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...