Ваша главная проблема в том, что вы не используете clear
для очистки поплавков. Вот почему все это горизонтально.
Теперь давайте исправим это и сделаем его более осмысленным.
Элементы могут иметь более одного класса, разделенных пробелом. Есть общий класс для bubble
, затем классы для sender
и receiver
Это даст вам что-то вроде:
//Div is an invalid child of ul, use li
var userClass = user.id === msgsender.id ? "sender" :"receiver";
$("#messages").append($("<li class='bubbble'>").addClass(userClass).text(msg));
//Got rid of div from the below, it is invalid html
function render() {
return (
<div>
<ul id="messages">
</ul>
</div>
);
}
CSS
.bubble {
overflow-x: hidden;
position: relative;
max-width: 100px;
padding: 5px;
font-family: arial;
margin: 0 auto;
font-size: 14px;
border-radius: 6px;
//Need to clear floats to get each
//Message on a new line.
clear:both;
}
.sender {
background: #cad5d7;
float:left;
}
.receiver {
background: #0072c6;
float:right;
}
ul {
padding: 0px;
margin: 4px;
}
Когда при визуализации должен дать вам:
.bubble {
overflow-x: hidden;
position: relative;
max-width: 100px;
padding: 5px;
font-family: arial;
margin: 0 auto;
font-size: 14px;
border-radius: 6px;
margin-bottom:2px;
}
.sender {
background: #cad5d7;
float:left;
clear:both;
}
.receiver {
background: #0072c6;
float:right;
clear:both;
color:#FFF;
}
ul {
padding: 0px;
margin: 4px;
}
<ul id="messages">
<li class="bubble sender">Hi from sender</li>
<li class="bubble receiver">Hi from reciever</li>
<li class="bubble sender">Whats up?</li>
<li class="bubble sender">Having a good day?</li>
<li class="bubble receiver">Not much. Just answering questions on SO</li>
</ul>