公開日: 2024 年 10 月 11 日
Chrome 130 では、値が clone の box-decoration-break CSS プロパティが使用可能になり、インラインとブロックのフラグメンテーションがサポートされます。この投稿では、その理由と使用方法について説明します。
インラインの断片化
インライン フラグメンテーションとは、インライン要素(テキスト文字列など)が複数行にわたって分割されることです。インライン要素にはボックスがありますが、要素に背景や枠線を追加しようとしない限り、通常は意識する必要はありません。次の例では、border-radius を含む背景が span に追加されます。文字列の先頭と末尾でのみ境界線が曲線になっています。
span {
background-color: #002856;
color: #fff;
border-radius: 0.5em;
border: 2px solid black;
}

box-decoration-break の初期値は slice で、ボックスにスライス効果が適用されます。新たにサポートされた box-decoration-break: clone では、各行の先頭と末尾が丸い枠線で囲まれます。
span {
background-color: #002856;
color: #fff;
border-radius: 0.5em;
border: 2px solid black;
box-decoration-break: clone;
}

ブロックの断片化
ブロックの断片化は、複数列レイアウトでコンテンツを列に分割した場合や、印刷時にコンテンツがページに分割された場合に発生します。
次の例では、コンテンツが列に分割され、各段落に枠線が設定されています。初期値 slice を使用すると、ボックスは列の上部と下部でスライスされます。
.columns {
column-count: 5;
}
.columns p {
border: 5px solid #34c9eb;
padding: 0.5em;
}

box-decoration-break: clone では、ボックスがフラグメント化されると、各フラグメントが枠線で囲まれます。
.columns {
column-count: 5;
}
.columns p {
border: 5px solid #34c9eb;
padding: 0.5em;
box-decoration-break: clone;
}

ページを印刷したときに枠線が分割される場合も同様です。ボックスが 2 ページに分割されている場合、ボックスの枠線は 1 ページ目で完成し、2 ページ目で新しいボックスが開きます。