我正在使用display: table
和display: cell
来获得具有相同高度的3列布局。
这是我的代码,
HTML:
<div id='wrapper'>
<aside class='column'>Left sidebar</aside>
<div id='main' class='column'>
<textarea rows="2"></textarea><br>Main content <br>
<br><br><br>
</div>
<aside class='column'>Right sidebar</aside>
</div>
CSS:
#wrapper {
display: table;
}
aside {
background-color:#EEE;
margin:0;
padding: 0;
}
.column {
display: table-cell;
}
JS
$('textarea').focus(function () {
$(this).attr('rows',8);
});
这是demo
现在,
当我专注于textarea
时,textarea
的高度会增加,因此div#main
的高度也会增加。这会为padding-top
的{{1}}添加aside
。
我不确定display:table
和display:cell
是否背后的原因,但我无法弄清楚问题。
答案 0 :(得分:6)
在我写这个问题时,我想出了这个问题,所以分享它来帮助别人。
默认情况下,display: cell
的html元素为vertical-align: middle
。
因此,当一个单元格的height
增加时,其他单元格的内容会因vertical-align:middle
而移位。 (它不是填充顶部,而是在细胞中间垂直对齐)
所以,要解决这个问题,
我把它添加到我的CSS中,
.column {
display: table-cell;
vertical-align: top;
}