Ответ на этот вопрос нуждается в обновлении, так как браузеры изменились
Исходный вопрос
Я просмотрел несколько постов в StackOverflow, но так и не смог найти ответ на этот довольно простой вопрос.
У меня есть такая HTML-конструкция:
<table>
<tr>
<td class="thatSetsABackground">
<div class="thatSetsABackgroundWithAnIcon">
<dl>
<dt>yada
</dt>
<dd>yada
</dd>
</dl>
<div>
</td>
<td class="thatSetsABackground">
<div class="thatSetsABackgroundWithAnIcon">
<dl>
<dt>yada
</dt>
<dd>yada
</dd>
</dl>
<div>
</td>
</tr>
</table>
Что мне нужно для div
, чтобы заполнить высоту td
, чтобы я мог располагать div ' s фон (значок) в правом нижнем углу тд
.
Как вы предлагаете мне это сделать?
Если вы зададите своему TD высоту 1px, тогда у дочернего div будет родительский элемент с повышенным уровнем, от которого он будет вычисляться в%. Поскольку ваше содержимое будет больше 1px, td будет автоматически увеличиваться, как и div. Какая-то фигня, но держу пари, что это сработает.
Вы можете попробовать сделать свой div float:
.thatSetsABackgroundWithAnIcon{
float:left;
}
В качестве альтернативы, используйте inline-block:
.thatSetsABackgroundWithAnIcon{
display:inline-block;
}
Рабочий пример метода inline-block:
table, th, td {border: 1px solid black; }
Я хочу, чтобы ячейка была на всю высоту < / td> Эта ячейка
выше
, чем
первая
CSS height: 100% работает, только если родительский элемент имеет явно определенную высоту. Например, это будет работать так, как ожидалось:
td {
height: 200px;
}
td div {
/* div will now take up full 200px of parent's height */
height: 100%;
}
Поскольку кажется, что ваш С разметкой ячеек таблицы следующим образом: Изменить: использование jQuery для установки высоты div Если вы сохраните Измените фоновое изображение самого Или примените CSS к div:
будет переменной высоты, что, если вы добавите нижний правый значок с абсолютно позиционированным изображением, например:
.thatSetsABackgroundWithAnIcon {
/* Makes the <div> a coordinate map for the icon */
position: relative;
/* Takes the full height of its parent <td>. For this to work, the <td>
must have an explicit height set. */
height: 100%;
}
.thatSetsABackgroundWithAnIcon .theIcon {
position: absolute;
bottom: 0;
right: 0;
}
<td class="thatSetsABackground">
<div class="thatSetsABackgroundWithAnIcon">
<dl>
<dt>yada
</dt>
<dd>yada
</dd>
</dl>
<img class="theIcon" src="foo-icon.png" alt="foo!"/>
</div>
</td>
, этот фрагмент jQuery правильно установит его высоту:
// Loop through all the div.thatSetsABackgroundWithAnIcon on your page
$('div.thatSetsABackgroundWithAnIcon').each(function(){
var $div = $(this);
// Set the div's height to its parent td's height
$div.height($div.closest('td').height());
});
.
.thatSetsABackgroundWithAnIcon{
height:100%;
}
Похожие вопросы: