Эта проблема сложна, но ее можно решить. Как писал @Hamix, следует использовать min-width
, а не width
. Но не нужно устанавливать table{width:100%;}
, ведь с широкой таблицей это испортит макет, так как таблица должна быть более широкой, чем окно браузера, с горизонтальной полосой прокрутки. Кроме того, при ширине стола 100%, width
работает просто отлично. Проблема в том, что с негабаритных таблиц width
не работает на элемент таблицы.
Как писал @Niels_Keurentjes, первая строка таблицы определяет макет ширины столбца. Я не смог использовать теги <col>
, чтобы явно установить ширину столбцов. Но альтернативой было бы использовать более длинное имя заголовка столбца, чтобы заставить более широкий столбец, например.используя подчеркивания, но это чаще всего было бы уродливым взломом.
Другой альтернативой является размещение заголовка столбца в div как: <th><div>Abcdef</div></th>
и стиль div в css (или inline) с width:150px
.
Ниже приведены примеры файлов, которые я экспериментировал с, чтобы это было сделано:
t.css:
.longtext{
min-width:150px;
}
table{
/*width: 100%;*/
table-layout: fixed;
border-collapse: collapse;
}
table,th,td{
border: 1px solid black;
}
sampletable.html:
<html>
<head>
<link href="t.css" rel="stylesheet" type="text/css" media="all">
</head>
<body>
<table>
<colgroup>
<col></col>
<col></col>
<col></col>
<col style="width: 200px; background-color:yellow;"></col>
<col></col>
<col></col>
<col></col>
<col></col>
<col></col>
<col></col>
<col></col>
<col></col>
<col></col>
<col></col>
<col></col>
</colgroup>
<tr>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th class="longtext"><div class="longtextxx">Saying</div></th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
<th>ColumnHeader</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>Shoot first, ask questions later</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
</tr>
</table>
</body>
</html>
сообщение какой-то код или сделать скрипку было бы намного лучше – Richa
Это буквально таблица HTML со 100 столбцами, но будет делать jsfiddle - http://jsfiddle.net/16p66fxu/ – pee2pee
http://css-tricks.com/fixing-tables-long-s trings/ –