Jas*_*ant 1 html css padding vertical-alignment
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
CSS:
#wrapper {
    display: table;
}
aside {
    background-color:#EEE;
    margin:0;
    padding: 0;
}
.column {
    display: table-cell; 
}
Run Code Online (Sandbox Code Playgroud)
JS
$('textarea').focus(function () {
    $(this).attr('rows',8);
});
Run Code Online (Sandbox Code Playgroud)
这是演示
现在,
当我专注于textarea,textarea增加的高度,因此高度也div#main增加.这增加了padding-top两个aside人的.
我不知道,如果display:table和display:cell它背后的原因,但我不能找出问题.
在我写这个问题时,我想出了这个问题,所以分享它来帮助别人.
默认情况下,html元素display: cell具有vertical-align: middle.
因此,无论何时height一个细胞增加,其他细胞的含量都会因为而变化vertical-align:middle.(它不是填充顶部,而是在单元格中间垂直对齐)
那么,要解决这个问题,
我把它添加到我的CSS中,
.column {
    display: table-cell; 
    vertical-align: top;
}
Run Code Online (Sandbox Code Playgroud)