Я создал два пузыря чата, один из которых мне нужно выровнять по левому краю, а другой мне нужно выровнять по правому краю. На данный момент мои CSS растут до конца, как показано ниже.
На данный момент я не хочу жестко задавать ширину и хочу, чтобы пузырь рос вместе с текстом чата, и оба должны быть выровнены по левому краю, а другой - по правому краю, как показано ниже:
CSS:
.speech-wrapper{
padding: 5px 6px;
}
.chatbox {
padding: 5px;
margin-left: 5px;
margin-right: 5px;
margin-top:0px;
background: #075698;
color: #FFF;
position: relative;
border-radius: 10px;
overflow-wrap: break-word;
word-wrap: break-word;
hyphens: auto;
box-shadow: 0 8px 6px -6px black;
}
.chatbox_other{
height:auto;
padding: 5px;
margin-left: 5px;
margin-right: 5px;
margin-top:0px;
background: #DCDCDC;
color: #000;
position: relative;
border-radius: 10px;
overflow-wrap: break-word;
word-wrap: break-word;
hyphens: auto;
box-shadow: 0 8px 6px -6px black;
}
.name_other{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #1970b0;
}
.name_other1{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #ba006e;
}
.name_other2{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #007670;
}
.name_other3{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #3b0256;
}
.name_other4{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #00512b;
}
.name_other5{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #a91024;
}
.name_other6{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #b8471b;
}
.name_other7{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #7f1c7d;
}
.timestamp_other{
font-size: 11px;
position: absolute;
bottom: 0px;
right: 10px;
text-transform: uppercase; color: #999
}
.timestamp{
font-size: 11px;
position: absolute;
bottom: 0px;
right: 10px;
text-transform: uppercase; color: #fff
}
/* speech bubble 13 */
.name{
font-weight: 600;
font-size: 12px;
margin: 0px 0px 9px;
color: #ffffff;
}
.triangle.left-top:after {
content: ' ';
position: absolute;
width: 0;
height: 0;
left: -10px;
right: auto;
top: 0px;
bottom: auto;
border: 22px solid;
border-color: #DCDCDC transparent transparent transparent;
z-index: -1;
}
.triangle.right-top:before {
content: ' ';
position: absolute;
width: 0;
height: 0;
left: auto;
right: -10px;
top: 0;
bottom: auto;
border: 32px solid;
border-color: #075698 transparent transparent
transparent;
z-index: -1;
}
.alt{
margin: 0 0 0 60px;
}
HTML:
<div class = "speech-wrapper">
<div class = "chatbox triangle right-top alt">
<div class = "txt">
<p class = "name">Apple TestUser1</p>Hi<span class = "timestamp">10:20 pm</span></div>
</div>
<div class = "speech-wrapper">
<div class = "chatbox_other triangle left-top">
<div class = "txt">
<p class = "name">Apple TestUser1</p>Hi<span class = "timestamp">10:20 pm</span>
</div>
</div>
</div>
</div>
Я пробовал uisng float left, но при уменьшении размера окон чат начал перекрываться друг с другом
Для тестирования попробуйте ссылку ниже https://codepen.io/rajesh-kumar-dash/pen/KbvqQX
@ingus Проблема с макетом. Оба пузыря на данный момент растут до конца, так как ширина и высота автоматические. Я хочу, чтобы они занимали столько же места, сколько текст. Один должен быть выровнен по правому краю, а другой - по левому
Достичь желаемого эффекта с текущим кодом будет сложно, поскольку «пузыри» по умолчанию принимают максимальный размер за вычетом полей. В то же время они не могут адаптироваться к своему содержанию. Какая у вас другая версия с использованием float? Это выглядит более многообещающе, не должно быть так сложно исправить перекрытие.






«Грязный» способ сделать это - добавить после div, просто чтобы очистить float:
<div class = "speech-wrapper"><div class = "chatbox triangle right-top alt"><div class = "txt"><p class = "name">Apple TestUser1</p>Hi<span class = "timestamp">10:20 pm</span></div></div>
<div style = "clear:both"></div>
<div class = "speech-wrapper"><div class = "chatbox_other triangle left-top"><div class = "txt"><p class = "name">Apple TestUser1</p>Hi<span class = "timestamp">10:20 pm</span></div></div>
<div style = "clear:both"></div>
Более чистый способ сделать это называется «Clearfix». Я предлагаю вам взглянуть на эти две ссылки, чтобы понять это и использовать в своем коде:
Я думаю, что использование float: right; для правого пузыря и для левого пузыря: float: left; с width: auto; должен работать
Вы также можете добавить max-width, чтобы пузырь не вырастал из чата
Я не понимаю, в чем проблема ??