2016-07-01 4 views
2

<span>やなどの特定のインライン要素のword-breakプロパティを変更して、ページのコンテンツのフローを改善しようとしています。インライン要素のFirefoxのワード区切り

Firefoxは、ブロックとして表示される要素(例:<div>)の単語区切りプロパティを認識しますが、Chromeは単語を区切る要求を受け入れます。

下の例では、赤と青の部分がChromeで同じようにレンダリングされます(xxxxxは複数の行に分かれています)。 Firefoxでは、赤いボックスのxxxxxがオーバーフローします。上記から

<div style="width:200px;background:red;"> 
 
    Hello <span style="word-break:break-all;">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span> World 
 
</div> 
 

 
<div style="width:200px;background:blue;word-break:break-all;"> 
 
    Hello <span>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span> World 
 
</div>

例:正しく動作しているブラウザhttps://jsfiddle.net/7scx4hfq/

? FirefoxのバグかChromeのバグですか?

さらに重要なことは、どのようにすべてのブラウザで希望の効果を達成できますか?

ブロックレベルのword-break:break-allはオプションではありません。

+0

私は、50文字の単語のためのユースケースに、常に混乱しています。あなたは**実用的な例を考え出すことができますか? –

+1

ユースケースは、テキスト中に綴られた長いリンクです。通常の単語区切りは、スラッシュ「/」でURLを壊すだけで、残りの単語には非常に大きな醜いギャップが生じます。こちらをご覧ください:https://jsfiddle.net/zL8ytno6/ FlickrやGoogleドライブへのリンクなど、醜いリンクが表示されます。 – kaymes

答えて

3

word-wrap: break-word;をFirefox用に追加できます。あなたは可能な限り同じ行のすべてのテキストを維持したい場合は

span { 
    word-break: break-all; /* for others */ 
    word-wrap: break-word; /* for Firefox */ 
} 

、あなたはコンテナにwhite-space: nowrap;を設定し、spanwhite-space: normal;にそれをリセットすることができます。繰り返しますが、これらの設定はFirefox用です。

div { 
 
    background: yellow; 
 
    width: 200px; 
 
    white-space: nowrap; 
 
} 
 
span { 
 
    background: aqua; 
 
    word-break: break-all; 
 
    word-wrap: break-word; 
 
    white-space: normal; 
 
}
<div> 
 
    Hello <span>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span> World 
 
</div>

jsFiddle

+0

これは、テキストがもう正常には流れないようにスパンの動作を変更します。この例では、 "Hello"の後と "World"の前に改行が入ります。 https://jsfiddle.net/7scx4hfq/1/ – kaymes

+0

こちらを更新しました。 "Hello"という単語がの内部にないので、divとspanの折り返しを設定すると同じ結果にならないことに注意してください。 – Stickers

+0

break-wordは、できるだけ多くの単語をまとめて保存しようとしているため、同じ効果があります。テキストが正当化されている場合、これは特に問題です。 https://jsfiddle.net/7scx4hfq/3/ – kaymes

関連する問題