このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

CSS rule-break プロパティ

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

Want more browser support for this feature? Tell us why.

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

rule-breakCSS一括指定プロパティで、行と列のギャップ(隙間)が交差する箇所で、列間罫や行間罫を区間に分割する動作を設定し、column-rule-break および row-rule-break を同じ値に設定します。

試してみましょう

rule-break: none;
rule-break: normal;
rule-break: intersection;
<section id="default-example">
  <div id="example-element">
    <i>A</i>
    <i>B</i>
    <i>C</i>
    <i>D</i>
    <i>E</i>
    <i>F</i>
    <i>G</i>
    <i>H</i>
    <i>I</i>
    <i>J</i>
    <i>K</i>
    <i>L</i>
    <i>M</i>
    <i>N</i>
    <i>O</i>
    <i>P</i>
    <i>Q</i>
    <i>R</i>
    <i>S</i>
    <i>T</i>
    <i>U</i>
    <i>V</i>
    <i>W</i>
    <i>X</i>
    <i>Y</i>
    <i>Z</i>
  </div>
</section>
#example-element {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  row-rule: solid thick orange;
  column-rule: solid thick purple;
  gap: 10px;
}
#example-element i {
  padding: 5px;
}

構成要素のプロパティ

このプロパティは、以下の CSS プロパティの一括指定です。

構文

css
/* キーワード */
rule-break: none;
rule-break: normal;
rule-break: intersection;

/* グローバル値 */
rule-break: inherit;
rule-break: initial;
rule-break: revert;
rule-break: revert-layer;
rule-break: unset;

このプロパティは、以下のリストにある単一のキーワードで指定します。

none

行と列の線が交差する箇所には切れ目がなく、それぞれのギャップ(隙間)の端から端まで、単一の装飾が施されます。

normal

フレックスコンテナーおよびグリッドコンテナーでは、none と同様に動作します。段組みでは、column-rule-breakintersection と同じ挙動を示し、row-rule-breaknone と同じ挙動を示します。これがデフォルト値です。

intersection

罫線はギャップと交差するたびに途切れます。罫線の区間は、コンテナーとギャップの端で始まったり終わったりします。

解説

rule-break プロパティは、線がギャップ(隙間)を横切る際に、線を区間に分割する動作を設定するために使用されています。

ギャップの装飾は、1 つまたは複数のギャップ装飾区間としてギャップの内部に描画され、これらの区間は任意の 2 つの隣接するアイテムの間に生成されます。コンテナーの種類によっては、デフォルトで、これらの区間がギャップの端で終了する場合もあれば、列および行の罫線によってコンテナーの高さおよび幅全体に拡張される場合もあります。

罫線に区切りがある場合、デフォルトで、区間は区切りの端から始まり、その端で終わります。区切りのサイズが 0 の場合、区切りは表示されないことがあります。rule-break プロパティは、区切りが発生するかどうかを決定します。それぞれの区間の末端にある区切りのサイズは、rule-inset プロパティで制御できます。区切りがなく、線が連続している場合、rule-inset プロパティはコンテナーの先頭と末尾の罫線にのみ影響します。区切りがある場合、rule-inset プロパティは罫線の各区間の先頭と末尾に影響します。

罫線がデフォルトで単一の連続した区間で構成されるか、あるいはギャップと交差する際に区切られる複数の区間で構成されるかは、コンテナーの種類によって異なります。

グリッドコンテナー

グリッドコンテナーでは、デフォルトで、罫線の区間は、目に見える「交差」箇所を通過し続けます。rule-break: intersection を設定すると、本来なら交差するはずの箇所で区間が強制的に区切られるようになります。

チェックボックスをオンにすると、rule-breakintersection に設定され、連続する線がすべての「交差」箇所で途切れるようになります。

フレックスコンテナー

フレックスボックスでは、flex-directionrow または row-reverse の場合、行の区間が連続し、列の区間は行のギャップの端で始まり、その端で終わります。flex-directioncolumn または column-reverse の場合、列の罫線が連続し、行の区間は列のギャップの端で始まり、その端で終わります。

flex-directionの設定に応じて、列間罫や行間罫がデフォルトで連続している点に注目してください。rule-breakintersectionに設定すると、それらの連続した罫線は交差するたびに途切れます。

段組みコンテナー

段組みコンテナーでは、デフォルトの normal 動作は、行間罫と列間罫で異なります。列間罫の区間は、行のギャップと交差した時点で始まったり終わったりし、column-rule-break: intersection として動作します。一方、行ルールは、列のギャップと交差しても途切れず、row-rule-break: none として動作します。

それぞれの値のラジオボタンをチェックして、その値の効果を確認してください。

公式定義

DB に値が見つかりません!

形式文法

rule-break = 
<'column-rule-break'>

<column-rule-break> =
none |
normal |
intersection

基本的な使い方

この例では、rule-break プロパティを使用して、グリッドコンテナー内のそれぞれの罫線の区間を分割し、罫線同士が交差しないようにしています。

HTML

50 個のアイテムからなるリストを作成します。簡潔にするため、HTML の大部分は省略しています。

html
<ul>
  <li>1</li>
  <li>2</li>
  ...
  <li>49</li>
  <li>50</li>
</ul>

CSS

順序なしリストを 8 列のコンテナーとして定義し、grid-template-columns プロパティで列と行を作成し、list-style-typenone に設定して箇条書き記号を除去します。gap20px に指定して、行間と列間に 20px の実線の行間罫と列間罫を引く余地を確保します。最後に、罫線の区間が交差するのではなく、区切られるように設定します。

css
ul {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  list-style-type: none;
  gap: 20px;

  row-rule: 20px solid palegoldenrod;
  column-rule: 20px solid olive;

  rule-break: intersection;
}

簡潔にするため、残りの CSS は省略しています。

結果

仕様書

仕様書
CSS Gaps Module Level 1
# propdef-rule-break

ブラウザーの互換性

関連情報