CSS浮动水平溢出

CSS Float Horizontal Overflow

我有以下 jsfiddle:https://jsfiddle.net/CLight/1emh82cv/

这是一个递归结构,它由两个共享顶行的双单元格和一个位于 second/bottom 行的单元格组成。这三个单元格将被递归地插入到底部单元格中。 我正在研究如何让单元格在溢出时水平扩展,而不破坏结构。非常感谢。

这是html:

 <div class="cell-main">
  <div class="cell-left">
    testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
  </div>
  <div class="cell-right">
    test
  </div>
  <div class="cell-bottom">
    <div class="cell-left">
      test
    </div>
    <div class="cell-right">
      test
    </div>
    <div class="cell-bottom">

      <div class="cell-left">
        test
      </div>
      <div class="cell-right">
        test
      </div>

    </div>
  </div>
</div>

这是CSS:

*{
    box-sizing: border-box; 
}
div{
  border: 1px solid black;
}

.cell-left {
    height: 100%;
    padding: 5px;
    width: 50%;
    float: left;
    text-align:left
}

.cell-right {
    height: 100%;
    padding: 5px;
    width: 50%;

    float: left;
    text-align:right
}

.cell-bottom {
    height: 100%;
    padding: 5px;
    width: 94%;
    margin-left: 3%;
    float: left;
}

.cell-main {
    height: 100%;
    padding: 5px;
    width: 100%;
    float:left;
}

编辑:更新了 jsfiddle 和标题。

我认为您正在搜索 overflow-wrap 属性。

The overflow-wrap CSS property specifies whether or not the browser should insert line breaks within words to prevent text from overflowing its content box. (Mozilla MDN)

这个 属性 可以有以下值,如果你需要它递归,全局值对你来说可能很有趣:

/* Keyword values */
overflow-wrap: normal;
overflow-wrap: break-word;

/* Global values */
overflow-wrap: inherit;
overflow-wrap: initial;
overflow-wrap: unset;

如果您想保持地块的高度,请在主 div 上使用 overflow: auto

查看我的代码片段!

*{
    box-sizing: border-box; 
}
div{
  border: 1px solid black;
  overflow-wrap: break-word;
}

.cell-left {
    height: 100%;
    padding: 5px;
    width: 50%;
    float: left;
    text-align:left
}

.cell-right {
    height: 100%;
    padding: 5px;
    width: 50%;

    float: left;
    text-align:right
}

.cell-bottom {
    height: 100%;
    padding: 5px;
    width: 94%;
    margin-left: 3%;
    float: left;
}

.cell-main {
    height: 100%;
    padding: 5px;
    width: 100%;
    float:left;
}
<div class="cell-main">
  <div class="cell-left">
    testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
  </div>
  <div class="cell-right">
    test
  </div>
  <div class="cell-bottom">
    <div class="cell-left">
      test
    </div>
    <div class="cell-right">
      test
    </div>
    <div class="cell-bottom">

      <div class="cell-left">
        test
      </div>
      <div class="cell-right">
        test
      </div>

    </div>
  </div>
</div>