フレックスコンテナー内のテキストがIE11で折り返されない


176

次のスニペットを考えてみましょう:

.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
align-items: center親要素から削除すると、問題はなくなります。それが原因のようです
ネイサン・ペリエ

回答:


280

これをコードに追加します。

.child { width: 100%; }

ブロックレベルの子は、親の幅全体を占めることになっています。

Chromeはこれを理解します。

IE11は、何らかの理由で、明示的な要求を望んでいます。

使用flex-basis: 100%またはflex: 1動作します。

注:HTML構造のさまざまなレベルをソートして、どのコンテナがを取得するかを特定することが必要になる場合がありwidth: 100%ます。CSS折り返しテキストがIEで機能しない


13
幅を追加する必要がありました:100%; 親に。このバグは、状況に応じてさまざまな修正が行われているようです。IEのため息!
Dennis Johnsen 2016年

8
.childで「max-width:100%」を使用してください。
タイラー

2
:私は(各行が、それの子供たちが持つ、フレックスあるフレックスを使用してテーブルを作成していflex: 1 1 50%; display: flex; align-items: center;た細胞では、長いテキストをワードラップしながら、驚くことではないが、IEが故障した設定。。width:100%作品を、しかし設定min-width: 100%「のdoesntをそれが必要、それはdoesnの!トン(すべてのものIEのように)、私が試したのでmax-width: 99%、そして驚くべきことに、それはない仕事を、私は使用してはと思います。width:100%良いかもしれない?
kumarharsh

1
これを機能flex-direction: columnさせるには、親を削除する必要がありました。
dman

1
この問題は、フレックスカラムに限定されています。フレックス行では発生しません。
Drazen Bjelovuk

40

私は同じ問題を抱えていましたが、要点は、要素がその幅をコンテナーに適合させていなかったことです。

を使用する代わりにwidth:100%一貫性を保ち(フローティングモデルとflexモデルを混在させないでください)、以下を追加してflexを使用します。

.child { align-self: stretch; }

または:

.parent { align-items: stretch; }

これでうまくいきました。


2
ええ、この答えも理にかなっています(そしておそらく幅の答えよりも正しいでしょう)。私のデザインの1つでは、width:100%を設定することは不可能であり、このソリューションはうまく機能します。
クマールハーシュ

11

タイラーは使用して、ここでコメントの一つで提案しています

max-width: 100%;

子供の上で働くかもしれません(私のために働いた)。使用していalign-self: stretchない場合にのみ機能しますalign-items: center(私がやっています)。width: 100%並べて表示するフレックスボックス内に複数の子がない場合にのみ機能します。


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;
}

「width:auto」がありました。祖父母に。100%に切り替えると、これが修正されました。
jensanity5000

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: centerstackoverflow.com/a/39365207/630170を
kumarharsh '

0

100%一貫してこのフレックス方向列のバグを回避できた唯一の方法は、最小幅のメディアクエリを使用して、デスクトップサイズの画面の子要素に最大幅を割り当てることです。

.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-basis: 100%;、追加することでflex: 1;うまくいきました。


このソリューションはすでに数年前に提供されており、必要なのは1つだけなので、重複した回答を投稿しないでください。
エイソン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.