Ich versuche, eine TextArea mit Javascript Autogrow. Die Logik ist ziemlich einfach, und hier ist mein Arbeitscode:Seltsames Verhalten mit TextArea Autogrow und CSS-Box-Sizing
$("#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>
Alles funktioniert gut, aber wenn ich die box-sizing: border-box;
Eigenschaft entfernen, ich sehe seltsame Dinge. Mit jedem Keydown-Ereignis wird die Textfläche automatisch.
Was ist die Beziehung zwischen TextArea Autogrowing und der box-sizing
Eigenschaft?
EDIT
die Demos hier ansehen:
Mit dem kasten Leimungseigenschaft: http://52.90.45.189/aks/textarea-autogrow.html
Ohne die kasten Leimungseigenschaft: http://52.90.45.189/aks/textarea-autogrow-no-border-box.html
Ich kann verstehen, dass Scrollheight Erhöht sich um 10px, wenn die Box-Sizing entfernt wird. Aber warum fügt der Browser jedes Mal, wenn eine Taste gedrückt wird, ein zusätzliches 10px jedesmal hinzu?
Ich sah Demos, lesen Sie meine Antwort? –
Ja, danke. Aber warum wird Padding mit JEDEM Keydown Event hinzugefügt? Sollte es nicht nur einmal enthalten sein? –
Es ist einmal enthalten, aber es wird jedes Mal in Höhe des Elements hinzugefügt, deshalb ist scrollheight größer als tatsächliche Höhe. –