note から WordPress に出戻りました!😭

[ CSS ] pre でも改行を生かしたまま折り返す

だるかぶ

サンダルでスーパーカブ乗りの『だるかぶ』です!
ご訪問ありがとうございます。ゆっくりしていってね。(本ページは広告を含みます。)

pre 要素で囲んだ一行が長い場合、親要素の幅に収まりきらず、スクロールバーが出てしまいます。 なんとか親要素の幅内で収めたい。

で、適当な位置で改行するように、

pre {
    overflow: auto;
    white-space: normal;
}

なる CSS を追加したのですが、今度は、私が追加した任意の改行まで無くなってしまいました。

調べてみると、下のようなコードを追加すると、改行を生かしたまま折り返してくれます。

pre {
    white-space: -moz-pre-wrap; /* Mozilla */
    white-space: -pre-wrap;     /* Opera 4-6 */
    white-space: -o-pre-wrap;   /* Opera 7 */
    white-space: pre-wrap;      /* CSS3 */
    word-wrap: break-word;      /* IE 5.5+ */
}

プログラムコードなんかの時は、折り返さずにスクロールバーを出して、一行のまま表示するのが良いのかな?

追記 @ 2007/06/28

コメントを頂いたので、ちょっと突っ込んで調べてみました。

検証に使ったサンプルコード

https://codepen.io/darucub/pen/ogxbxeq

各ウェブブラウザでの表示結果

Windows XP + Internet Explorer 7.0

pre-wrap-win-ie7.gif

全ての行が折り返されている。

Windows XP + Internet Explorer 6.0

pre-wrap-win-ie6.gif

全ての行が折り返されている。

Windows XP + Internet Explorer 5.5

pre-wrap-win-ie55.gif

全ての行が折り返されている。

Windows XP + Firefox 2.0

pre-wrap-win-firefox2.gif

半角スペースを含んでいる行は折り返されている。

Mac OS 10.4.10 + Safari 2.0

pre-wrap-mac-safari2.gif

全ての行が折り返されている。

Mac OS 10.4.10 + Firefox 2.0

pre-wrap-mac-firefox2.gif

半角スペースを含んでいる行は折り返されている。

Mac OS 10.4.10 + Opera 9.2

pre-wrap-mac-opera9.gif

半角スペースを含んでいる行は折り返されている。さらに半角スラッシュで折り返し?

Mac OS 10.4.10 + Shiira 1.2

pre-wrap-mac-shiira1.gif

全ての行が折り返されている。

Mac OS 10.4.10 + Internet Explorer 5.2

pre-wrap-mac-ie5.gif

全ての行が折り返されない。

検証結果

Mac IE 5.2 以外は、半角スペースが入っている所で折り返してくれるみたい。

追加の情報

現場からは以上です。それでは、またッ!!!