Размер внутреннего блока изменяется в соответствии с его содержимым, которое должно иметь отступ.
Измените padNotThisCell
на панели на padThisCell
, и оно будет работать:
* { padding:0; margin:0; }
div { display:inline-block; }
table {
width:100%;
white-space:nowrap;
cellpadding:0;
}
td { border:solid 1px black; }
.bar{
margin:0;
border:solid 1px red;
background:yellow;
}
.padThisCell{
padding:20px;
}
.padNotThisCell{
padding:0;
}
<br>
<table cellspacing="0">
<tr>
<td class='padThisCell'>
First column
</td>
<td class='padNotThisCell' style='width:100%;'>
<div class='bar padThisCell' style='margin-left:30%; width:30%'> Bar </div>
</td>
</table>
<br>
Переименован padOnlyThisCell
в padThisCell
, потому что они теперь в двух местах. Наименование в коде влияет на количество. Переименование часто является хорошей привычкой программирования.
Заполнение первого <td>
не влияет на заполнение в другом <td>
! Чтобы увидеть, что я получил помощь от этого ответа : в Chrome, откройте инспектор (F12 или щелкните правой кнопкой мыши -> проверить элемент), и там вы увидите, что применяется к элементу .
Что действительно происходит, так это то, что inline-block
имеет возможность сжимать границы, чтобы соответствовать его содержимому, несмотря на любые отступы или поля вокруг. Добавление той же подкладки внутри стержня, что и в первой ячейке, идеально подходит .
Чтобы быть более точным, подойдут padding-top:20px
и padding-bottom:20px
в .bar-правиле css (потому что я не уверен, что отступы могут ошибаться с шириной). Также добавлено style='width:100%;'
во вторую ячейку, чтобы уменьшить первую ячейку.