word-breakプロパティとword-wrapプロパティの違い
前回の記事で改行の方法を指定する「word-wrapプロパティ」について述べました。
改行をコントロールするword-wrapプロパティは主要の最新ブラウザで有効 - CSSデザインノート
もうひとつ、改行の方法を指定するプロパティに「word-breakプロパティ」というのがあります。
word-breakプロパティとは?
word-breakプロパティとは何かと申しますと、簡単に言えば、文章の改行方法を指定するものです。例えば、表示範囲に合わせて改行するか、あるいは単語の切れ目で改行するかなどです。
値には、narmal、keep-all、break-allの3種類があり、意味は以下のとおりです。
- normal
- 日本語は表示範囲で単語の途中でも改行されるが、英語は単語の切れ目で改行される。
- keep-all
- 全ての言語で単語の途中で改行せず、単語の切れ目で改行される。
- break-all
- 全ての言語で単語の途中でも改行される。
ただ、各ブラウザで動作が若干異なります。例えば、keep-allは、IE6や7では、そのとおりの動作をするのですが、他のブラウザでは日本語は表示範囲に合わせて単語の途中でも改行されます。
word-breakプロパティの実装状況
各ブラウザで確認してみてください。
表にしてみました。
| ブラウザ/値 | narmal | keep-all | break-all |
|---|---|---|---|
| Firefox 3.6.3 | ○ | × | × |
| Safari 4.0.5 | ○ | ○ | ○ |
| Google Chome 4.1 | ○ | ○ | ○ |
| Opera 10.51 | ○ | × | × |
| IE6 | ○ | ○ | ○ |
| IE7 | ○ | ○ | ○ |
| IE8 | ○ | × | × |
基本的に、値がnarmalの場合はどのブラウザでも同じ動作をします。
しかし、値がkeep-allの場合、Safari、Chomeは、日本語は表示範囲に合わせて単語の途中でも改行され、英語は単語の切れ目で改行されます。一方、IE6と7は、日本語も英語も単語の切れ目で改行されます。
また、値がkeep-allの場合、Safari、Chomeは禁則処理が無効になるのに対し、IE6と7では禁則処理は有効のままです。禁則処理に関しては、以下の記事で説明しています。
改行をコントロールするword-wrapプロパティは主要の最新ブラウザで有効 - CSSデザインノート
また、IE6、7で使えたword-breakプロパティがIE8で使えなくなっているのは、改行の方法をword-wrapプロパティのみにしたということでしょうか?
word-breakプロパティとword-wrapプロパティの「break-all」の違い
word-breakプロパティにもword-wrapプロパティにも「break-all」という強制的に改行する値を指定できるのですが、この違いは何なのでしょうか。
IEやSafari、Google Chomeはどちらのプロパティの「break-all」も使えるのですが、その差を見てみると、日本語に違いはありませんが、英語のショートセンテンスにおいて、 word-breakプロパティは単語の途中でも強制的に改行してしまいますが、word-wrapプロパティは単語の後の半角スペースで改行してくれるようです。
word-wrapプロパティは最新のブラウザならほどんど使える事、また、英単語の途中で強制的に改行しないことを考えると、word-wrapプロパティを使うのが望ましいと言う事ですね。
それにしても、似たようなプロパティがあるというのもとても変ですね。

