Как сделать
fill height

Ответ на этот вопрос нуждается в обновлении, так как браузеры изменились


Исходный вопрос

Я просмотрел несколько постов в 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 фон (значок) в правом нижнем углу тд .

Как вы предлагаете мне это сделать?

89
задан CodeMonkey 18 October 2016 в 18:06
поделиться

4 ответа

Если вы зададите своему TD высоту 1px, тогда у дочернего div будет родительский элемент с повышенным уровнем, от которого он будет вычисляться в%. Поскольку ваше содержимое будет больше 1px, td будет автоматически увеличиваться, как и div. Какая-то фигня, но держу пари, что это сработает.

155
ответ дан 24 November 2019 в 07:16
поделиться

Вы можете попробовать сделать свой div float:

.thatSetsABackgroundWithAnIcon{

    float:left;
}

В качестве альтернативы, используйте inline-block:

.thatSetsABackgroundWithAnIcon{

    display:inline-block;
}

Рабочий пример метода inline-block:

 table, th, td {border: 1px solid black; } 
 
Я хочу, чтобы ячейка была на всю высоту
< / td>
Эта ячейка
выше
, чем
первая
5
ответ дан 24 November 2019 в 07:16
поделиться

CSS height: 100% работает, только если родительский элемент имеет явно определенную высоту. Например, это будет работать так, как ожидалось:

td {
    height: 200px;
}

td div {
    /* div will now take up full 200px of parent's height */
    height: 100%;
}

Поскольку кажется, что ваш будет переменной высоты, что, если вы добавите нижний правый значок с абсолютно позиционированным изображением, например:

.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 для установки высоты div

Если вы сохраните

как дочерний элемент , этот фрагмент 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());
});
31
ответ дан 24 November 2019 в 07:16
поделиться

Измените фоновое изображение самого .

Или примените CSS к div:

.thatSetsABackgroundWithAnIcon{
    height:100%;
}
-3
ответ дан 24 November 2019 в 07:16
поделиться