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

View in English Always switch to English

column-rule-inset-cap-start プロパティ

利用可能性は限定的

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

もっと多くのブラウザーがこの機能に対応してほしいですか? 理由を教えてください。

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

column-rule-inset-cap-start は CSS のプロパティで、コンテナーの先頭にある列間罫の区間のキャップ端点と、他の罫線区間と交差しないキャップ端点の位置を調整できます。

試してみましょう

column-rule-inset-cap-start: -20px;
column-rule-inset-cap-start: 0;
column-rule-inset-cap-start: 1em;
column-rule-inset-cap-start: 100%;
column-rule-inset-cap-start: overlap-join;
<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 id="y">Y</i>
    <i id="z">Z</i>
    <i id="bang">!</i>
  </div>
</section>
#example-element {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  rule: solid thick magenta;
  column-rule-color: rebeccapurple;
  gap: 1em;
  rule-overlap: column-over-row;
  rule-visibility-items: between;
  border: 1px solid rebeccapurple;
  overflow: visible;
  margin: 1em;
}
#example-element i {
  padding: 8px;
  border: 1px dashed;
}
#y {
  grid-column: 4 / 5;
  grid-row: 4 / 5;
}
#z {
  grid-column: 5 / 6;
  grid-row: 4 / 5;
}
#bang {
  grid-column: 6 / 7;
  grid-row: 4 / 5;
}

構文

css
/* キーワード */
column-rule-inset-cap-start: overlap-join;

/* <length-percentage> 値 */
column-rule-inset-cap-start: 0;
column-rule-inset-cap-start: 1em;
column-rule-inset-cap-start: -5px;
column-rule-inset-cap-start: -25%;

/* グローバル値 */
column-rule-inset-cap-start: inherit;
column-rule-inset-cap-start: initial;
column-rule-inset-cap-start: revert;
column-rule-inset-cap-start: revert-layer;
column-rule-inset-cap-start: unset;

値

このプロパティは、以下のリスト内の値を単一で指定します。

overlap-join

0 に解決します。

<length-percentage>

位置を調整する大きさ(インセット)を指定します。パーセント値は、キャップ端点に対する割合であり、row-gap の幅、または 0 のどちらかになります。

解説

column-rule-inset-cap-start プロパティは、キャップ区間の端点の先頭側の端点を内側にずらします。デフォルト値は 0 で、これは overlap-join と同じです。正の値を指定すると区間のサイズが減少し、負の値を指定すると増加します。

列間罫は、以下のものの間に配置され、列の隙間の中に 1 つまたは複数の区間として引かれます。

  • CSS グリッドレイアウトにおける隣接する列。
  • フレックスボックスレイアウトにおけるフレックスアイテムまたはフレックス行(flex-direction の設定次第)。
  • 段組みレイアウトにおける段。

column-rule-inset-cap-start に長さの値を指定すると、内部とコンテナーの先頭側にあるキャップ区間が、その値に応じてずれます。負の値では外側にずれ、コンテナーの先頭を越えて伸びることがあります。

パーセント値は、内部の区間では、row-gap のサイズに対する割合です。先頭のキャップ区間の場合、パーセント値は 0 を基準とするため、コンテナーの先頭側にあるキャップ区間の端点が、パーセント値によってコンテナーの先頭を越えてずれることはありません。

column-rule-inset-cap-start プロパティは、いくつかの一括指定プロパティの構成プロパティです。

  • 先頭側と末尾側の両方のキャップ端点を内側にずらすには、column-rule-inset-cap-start プロパティと column-rule-inset-cap-end プロパティを、column-rule-inset-cap 一括指定プロパティを使って設定することができます。

  • すべての列間罫の区間の先頭側の端点を内側にずらすには、column-rule-inset-cap-start プロパティと column-rule-inset-junction-start プロパティを、column-rule-inset-start 一括指定プロパティを使用して設定できます。

すべての区間の端点は、このプロパティの -end、-junction、row- の同等のものを含め、rule-inset 一括指定を使用して設定できます。

先頭側のキャップ端点を理解する

「キャップ区間の端点」とは、接合区間以外の端点を指します。これには、コンテナーのコンテンツの端にある端点に加え、他の罫線の区間が存在しない隙間の接合部の端点も含まれます。

column-rule-inset-cap-start プロパティは、列間罫のキャップ区間の先頭側の端点を内側にずらし、区間を短縮または延長できます。つまり、コンテナーの先頭に接する列間罫の区間と、他の列間罫や行間罫の区間がない内部の隙間から始まる区間の先頭側の端点を調整します。

列のキャップ区間の端点は、接合区間の区切りのみを制御する column-rule-break プロパティの値の設定の影響を受けません。ただし、これらの端点は、空の領域に隣接する隙間に列間罫および行間罫の区間が描画されるかどうかを定義する rule-visibility-items プロパティの影響を受けます。

列間罫のキャップ区間の端点は、コンテナーの端と、他の列間罫または行間罫の区間がない内部の隙間にのみ現れます。したがって、区間が描画されるかどうか(あるいは、rule が可視値に設定されていた場合に描画されるかどうか)によって、どの列間罫の区間が先頭側のキャップ区間になるかが決まります。

