CSS - white-space-collapse
概要
| 属性名 | white-space-collapse | 
|---|---|
| 値 | collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces | 
| 初期値 | collapse | 
| 適用可能要素 | テキスト要素 | 
| 継承 | 継承する | 
| サポート | https://caniuse.com/?search=white-space-collapse | 
説明
テキスト中のホワイトスペース (半角スペース(U+0020)、タブ文字(U+0009)、改行文字(U+000D や U+000A)) をどのように表示するかを指定します。まだ安定していない機能ですので今後仕様が変わる可能性があります。
- collapse
 - 1つ以上連続する半角スペース、タブ文字、改行文字を1つの半角スペースに変換した後、行頭と行末の半角スペースを削除します。
 - preserve
 - 半角スペース、タブ文字、改行文字をそのまま残します。
 - preserve-breaks
 - 改行文字はそのまま残します。1つ以上連続するホワイトスペースを1つの半角スペースに変換した後、すべての行の行頭と行末の半角スペースを削除します。
 - preserve-spaces
 - スペース文字(半角スペースとタブ文字)を残します。1つの改行を1つの半角スペースに変換します。行頭と行末の半角スペースは残します。
 - break-spaces
 - preserve とほぼ同等ですが、スペースで改行する点が異なります。preserve は半角スペースやタブ文字が横幅をあふれても改行しませんが、break-spaces は半角スペースやタブ文字が横幅を超えると改行を行います。現時点(2025年1月の Chrome 131 ではまだサポートされていません。Firefox 124 でサポートされています。
 - discard
 - 半角スペース、タブ文字、改行文字をすべて削除します。現時点(2025年1月)の Chrome 131 や Firefox 134 ではまだサポートされていません。
 
使用例
collapse, preserver, preserver-breaks, preserve-spaces の差異
CSS
.my-example {
  margin-bottom: 1rem;
}
.my-box {
  display: inline-block;
  border: 1px solid #999;
  font-family: Consolas;
}
HTML
※各行の先頭と末尾に4文字の半角スペースを入れています。
<div class="my-example">
<h3>collapse</h3>
<div class="my-box" style="white-space-collapse: collapse">
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
</div>
</div>
<div class="my-example">
<h3>preserve</h3>
<div class="my-box" style="white-space-collapse: preserve">
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
</div>
</div>
<div class="my-example">
<h3>preserve-breaks</h3>
<div class="my-box" style="white-space-collapse: preserve-breaks">
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
</div>
</div>
<div class="my-example">
<h3>preserve-spaces</h3>
<div class="my-box" style="white-space-collapse: preserve-spaces">
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
</div>
</div>
表示
collapse
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
※空白や改行はすべて1文字半角スペースに置換し、行頭・末尾の半角スペースを削除。
preserve
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
※空白や改行はすべてそのまま表示。
preserve-breaks
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
※改行は残すけど空白は1文字半角スペースに置換し、行頭・行末の半角スペースを削除。
preserve-spaces
    AAAA    BBBB    CCCC    
    DDDD    EEEE    FFFF    
※空白は残すけど改行は1文字の半角スペースに置換。
※Chrome 131 はまだ未サポート。
preserve と break-spaces の差異
行末には4文字の半角スペースを入れています。テキストを選択すると半角スペースの有無が分かります。preserve は半角スペースが横幅をあふれていても改行しませんが、break-spaces は半角スペースがあふれると改行します。
HTML
<div class="my-example">
<h3>preserve</h3>
<div class="my-box" style="width: 33ch; white-space-collapse: preserve">
    AAAA    BBBB    CCCCCCCCCCCC    
    DDDD    EEEE    FFFFFFFFFFFF    
</div>
</div>
<div class="my-example">
<h3>break-spaces</h3>
<div class="my-box" style="width: 33ch; white-space-collapse: break-spaces">
    AAAA    BBBB    CCCCCCCCCCCC    
    DDDD    EEEE    FFFFFFFFFFFF    
</div>
</div>
表示
preserve
    AAAA    BBBB    CCCCCCCCCCCC    
    DDDD    EEEE    FFFFFFFFFFFF    
break-spaces
    AAAA    BBBB    CCCCCCCCCCCC    
    DDDD    EEEE    FFFFFFFFFFFF    
関連項目
リンク
- https://drafts.csswg.org/css-text-4/#white-space-collapsing
 - https://developer.mozilla.org/ja/docs/Web/CSS/white-space-collapse
 - https://caniuse.com/?search=white-space-collapse
 
Copyright (C) 2025 杜甫々
  初版:2025年1月19日、最終更新:2025年1月19日
  https://www.tohoho-web.com/css/prop/white-space-collapse.htm