Я пытаюсь создать базовый вид мессенджера на экране мобильного телефона. Таким образом, в верхней части есть заголовок, прокручиваемый список сообщений в середине и полоса внизу с текстовой областью и кнопкой для отправки нового сообщения.
Я использую плагин автоматического изменения размера, чтобы текстовая область расширялась, когда пользователь печатает свое сообщение. Проблема состоит в том, что, изменяя свойство высоты, он начинает переполнять высоту контейнера, в котором он находится, вместо того, чтобы этот контейнер расширялся, чтобы занять больше места.
Рабочий образец здесь: https://codepen.io/jwynveen/pen/RJdWLB?editors=1100#0
#container {
width: 412px;
height: 660px;
border: solid 2px black;
display: flex;
flex-direction: column;
}
#container h1 {
border-bottom: solid 1px gray;
margin-bottom: 0;
padding: 1rem;
}
#container #message-list {
flex-grow: 1;
flex-shrink: 1;
overflow-y: scroll;
}
#container #message-list .message {
margin: 1rem;
padding: 1rem;
border: solid 1px gray;
}
#container #message-input-bar {
display: block;
}
#container #message-input {
padding: 1rem;
display: flex;
border-top: solid 2px red;
}
#container #message-input textarea {
flex-grow: 1;
}
<html>
<div id="container">
<h1>My Header</h1>
<div id="message-list">
<div class="message">This is a dummy message.</div>
<div class="message">This is a dummy message.</div>
</div>
<div id="message-input">
<textarea style="height: 100px"></textarea>
<button id="send">Send</button>
</div>
</div>
</html>
Если в центральной области нет сообщений, текстовое поле расширяет свой контейнер, как и ожидалось. Но как только в центральной области достаточно прокрутки, текстовое поле начинает переполняться.