Тиз абсолютно верно, что проблема с table-layout:fixed
.
Что делает этот стиль, так это заставляет таблицу брать ширину столбцов из встречающейся строки first , а затем начинает генерировать содержимое, основываясь исключительно на этом.Итак, в вашем примере первая строка - colspan=3
, поэтому она дает всем столбцам одинаковую ширину.Попробуйте поменять строки в первом примере, чтобы увидеть эффект.Это также объясняет, почему ваш второй пример работает.
Более подробную информацию можно увидеть здесь: http://www.w3.org/TR/CSS2/tables.html#fixed-table-layout
В алгоритме с фиксированным макетом таблицы ширина каждого столбца определяется какследует:
- Элемент столбца со значением, отличным от 'auto', для свойства 'width' устанавливает ширину для этого столбца.
- В противном случае ячейка в первой строке сзначение, отличное от 'auto' для свойства 'width', определяет ширину этого столбца. Если ячейка охватывает более одного столбца, ширина делится на столбцы .
- Любые оставшиеся столбцы в равной степени разделяют оставшееся горизонтальное табличное пространство (минус границы или интервал между ячейками).
[мой жирный шрифт]
В качестве решения вы можете добавить <colgroup>
в качестве первой записи внутри тега <table>
:
<colgroup>
<col style="width:50px;" />
<col style="width:50px;" />
<col style="width:300px;" />
</colgroup>
например.Как видно здесь .