CSS HTML - DIV高度填充剩余空间

And*_*Hin 20 html javascript css jquery css3

所以我有这样的布局:

div {
  border: 1px solid
}
Run Code Online (Sandbox Code Playgroud)
<div id="col_1" style="float:left;width:150px;">1</div>
<div id="col_2" style="float:left;width:100px;">2</div>
<div id="col_3" style="float:left;width:<REMAINING_WIDTH>;">3</div>
Run Code Online (Sandbox Code Playgroud)

col_1和col_2占用固定的空间.我希望第三列能够占用其余部分.完成此任务的最佳方法是什么?

FMM*_*FMM 27

你可以做一些疯狂的事情,抛弃javascript和非常准备好的黄金时段CSS3并使用绝对定位.

看到这个jsfiddle.通过浏览器调整大小的好处也可以获得奖励积分.

#col_1 {
  position: absolute;
  top: 0px;
  bottom: 0px;
  width: 100px;
  background-color: #eee;
}
#col_2 {
  position: absolute;
  top: 0px;
  bottom: 0px;
  width: 150px;
  left: 100px;
  background-color: #ccd;
}
#col_3 {
  position: absolute;
  top: 0px;
  bottom: 0px;
  left: 250px;
  right: 0px;
  background-color: #cdc;
}
Run Code Online (Sandbox Code Playgroud)
<div id='col_1'>Column 1</div>
<div id='col_2'>Column 2</div>
<div id='col_3'>
  Column 3
</div>
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,应该是公认的答案.使用JavaScript进行基本布局是一种糟糕的形式. (4认同)

Hus*_*ein 10

这需要Javascript.如果你想要所有3个div填满窗口空间(100%),那么我们需要使用javascript来检测剩余的空间并相应地指定col_3的高度.使用jQuery,你可以做到

var one = $('#col_1').height(),
two = $('#col_2').height(), 
remaining_height = parseInt($(window).height() - one - two); 
$('#col_3').height(remaining_height); 
Run Code Online (Sandbox Code Playgroud)

  • 如果你想用margin + padding来解决它,请使用.outerHeight(); (2认同)
  • 没有javascript就有办法做到这一点; 请参阅下面的答案. (2认同)