Фиксированная ширина на втором тд в редактируемой таблице
Я хочу иметь фиксированную ширину для моей редактируемой таблицы, но я также хочу установить разную ширину для каждого TD. В моей попытке я могу установить таблицу с фиксированной шириной, но это приводит к тому, что ширина TD кажется 50% вместо 80% - 20%, которые у меня были до установки фиксированной ширины.
CSS
table {
margin: 15px 0;
border: 1px solid black;
table-layout: fixed;
width: 100%;
}
.fixed td:nth-of-type(1) {width:20%;}
.fixed td:nth-of-type(2) {width:80%; text-align: left;}
.fixed {
margin:0px;padding:0px;
width:100%;
border:1px solid #000; }
.fixed td {
margin:0px;padding:0px;
width:100%;
border:1px solid #000; }
HTML
<div class="fixed" contenteditable="true">
<table>
<tbody>
<tr>
<td colspan="2">Header:</td>
</tr>
<tr>
<td>Name:</td>
<td><br/></td>
</tr>
<tr>
<td>DOB::</td>
<td><br/></td>
</tr>
<tr>
<td>Comments:</td>
<td><br/></td>
</tr>
</table>
Что мне не хватает? Проверьте эту скрипку, если это поможет. Попробуйте, набрав достаточно, чтобы увидеть, что он автоматически переходит к следующей строке после определенной точки.
2 ответа
Проблема с вашим кодом в том, что ваш первый <tr>
имеет colspan="2"
, Поэтому, когда вы даете width:100%
ко всем TD таблицы, css не будет применен к базовым TD, как вы хотите.
Ваше решение состоит в том, чтобы отделить заголовок тд: <td colspan="2">Header:</td>
в отдельную таблицу (см. HTML-1 ниже) или поместите базовые TD в тот же TR, что и заголовок (см. HTML-2 ниже).
Также измените CSS и упростите его, как я сделал ниже. Вы написали много ненужных CSS.
Вот что я попробовал. попробуй это:
HTML-1:
<table class="fixed" >
<tbody>
<tr>
<td colspan="2">Header:</td>
</tr>
</tbody>
</table>
<table class="fixed" >
<tbody>
<tr>
<td>Name:</td>
<td>test</td>
</tr>
<tr>
<td>DOB::</td>
<td>tes</td>
</tr>
<tr>
<td>Comments:</td>
<td>test</td>
</tr>
</table>
HTML-2:
<table class="fixed" >
<tbody>
<tr>
<td colspan="2">Header:</td>
<tr>
<td>Name:</td>
<td>test</td>
</tr>
<tr>
<td>DOB::</td>
<td>tes</td>
</tr>
<tr>
<td>Comments:</td>
<td>test</td>
</tr>
</tr>
</tbody>
</table>
Упрощенный CSS:
table {
margin: 0 0;
width: 100%;
table-layout: fixed;
}
.fixed td:nth-of-type(1) {width:80%;}
.fixed td:nth-of-type(2) {width:20%; text-align: left;}
.fixed td {
margin:0px;padding:0px;
border:1px solid #000; }
У вас есть ошибки в вашем синтаксисе HTML, хотя это не имеет никакого отношения к проблеме. Смотрите, если вам нужно что-то вроде этой скрипки.
table {
margin: 15px 0;
border: 1px solid black;
width: 100%;
}
.fixed td:nth-of-type(1) {width:20%;}
.fixed td:nth-of-type(2) {width:80%; text-align: left;}
.fixed {
margin:0px;padding:0px;
width:100%;
border:1px solid #000; }
.fixed td {
margin:0px;padding:0px;
width:100%;
border:1px solid #000; }
<div class="fixed" contenteditable="true">
<table>
<tbody>
<tr>
<td colspan="2">Header:</td>
</tr>
<tr>
<td>Name:</td>
<td><br/></td>
</tr>
<tr>
<td>DOB::</td>
<td><br/></td>
</tr>
<tr>
<td>Comments:</td>
<td><br/></td>
</tr>
</tbody>
</table></div>
в противном случае вы не сможете получить переменную ширину td, так как все столбцы будут иметь одинаковую ширину. Вы можете использовать атрибут colspan для обхода проблемы.