Сила столбца столбцов фиксированной ширины расширяется на контейнере
По-видимому, классическая проблема, но найденные мной "решения" не сработали, включая различные другие вопросы о SO.
Если моя таблица больше, чем ее контейнер, я хочу, чтобы ширина ячейки таблицы оставалась фиксированной и не изменялась в соответствии с контейнером.
Воспроизводимый HTML (<td>
, сгенерированный PHP):
<html>
<head></head>
<body>
<table>
<tr>
<?php for($i=0;$i<15;$i++) {
echo "<td style='width:150px;border-right:1px solid black;'>".($i+1)."</td>";
} ?>
</tr>
</table>
<div style='background:chartreuse;width:150px'>This is 150px wide.</div>
</body>
</html>
Что я пробовал:
-
table-layout:fixed
-
span
контейнер с display:inline-block
установлен
-
div
контейнер со встроенным блоком
Кажется, должен быть простой способ заставить предыдущий код генерировать таблицу, которая переполняет тело.
Может кто-нибудь помочь?
Изменить
Это может быть неясно из моей предыдущей формулировки, но я хочу указать ширину столбца самостоятельно.
Я пытаюсь сделать это, не указав явную ширину для таблицы. Только TDs заставят таблицу шире, что (должно?) Заставляет контейнер шире.
Кроме того, встроенный CSS существует только для примера.
Ответы
Ответ 1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div style="margin: 0pt auto; width: 980px;">
<div style="500px;overflow:scroll">
<table style="width: 100%; table-layout: fixed;">
<tbody>
<tr>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
<td style="width:150px;border-right:1px solid black;">This is 150px wide.</td>
</tr>
</tbody>
</table>
<div style="background:chartreuse;width:150px">This is 150px wide.</div>
</div>
</div>
</body>
</html>
Ответ 2
Используя мой HTML в моем вопросе, вот правильная разметка, комплименты @Bala.
<html>
<head></head>
<body>
<table style='table-layout:fixed;width:100%'>
<tr>
<?php for($i=0;$i<15;$i++) { echo "<td style='width:150px;border-right:1px solid black;'>".($i+1)."</td>"; } ?>
</tr>
</table>
<div style='background:chartreuse;width:150px'>This is 150px wide.</div>
</body>
</html>