设置与文本一样宽的背景,并在断路后对齐



这是一个聊天框示例,我希望span.p元素在右侧,我也希望背景与文本一样宽:

<div id="msgWindow" class="block">
<div id="messages">
<p class="sysmsg">You're now connected with a random chat partner...</p>
<p class="sysmsg">Say Hello!</p>
<p class="msg-item"><span class="you">hi</span></p>
<p class="msg-item"><span class="you">this is a long woooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooord</span></p>
</div>
</div>

我正在尝试使用此CSS代码:

#msgWindow{
    position: relative;
}
#messages{
    height: 350px;
    padding: 10px;
    overflow: auto;
    word-wrap: break-word;
}
#messages p{
    padding: 5px 0;
    }
.msg-item{
}
.you, .stranger{
    padding: 4px;
    color: #FFF4F4;
    font-weight: bold;
    border-radius: 0.5em;
    -moz-border-radius: 0.5em;
    -webkit-border-radius: 0.5em;
    margin-right: 5px;
}
span.you{    
    display: inherit;
    margin-left: 60%;
    width: 100px;
    background-color: #555;
    text-align: right;
    word-wrap: break-word;
    direction: rtl;
}

,但文本在断路后没有对齐,并且不仅为文本设置了背景。

这是我在说什么的演示:https://jsfiddle.net/dhb0r3k7/

任何帮助将不胜感激!

如果我正确阅读了您的问题,您希望使用左对齐的文本具有可变大小的右浮动文本框。您可以尝试这样的事情:

.msg-item{
  clear: both; // <-- one msg item per row
}
span.you{    
    float:right; // <-- right floated text box
    max-width: 40%; // <-- up to 40% of parent div
    text-align: left; // <-- text is left-aligned
    margin-left: 60%;
    background-color: #555;
    word-wrap: break-word;
    direction: rtl;
}

您的问题并不完全清楚您要问的内容,但我认为这是您想要的:

在您的msgwindowdiv上,put display: inline-block。在您的Span.you类中,将textAlign: right更改为textAlign: left

最新更新