任何人都可以告诉我为什么行方向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>
答案 0 :(得分:4)
让我们澄清一下结构:
main
,section
和div
元素是灵活容器。section
是main
中的灵活项目。div
是section
中的灵活项目。main
不是灵活项目,因为其父级(body
)不是灵活容器。flex-shrink: 0
。这是布局:
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;
这里发生了什么:
flex-shrink: 0
阻止其缩小。div
正在flex-shrink: 0
扩展其父级div
元素(红色边框)。
<{1}}上的section
阻止其缩小。flex-shrink: 0
在section
上不扩展其父级flex-shrink: 0
元素(绿色背景),因为section
不是灵活项目并且main
不适用。
main
是标准的块级元素(即块格式化上下文中的元素),the default overflow: visible
适用。flex-shrink
元素设为flex容器,则main
元素将成为弹性项目,指定的body
适用,main
根据其后代进行扩展,以及。因此解决方案是启用收缩。
flex-shrink: 0
&#13;
main
&#13;