我試圖用Javascript做一個textarea自動增長。其中的邏輯是相當簡單的,這裏是我的工作代碼:與textarea自動增長和CSS框大小的奇怪行爲
$("#message-box").on('keydown', function() {
var scroll_height = $("#message-box").get(0).scrollHeight;
$("#message-box").css('height', scroll_height + 'px');
});
#message-box {
border: 1px solid #cccccc;
width: 400px;
min-height: 100px;
padding: 5px;
overflow: hidden;
box-sizing: border-box;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="message-box"></textarea>
一切都很正常,但是當我刪除box-sizing: border-box;
財產,我看到了奇怪的事情。 隨着每個keydown事件textarea自動增益。
textarea autogrowing和box-sizing
屬性之間的關係是什麼?
編輯
在這裏看到的演示:
與盒集束性:http://52.90.45.189/aks/textarea-autogrow.html
無箱集束性:http://52.90.45.189/aks/textarea-autogrow-no-border-box.html
我可以理解scrollHeight屬性當箱子大小被刪除時增加10px。但是,爲什麼瀏覽器每按一次鍵就會增加一個額外的10px ?
我看過演示,你看過我的回答嗎? –
是的,謝謝。但是爲什麼在每個keydown事件中添加填充?不應該只包含一次嗎? –
它包含一次,但它每次增加元素高度 這就是爲什麼scrollheight大於實際高度的原因。 –