Flex容器中的文本不会在IE11中自动换行


175

考虑以下代码段:

.parent {
  display: flex;
  flex-direction: column;
  width: 400px;
  border: 1px solid red;
  align-items: center;
}
.child {
  border: 1px solid blue;
}
<div class="parent">
  <div class="child">
    Lorem Ipsum is simply dummy text of the printing and typesetting industry
  </div>
  <div class="child">
    Lorem Ipsum is simply dummy text of the printing and typesetting industry
  </div>
</div>

在Chrome中,文本按预期自动换行:

在此处输入图片说明

但是,在IE11中,文本未包装

在此处输入图片说明

这是IE中的已知错误吗?(如果是,将不胜感激指针)

有已知的解决方法吗?


这个类似的问题没有明确的答案和官方的指针。


1

1
当我align-items: center从父元素中删除时,问题消失了。这似乎是造成它的原因
Nathan Perrier

Answers:


277

将此添加到您的代码:

.child { width: 100%; }

我们知道块级子级应该占据父级的整个宽度。

Chrome了解这一点。

出于任何原因,IE11都需要一个明确的请求。

使用flex-basis: 100%flex: 1也可以。

注意:有时有必要对HTML结构的各个级别进行排序,以查明哪个容器获取width: 100%CSS换行文字在IE中不起作用


13
我必须添加宽度:100%;给父母。根据上下文,此错误似乎有各种修复。叹IE!
丹尼斯·约翰森,2016年

8
而是在.child上使用“最大宽度:100%”。
泰勒

2
我正在使用flex创建一个表(每一行都是一个flex,它的子级具有:flex: 1 1 50%; display: flex; align-items: center;。毫不奇怪,IE会在单元格中用长文字包装文字时失败,设置width:100%有效,但设置无效min-width: 100%! t(像IE一样),所以我尝试了一下max-width: 99%,但确实如此,我认为使用width:100%可能会更好?
kumarharsh

1
我必须删除flex-direction: column父母才能正常工作。
dman

1
此问题似乎是Flex列所独有的。伸缩行不会发生。
Drazen Bjelovuk

40

我遇到了同样的问题,关键是该元素没有根据容器调整其宽度。

而不是使用width:100%要保持一致(不要混合使用浮动模型和flex模型),并通过添加以下代码来使用flex:

.child { align-self: stretch; }

要么:

.parent { align-items: stretch; }

这对我有用。


2
是的,这个答案也很有意义(可能比宽度答案更正确)。在我的一种设计中,无法设置width:100%,并且此解决方案效果很好。
kumarharsh

11

正如泰勒在此处的评论之一中建议的那样,使用

max-width: 100%;

在孩子身上可能会工作(为我工作)。使用align-self: stretch只有当你不使用的作品align-items: center(我做了)。width: 100%仅当您的Flexbox中没有要同时显示的多个子项时,该选项才有效。


当将max-width应用于与align-items:flex-start相同的容器时,它对我有用。
爱马仕(Herms)

7

嗨,我不得不将100%的宽度应用于其祖父母元素。不是其子元素。

.grandparent {
    float:left;
    clear: both;
    width:100%; //fix for IE11 text overflow
}

.parent {
    display: flex;
    border: 1px solid red;
    align-items: center;
}

.child {
    border: 1px solid blue;
}

我有“宽度:自动;” 在祖父母。切换到100%可以解决此问题。
jensanity5000 '19

2

所有这些解决方案都对我不起作用。显然存在中的IE错误flex-direction:column

我只有在删除后才能正常工作flex-direction

flex-wrap: wrap;
align-items: center;
align-content: center;

0

提议的解决方案对“ .child {width:100%;}”没有帮助,因为我的标记更加复杂。但是,我找到了一个解决方案-删除“ align-items:center;”,它也适用于这种情况。

.parent {
  display: flex;
  flex-direction: column;
  width: 400px;
  border: 1px solid red;
  /*align-items: center;*/
}
.child {
  border: 1px solid blue;
}
<div class="parent">
  <div class="child">
    Lorem Ipsum is simply dummy text of the printing and typesetting industry
  </div>
  <div class="child">
    Lorem Ipsum is simply dummy text of the printing and typesetting industry
  </div>
</div>


您无需删除align-items: center。参见stackoverflow.com/a/39365207/630170
kumarharsh

0

我100%始终能够避免发生该flex-direction列错误的唯一方法是使用最小宽度的媒体查询为桌面大小的屏幕上的子元素分配最大宽度。

.parent {
    display: flex;
    flex-direction: column;
}

//a media query targeting desktop sort of sized screens
@media screen and (min-width: 980px) {
    .child {
        display: block;
        max-width: 500px;//maximimum width of the element on a desktop sized screen
    }
}

您需要将自然内联子元素(例如<span><a>)设置为内联以外的其他内容(主要是display:block或display:inline-block),此修补程序才能起作用。


0

我在这里找不到解决方案,也许有人会有用的:

.child-with-overflowed-text{
  word-wrap: break-all;
}

祝好运!



0

我也遇到了这个问题。

唯一的选择是在子元素中定义一个宽度(或最大宽度)。IE 11有点愚蠢,我只花了20分钟来实现此解决方案。

.parent {
  display: flex;
  flex-direction: column;
  width: 800px;
  border: 1px solid red;
  align-items: center;
}
.child {
  border: 1px solid blue;
  max-width: 800px;
  @media (max-width:960px){ // <--- Here we go. The text won't wrap ? we will make it break !
    max-width: 600px;
  }
  @media (max-width:600px){
    max-width: 400px;
  }
  @media (max-width:400px){
    max-width: 150px;
  }
}

<div class="parent">
  <div class="child">
    Lorem Ipsum is simply dummy text of the printing and typesetting industry
  </div>
  <div class="child">
    Lorem Ipsum is simply dummy text of the printing and typesetting industry
  </div>
</div>

-1

我在flex包装器中溢出图像时遇到了类似的问题。

将其中一个flex-basis: 100%;或一个添加flex: 1;到溢出的子项对我来说很有效。


几年前就已经给出了该解决方案,而我们只需要一个解决方案,因此请避免发布重复的答案。
艾森

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.