文本未包装在flexbox中

时间:2018-02-02 13:02:27

标签: html css css3 flexbox textwrapping

任何人都可以告诉我为什么行方向Flex容器中div内的文本没有正确包装但是会溢出吗?

如果我将方向更改为section,文本将换行,我不明白为什么......

html,
body {
  height: 100%;
}

body {
  overflow-y: scroll;
  margin: 0;
}

div,
main,
section {
  align-items: stretch;
  display: flex;
  flex-shrink: 0;
  flex-direction: column;
  flex-wrap: nowrap;
  position: relative;
}

main {
  flex-grow: 1;
}

section {
  flex-flow: row nowrap;
  flex-grow: 1;
  justify-content: center;
  margin: 0 auto;
  max-width: 1280px;
  padding: 60px 0;
}

.content {
  flex-grow: 1;
  justify-content: start;
}
<body>
  <main>
    <section>
      <div class="content">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eget nulla sagittis sem egestas molestie. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
      </div>
    </section>
  </main>
</body>

1 个答案:

答案 0 :(得分:4)

让我们澄清一下结构:

  1. 您的mainsectiondiv元素是灵活容器。
  2. sectionmain中的灵活项目。
  3. divsection中的灵活项目。
  4. main不是灵活项目,因为其父级(body)不是灵活容器。
  5. 所有弹性项目都设置为flex-shrink: 0
  6. 这是布局:

    • 注意:问题中的大部分代码都不是重现问题的必要条件,因此我将其删除了。
    • 注意:每个弹性容器都会突出显示。

    &#13;
    &#13;
    div,
    main,
    section {
      display: flex;
      flex-shrink: 0;
    }
    
    section {
      padding: 60px 0;
    }
    
    main    { background-color: lightgreen; }
    section { border: 2px dashed red; }
    div     { border: 1px dashed black; }
    body    { margin: 0; }
    &#13;
    <main>
      <section>
        <div class="content">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eget nulla sagittis sem egestas molestie. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
        </div>
      </section>
    </main>
    &#13;
    &#13;
    &#13;

    这里发生了什么:

      <{1}}(黑色边框)上的
    1. flex-shrink: 0阻止其缩小。
    2. {li} div正在flex-shrink: 0扩展其父级div元素(红色边框)。 <{1}}上的
    3. section阻止其缩小。
    4. {li> flex-shrink: 0section扩展其父级flex-shrink: 0元素(绿色背景),因为section不是灵活项目并且main不适用。
    5. main是标准的块级元素(即块格式化上下文中的元素),the default overflow: visible适用。
    6. 如果将flex-shrink元素设为flex容器,则main元素将成为弹性项目,指定的body适用,main根据其后代进行扩展,以及。
    7. 因此解决方案是启用收缩

      &#13;
      &#13;
      flex-shrink: 0
      &#13;
      main
      &#13;
      &#13;
      &#13;