以下のデモでは、実線スタイルの列間罫の区間がキャップ端点から始まっています。column-rule-inset-cap-start: 16px を設定すると、コンテナーの先頭にあるすべての列間罫のキャップ区間が 16px 内側にずれます。インセットの <length> 値を変更して、どの区間がキャップ端点から始まっているかを確認してください。

インセットを変更してみてください。0px に設定すると、列間罫の先頭がコンテナーの先頭に配置されます。これがデフォルトの設定です。-32px に設定すると、区間の先頭が 32px 外側にずれ、列間罫はコンテナーの端から 32px はみ出して描画されます。列間罫はボックスモデルに影響を与えないため、これらの列間罫はコンテナーやその他のコンテンツのレイアウトに影響を及ぼしません。

rule-visibility-items の値として between を選択してみてください。この値を設定すると、隣接する 2 つの領域にアイテムが存在する場合にのみ、隙間の区間に罫線が描画されます。二重線スタイルの 3 本の列間罫に注目しながら、インセットの値を変更してみてください。これらの罫線には、コンテナーの先頭側の端にあるキャップ端点に加え、もう 1 つのキャップ端点があります。それぞれの罫線には、行間罫の区間が存在しない内部の隙間から始まる列間罫の区間があるため、これらの列区間もキャップ区間の端点となり、column-rule-inset-cap-start プロパティの影響を受けます。

rule-visibility-items の値として around を選択すると、隣接する 2 つの領域のうちどちらかにでもアイテムが存在する場合、隙間の区間に罫線が描画されます。この場合、内部の隙間の末尾の区間の上端に、行間罫の区間があります。これらの区間の先頭は、キャップではなく接合区間の端点であり、column-rule-inset-cap-start プロパティの影響を受けません。内部の隙間の接合部から始まるこれらの列区間のインセットは、column-rule-inset-junction-start プロパティで制御できます。

パーセント値を理解する

パーセント値が基準とする長さは、端点の位置によって異なります。内部の端点におけるパーセント値は、キャップ端点が接する隙間の幅を基準とするため、罫線の隙間に隣接している場合は row-gap を基準とし、コンテナーの先頭側では 0 を基準とします。

この例は壊れているわけではありません。すべてのキャップ区間はコンテナーの端から始まっているため、デフォルトですべてのインセットが 0 になっています。

rule-visibility-items の値として around を選択した場合も、どの区間も内側にずれません。コンテナーの端から始まる列間罫の区間では、パーセント値によるインセットはすべて 0 になります。一方、内部の隙間から始まり、行間罫の区間と交差する列間罫の区間は、キャップ端点から始まるのではなく接合端点から始まります。そのため、そのインセットは column-rule-inset-junction-start プロパティで定義されます。

rule-visibility-items の値として between を選択してください。2 つのキャップ先頭区間を備えた列間罫は、線種が double に設定されます。前と同様に、それぞれの列間罫には、他の罫区間が存在しない内部の隙間から始まる区間があります。これらの場合、パーセント値によるオフセットは row-gap の幅(この場合は 20px)を基準としています。

100% を設定すると、キャップ区間の始まる位置が 20px 内側にずれます。-200% を設定すると、これらの区間は 40px だけ外側に配置され、線は 20px の隙間を通って描画され、20px がアイテムの上の行に突き出ることになります。負の値が 1 行目と行間隔の合計の高さよりも大きい場合、この罫線はコンテナーの先頭の端から突き出ることになります。

公式定義

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

形式文法

column-rule-inset-cap-start = 
<inset-value>

<inset-value> =
<length-percentage> |
overlap-join

<length-percentage> =
<length> |
<percentage>

例

基本的な使い方

この例では、column-rule-inset-cap-start を設定して、フレックスコンテナー内のキャップ区間の先頭側の端点を内側にずらす方法を示しています。

HTML

このマークアップには、それぞれ 7 つの子要素を含む 2 つの <div> 要素があります。2 つのコンテナーの唯一の違いは、2 つ目のコンテナーに column クラスが追加されている点です。

html
<h1>列間罫のキャップ端点のインセット</h1>
<article>
  <section>
    <h2>flex-direction: row</h2>
    <div class="flexbox">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </section>
  <section>
    <h2>flex-direction: column</h2>
    <div class="flexbox column">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </section>
</article>

CSS

display プロパティを使用して、.flexbox 要素をフレックスコンテナーに変換します。flex-wrap と flex-line-count を使用して、アイテムを 3 つのフレックス行に均等に配置します。rule で行の隙間と列の隙間に罫線を描画し、column-rule-color で列間罫の色をより濃い blue に設定します。最後に、column-rule-inset-cap-start を 16px に設定します。

css
.flexbox {
  display: flex;
  flex-wrap: balance;
  flex-line-count: 3;
  gap: 20px;
  rule: 5px solid lightblue;
  column-rule-color: blue;

  column-rule-inset-cap-start: 16px;
}

次に、.column コンテナーに flex-direction を設定し、その中のアイテムが行ではなく列ごとに配置されるようにします。

css
.column {
  flex-direction: column;
}

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

結果

インセットの大きさを変更してください。

仕様書

仕様書
CSS Gaps Module Level 1
# propdef-column-rule-inset-cap-start

ブラウザーの互換性

関連情報