Я создаю чат с помощью css flexbox, и, поскольку я хочу, чтобы мои сообщения отображались в нижней части контейнера, я использовал justify-content: flex-end
, но когда у меня много сообщений, div не прокручивается с помощью overflow: auto
Я читал о решении, которое должно поменять местами мой .messages
div и мой .write-zone
div и заменить flex-direction: column-reverse
, но это не очень хорошее решение для меня, потому что содержание моего .messages
div динамический, сообщения будут добавлены, а уровень прокрутки не будет следовать, и я хотел бы избежать прокрутки в javascript.
Кто-нибудь знает какое-либо решение или хитрость для этого?
Вот скрипка, показывающая скелет моего кода:
.container {
width: 60%;
height: 300px;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.messages {
height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-end;
overflow-y: auto;
}
.message {
margin: 5px;
height: 80px;
display: flex;
flex-direction: row;
}
.message.user {
justify-content: flex-end;
background-color: #2bf;
}
.message.other {
justify-content: flex-start;
background-color: #bbb;
}
.write-zone {
width: 100%;
height: 7%;
display: flex;
flex-direction: row;
justify-content: space-around;
}
input {
width: 80%;
}
<div class="container">
<div class="messages">
<div class="message user">
Toto
</div>
<div class="message other">
Titi
</div><div class="message user">
Toto
</div>
<div class="message other">
Titi
</div>
<div class="message user">
Toto
</div>
<div class="message other">
Titi
</div>
<div class="message user">
Toto
</div>
<div class="message other">
Titi
</div>
<div class="message user">
Toto
</div>
<div class="message other">
Titi
</div>
<div class="message user">
Toto
</div>
<div class="message other">
Titi
</div>
</div>
<div class="write-zone">
<input type="text" />
<button>
send
</button>
</div>
</div>