У меня есть простая таблица, которая используется для входящих сообщений следующим образом:
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
Как установить ширину, чтобы От и Дата составляли 15% ширины страницы, а Тема - 70%. Я также хочу, чтобы таблица занимала всю ширину страницы.
html
css
html-table
alamodey
источник
источник
width attribute
; он использует aCSS *style* width
, который заменил атрибут ширины <col>. (несмотря на то, что несколько человек проголосовали за этот комментарий !!)span="1"
является лишним, поскольку 1 является значением по умолчанию.HTML:
CSS:
Рекомендуется разделять HTML и CSS для уменьшения дублирования кода и разделения задач (HTML для структуры и семантики и CSS для представления).
Обратите внимание, что для того, чтобы это работало в более старых версиях Internet Explorer, вам, возможно, придется придать вашей таблице определенную ширину (например, 900 пикселей). Этот браузер имеет некоторые проблемы с отображением элемента с процентными размерами, если его оболочка не имеет точных размеров.
источник
Используйте CSS ниже, первое объявление будет гарантировать, что ваша таблица будет соответствовать ширине, которую вы предоставляете (вам нужно добавить классы в ваш HTML):
источник
table{table-layout:fixed};.from,.date{width:15%}
достаточно. Если классы не используются и для других элементов, записьth.from
является избыточной и может быть сокращена до просто.from
.Альтернативный способ с одним классом, сохраняя ваши стили в файле CSS, который даже работает в IE7:
Совсем недавно вы также можете использовать
nth-child()
селектор из CSS3 (IE9 +), где вы просто поместите номер. соответствующего столбца в скобках вместо того, чтобы связать их вместе с соседним селектором. Вот так, например:источник
:nth-child
решение ужасно с точки зрения производительности. Нет веской причины использовать его (особенно с универсальным селектором) в этом примере, где есть только три элемента (th
илиcol
) для стиля. Кроме того, вам нужно только установить ширинуth
в первом ряду. В.mytable td
первом примере является избыточным.tr
а затем принадлежат ли они.mytable
. Если вы действительно хотите использовать «NTH» , то что - то вроде этого, вероятно , будет намного лучше:.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
. Также нет необходимости указывать ширину третьего столбца в этом случае..mytable th+th{width: 70%}.mytable th+th+th{width:15%}
. Сами n-тые селекторы могут быть очень полезны, но в этом конкретном случае (крошечная таблица только с 3 столбцами) на самом деле не нужны. При использованииtable-layout: fixed
вы можете даже сделать именно это:table{table-layout:fixed}th:first-child+th{width:70%}
.Это мои два предложения.
Использование классов. Нет необходимости указывать ширину двух других столбцов, поскольку они будут автоматически установлены браузером на 15% каждый.
Без использования классов. Три разных метода, но результат идентичен.
а)
б)
в) Это мой любимый. То же, что б), но с лучшей поддержкой браузера.
источник
В зависимости от «настроек» вашего тела (или элемента, который окружает вашу таблицу), вы сможете сделать это:
демонстрация
источник
источник
демонстрация
источник
Попробуйте это вместо этого.
источник
Не используйте атрибут border, используйте CSS для всех ваших стилевых нужд.
Но встраивать подобные CSS - плохая практика - вместо этого следует использовать классы CSS и поместить правила CSS во внешний файл CSS.
источник
Вот еще один минимальный способ сделать это в CSS, который работает даже в старых браузерах, которые не поддерживают
:nth-child
и подобные селекторы: http://jsfiddle.net/3wZWt/ .HTML:
CSS:
источник
Добавьте colgroup после тега таблицы. Определите ширину и номер столбца здесь. и добавьте тег tbody. Поместите свой tr внутрь tbody.
источник
источник