CSSで英文字の折り返しが効かない!文字のはみ出しを解決!word-break: break-all;

CSSで英文字の折り返しが効かない!文字のはみ出しを解決!word-break: break-all;

メールアドレスなどを含む要素が何故か文字がはみ出してしまう現象になってしまったのでメモ。
まず問題はここです。
要素がある位置から明らかに文字がはみ出してしまう状況。
特に厄介なのは、日本語は折り返しが効いている事です。

CSSで英文字の折り返しが効かない例

HTML

<div class="image-left-box">
    <h2>Gmail</h2>
        <p>お問い合わせはこちらのメールアドレスまでお願いします。</p>
	  <mail>〇〇〇@gmail.com</mail>
</div>

CSS

.image-left-box{
    min-width:0;
}

この時、白い枠内を

CSS文字がはみ出してしまう

CSS

display:flex;
justify-content:row;

で指定していたため、min-width:0;を使いましたが、下のメールアドレスだけが適応されませんでした。

折り返しが効かないのは何が原因だったか

英文字は単語ごとに判断されるようで特にメールアドレスはメールアドレス全部で一単語扱いされるため、「min-width:0;」が効かず折り返されなかったようです。

日本語は単語ごとに分けるのが難しいからか、はみ出た分はすぐに折り返されるようですが、英語は単語としての区切りが明確で、単語として文字が続いている限りは折り返されず続いてしまうようです。

折り返しが効かない事に対する解決策

「word-break: break-all;」を入れることで解決出来ました。
これを用いることによって英語も関係なく折り返すことができるようです。

CSS折返しをword breakで行う

word-break: break-all;とは

word-breakには以下の種類があり、

  • word-break: normal;
    改行規則に基づく。
  • word-break: break-all;
    禁則処理を無視し、改行を行う。
  • word-break: keep-all;
    CJK(China、Japanese、Korean)の改行は許可しない
  • word-break: break-word;
    禁則処理は可能な限り保たれるが、IEとEdgeは非対応→非推奨

今回はbreak-allを用い改行を行いました。

まとめ

英文字やメールアドレスを枠内で折り返す際には、「word-break: break-all;」を入れることで解決できます。

CSS

.image-left-box{
	min-width:0;
	word-break:break-all;
}

参考(1)(2)

テーマ

現在使用中テーマは最新版

v.1.0v.2.0v.3.0v.3.1v.3.2v.3.3v.3.4v.3.5v.3.6v.3.7v.3.8v.shaneron選択しない(安定版)