2017-04-13 110 views
0

我有获取文本的长行正确破裂,在我工作的一个聊天功能包的一个问题。下面的HTML是相关集嵌套元素的,但饼干的关键是与.chat__messages__item.chat__messages__body(下面整个块是被设定为​​的元素的内部,因此它被所有旨在是窗口宽度响应)。CSS - 设置自动换行的动态大小容器

首先,这里的HTML/CSS ...

<style> 
    .chat__messages__inner{ 
     display: table; 
     height: 100%; 
     width: 100%;  
    } 

    .chat__messages__list { 
     display: table-cell; 
     vertical-align: bottom; 
     margin: 0; 
     padding: 10px 20px 0; 
     list-style-type: none; 
    } 

    .chat__messages__item { 
     position: relative; 
     margin-bottom: 10px; 
     padding: 8px 10px; 
     background-color: #D8F2FD; 
     clear: both; 
    } 


    <!-- THIS STYLE HAS NO AFFECT UNLESS I SET A MAX-WIDTH ON .chat__messages__item --> 
    .chat__messages__body { 
     word-wrap: break-word; 
    } 
</style> 

<div class='chat__messages__inner'> 
    <ul class='chat__messages__list'> 
     <li class='chat__messages__item'> 
      <div class='chat__messages__body'> 
       hereisaverylonglineoftextthatiwouldliketobreakandwrap 
      </div> 
     </li> 
     <li class='chat__messages__item'> 
      <div class='chat__messages__body'> 
       here is a long sentence that will wrap and behave correctly 
      </div> 
     </li> 
    </ul> 
</div> 

期望的行为是<div><li>包含文本应不宽/比文本本身较高,但这些元素也应该从来没有比他们的父母宽 - 所以有几句话,他们可能是150px宽,但如果容器缩小到小于150px,这些元素也将开始缩小,并且文本内部将开始包装。

与此代码打球,我能够通过设置样式.chat__messages__body包括word-wrap: break-word,然后设置父.chat__messages__item包括max-width: 300px(以上省略)去接近期望的结果。虽然长字会打破和包裹,只生产我的全屏窗口上正确的结果 - 如果窗口大小或低于全开始了,这个词还是包装,但股利超过300px宽(我试过将此设置为百分比,但这不起作用,这个词实际上是解开的)。

我上面包含的长句子确实如我所愿 - 其父母<div><li>都是文本的大小,并且如果窗口缩小以便这些元素的宽度比父母的宽度大(所有这些都可以扩展到​​祖先),它们也开始缩小,并且文本包装在空间上。

用简单的英语,我想长字的容器永远比100%的宽度更宽的祖先,它需要与窗口动态调整,沿途破碎,包装。

我不是一个真正的CSS /设计专家,这是我从别人那里继承代码,我一直是这样战斗的时间太长了......任何指导,将不胜感激。

+1

有一个例子的地方,你想效仿?我无法确定最终结果是什么。下面是用'显示的小提琴:直列block'加入使DIV文字的大小相匹配,作为一个出发点:https://jsfiddle.net/kgy69o9z/1/ – sander

回答

0

好了,原来做的事情是设置.chat__messages__inner.chat__messages__listdisplay: inline-blockwidth: 100%,并.chat__messages__item需要有max-width: 100%