文本未包装在Flex容器内

Mih*_*hai 9 html css word-wrap flexbox

我设法使用灵活的盒子布局模块做了很多事情,但是当谈到段落时我遇到了这个问题:

  • 当我使用少量文本时,一切都按预期工作:

    在此输入图像描述

  • 当我使用大量文本时,布局会中断:

    在此输入图像描述

这是我正在使用的代码:

body {
  width: 90%;
  margin: 3em auto;
  background-color: #aaa;
}
section {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
  border: 1px solid black;
}
.title {
  flex: 1 0 100%;
  text-align: center;
  background-color: #eee;
}
.image {
  flex: 0 0 auto;
  background-color: #ccc;
}
.image img {
  display: block;
  max-height: 100%;
  max-width: 100%;
}
.text {
  flex: 6 0 auto;
  background-color: #96AED1;
}
Run Code Online (Sandbox Code Playgroud)
<section>
  <div class="title">
    <h1>Title here</h1>
  </div>

  <div class="image">
    <img src="http://www.macovei-sculptor.ro/img.jpg">
  </div>

  <div class="text">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis velit, ullamcorper eu ornare sed, vulputate quis diam. Duis ultrices rutrum sapien, in condimentum nibh sagittis sit amet. Morbi sit amet rhoncus dui, at pharetra nisi. Nunc et
      lacus porttitor, pretium nisl at, sollicitudin velit. Donec felis nisl, consequat vitae egestas vestibulum, egestas non tortor. Cras mattis non sem nec aliquam. Sed dignissim sit amet sapien vitae feugiat. Pellentesque vel luctus ante, quis ornare
      purus. Nulla in arcu sapien. Aenean tempor arcu ac lacinia pellentesque. Quisque vulputate maximus augue, non aliquet ligula gravida in. Donec a leo justo. Integer velit eros, blandit sit amet elit eget, efficitur mollis nulla. Suspendisse tempor
      ligula facilisis scelerisque ullamcorper. Ut vehicula ligula ipsum, cursus condimentum sapien pretium ac.</p>
  </div>
</section>
Run Code Online (Sandbox Code Playgroud)

为什么<p>在使用大量文本时标签没有正确包装?

Kio*_*ong 11

适当的解决方案是要么放

white-space: initial;
Run Code Online (Sandbox Code Playgroud)

要么

min-width: 0;
Run Code Online (Sandbox Code Playgroud)

看看这里的链接

*我知道链接是关于截断文本.但是,相同的解决方案适用于包装文本.


xde*_*dev 6

.text 的父级具有 flex-direction: row,因此 .text 应该将收缩设置为 1,否则内部文本将不会换行

body {
  width: 90%;
  margin: 3em auto;
  background-color: #aaa;
}
section {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
  border: 1px solid black;
}
.title {
  flex: 1 0 100%;
  text-align: center;
  background-color: #eee;
}
.image {
  flex: 0 0 auto;
  background-color: #ccc;
}
.image img {
  display: block;
  max-height: 100%;
  max-width: 100%;
}
.text {
  flex: 6 1 auto;  /* FLEX-SHRINK: 1; */
  background-color: #96AED1;
}
Run Code Online (Sandbox Code Playgroud)
<section>
  <div class="title">
    <h1>Title here</h1>
  </div>

  <div class="image">
    <img src="http://www.macovei-sculptor.ro/img.jpg">
  </div>

  <div class="text">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer felis velit, ullamcorper eu ornare sed, vulputate quis diam. Duis ultrices rutrum sapien, in condimentum nibh sagittis sit amet. Morbi sit amet rhoncus dui, at pharetra nisi. Nunc et
      lacus porttitor, pretium nisl at, sollicitudin velit. Donec felis nisl, consequat vitae egestas vestibulum, egestas non tortor. Cras mattis non sem nec aliquam. Sed dignissim sit amet sapien vitae feugiat. Pellentesque vel luctus ante, quis ornare
      purus. Nulla in arcu sapien. Aenean tempor arcu ac lacinia pellentesque. Quisque vulputate maximus augue, non aliquet ligula gravida in. Donec a leo justo. Integer velit eros, blandit sit amet elit eget, efficitur mollis nulla. Suspendisse tempor
      ligula facilisis scelerisque ullamcorper. Ut vehicula ligula ipsum, cursus condimentum sapien pretium ac.</p>
  </div>
</section>
Run Code Online (Sandbox Code Playgroud)


Cra*_*der 0

我有一个似乎有效的解决方案,但我不认为它是 100% 正确的,这是一个小提琴:

https://jsfiddle.net/2xxorq4n/1/

这是 CSS 代码:

body {
  width: 90%; 
  margin: 3em auto;
  background-color: #aaa;
}
section {
  border:1px solid black;
}
.title {
  text-align: center;
  background-color: #eee;
}
.image { 
  background-color: #ccc;
}
.image img {
  display: block; 
  max-height: 100%; 
  max-width: 100%;
}
.text { 
  background-color: #96AED1;
}
/* FLEX STYLES */
section {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
}
.title, .image, .text {
  flex: 1 100%;
}
@media all and (min-width: 600px) {
  .image { flex: 1 auto; }
}
@media all and (min-width: 800px) {
  .text { flex: 800 0px; }
  .image { order: 1; }
  .text { order: 2; }
}
Run Code Online (Sandbox Code Playgroud)

具体来说,我认为这是不正确的:.text { flex: 800 0px; }。虽然它似乎有效,但我不认为它应该像 css 技巧网站上的示例那样工作,该网站提供了有关 Flexbox 使用的更多信息flex: 2 0px;

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

  • 谢谢您的回答。当我回复@CodeRomeos时,我发现如果我将“.text”元素的初始大小从“flex: 6 0 auto;”取出到“flex: 6 0 0;”,它的行为就会正常。但这仍然没有意义。 (2认同)