Проблема в том, что элементы без содержимого сворачиваются до нулевой высоты.Это соответствует спецификации CSS.К счастью, есть и хорошее решение CSS для этой проблемы.
var input = document.getElementById('input');
var output = document.getElementById('output');
input.addEventListener('input', function() {
output.value = input.value;
});
output {
display: block;
font: 20px 'Arial';
outline: 1px solid green;
}
output:empty::after { /* when the output is empty, */
content:'\00A0'; /* add some content to make sure it's not */
}
<input id="input">
<output id="output"></output>
Другое решение заключается в том, что если вы явно задаете высоту строки, тогда вы будете знать (минимальную) высоту, которой она должна быть, поэтому выможно установить свойство min-height
.
var input = document.getElementById('input');
var output = document.getElementById('output');
input.addEventListener('input', function() {
output.value = input.value;
});
output {
display: block;
font: 20px/24px 'Arial'; /* added line height */
min-height: 24px; /* set minimum height explicitly */
outline: 1px solid green;
}
<input id="input">
<output id="output"></output>