概要

box-decoration-breakは、CSSでボックスの装飾が複数行に渡る場合、その装飾をどのように扱うかを制御するためのプロパティです。このプロパティを使用することで、ボーダーや背景が複数行の要素に対して連続して表示されるのか、各行ごとに分割されるのかを指定できます。特に、インライン要素が改行される場合にその装飾がどう見えるかをコントロールするために便利です。

box-decoration-breakの基本

構文

box-decoration-break: slice | clone;
  • slice
    デフォルトの設定で、ボックスの装飾(ボーダー、背景など)は連続して表示されます。行の区切りで装飾が分断されません。
  • clone
    各ボックスが個別の装飾を持つように扱われます。ボックスの開始と終了部分で装飾がリセットされるため、複数行に渡る装飾が分割されて表示されます。

使用例

基本的な使用例 - ボックス装飾の連続表示(slice)

デフォルトのslice設定では、ボックスの装飾が複数行に渡っても途切れることなく連続して表示されます。

p {
    padding: 10px;
    border: 3px solid #3498db;
    background: #ecf0f1;
    box-decoration-break: slice; /* デフォルトでボーダーや背景が連続表示される */
}

この例では、段落内のテキストが改行されても、ボーダーや背景は途切れることなく続いて表示されます。

ボックス装飾を分割表示する(clone)

cloneを設定すると、ボーダーや背景が各行ごとに分割され、それぞれの行で装飾が開始されます。

span {
    padding: 10px;
    border: 3px solid #e74c3c;
    background: #f9e79f;
    box-decoration-break: clone; /* ボーダーと背景が各行で分割されて表示 */
}

この設定により、<span>要素が改行されるたびにボーダーや背景が新たに始まり、装飾が行ごとにリセットされて表示されます。インライン要素での装飾に対して効果的です。

文字列のハイライトに応用する

box-decoration-breakは、インライン要素の装飾を強調する際に特に効果的です。以下の例では、装飾が行ごとに分割され、各行に同じスタイルが適用されています。

.highlight {
    padding: 5px;
    border: 2px dotted #8e44ad;
    background-color: #dcdde1;
    box-decoration-break: clone;
}

この設定により、インライン要素が複数行に渡る場合でも、それぞれの行で装飾が明確に分かれて表示され、視覚的な強調効果が増します。

注意点

  • 書字方向と装飾の関係
    box-decoration-breakは書字方向に関係なく機能しますが、インライン要素がどのように分割されるかによって、装飾の見え方が変わることを理解しておく必要があります。
  • 適用対象
    box-decoration-breakは、インライン要素や改行によって分割されるブロック要素で特に効果を発揮します。リストアイテムやフレックスボックスの子要素などには適用されないことがあるため、使う際にはブラウザの互換性を確認しましょう。
  • ブラウザのサポート
    モダンブラウザではほとんどサポートされていますが、古いブラウザや特定の環境ではサポートされていない場合があります。必要に応じて、フォールバックのスタイルや代替策を考慮することが重要です。

box-decoration-breakの対応ブラウザ

  • Chrome: サポート
  • Firefox: サポート
  • Safari: サポート
  • Edge: サポート
  • Opera: サポート box-decoration-breakは主要なモダンブラウザでサポートされており、インライン要素や複数行にまたがる装飾の制御において効果的です。

まとめ

box-decoration-breakは、複数行にまたがる要素のボーダーや背景の扱い方を制御するための有用なプロパティです。特に、インライン要素が改行される場合や、複数行に渡る装飾が視覚的に途切れずに見えるようにしたい場合に役立ちます。装飾の見え方を柔軟にコントロールすることで、デザインの一貫性と視覚的なインパクトを向上させることができます。ぜひ、プロジェクトで試してみてください。