column-rule-inset-cap-end プロパティ
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
もっと多くのブラウザーがこの機能に対応してほしいですか? 理由を教えてください。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
column-rule-inset-cap-end は CSS のプロパティで、コンテナーの末尾にある列間罫の区間のキャップ端点と、他の罫線区間と交差しないキャップ端点の位置を調整できます。
試してみましょう
column-rule-inset-cap-end: -20px;
column-rule-inset-cap-end: 0;
column-rule-inset-cap-end: 1em;
column-rule-inset-cap-end: 100%;
column-rule-inset-cap-end: 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;
}
構文
/* Keyword 値 */
column-rule-inset-cap-end: overlap-join;
/* <length-percentage> 値 */
column-rule-inset-cap-end: 0;
column-rule-inset-cap-end: 1em;
column-rule-inset-cap-end: -5px;
column-rule-inset-cap-end: -25%;
/* グローバル値 */
column-rule-inset-cap-end: inherit;
column-rule-inset-cap-end: initial;
column-rule-inset-cap-end: revert;
column-rule-inset-cap-end: revert-layer;
column-rule-inset-cap-end: unset;
値
このプロパティは、以下のリスト内の値を単一で指定します。
overlap-join-
0に解決します。 <length-percentage>-
内側にずらす量(インセット)を指定します。パーセント値は、交差する隙間の幅に対する割合です。この幅は、隙間の接合点にある区間の端点では
row-gapの幅となり、コンテナーの端にある端点では0となります。
解説
column-rule-inset-cap-end プロパティは、列間罫のキャップ区間の末尾側の端点を内側にずらし、区間を短縮または延長できます。デフォルト値は 0 で、これは overlap-join と同じです。正の値を指定すると区間のサイズが減少し、負の値を指定すると増加します。
列間罫は、以下のものの間に配置され、列の隙間の中に 1 つまたは複数の区間として引かれます。
- CSS グリッドレイアウトにおける隣接する列。
- フレックスボックスレイアウトにおけるフレックスアイテムまたはフレックス行(
flex-directionの設定次第)。 - 段組みレイアウトにおける段。
列間罫が複数の行にまたがるか、複数の区間に分割されるかは、column-rule-break プロパティによって定義され、列間罫の各区間同士の間隔は row-gap のサイズとなります。
長さの値を指定すると、内部とコンテナーの末尾側のキャップ区間がその値に応じてずれます。正の値では内側に、負の値では外側にずれます。負の値を指定すると、コンテナー末尾側のキャップ区間はコンテナーの末尾を越えて伸びます。
パーセント値は、内部の区間では、row-gap のサイズに対する割合です。末尾のキャップ区間の場合、パーセント値は 0 に対する割合になるので、コンテナーの末尾にあるキャップ区間の端点が、パーセント値によってコンテナーの外にはみ出すことはありません。
column-rule-inset-cap-end プロパティは、いくつかの一括指定プロパティの構成プロパティです。
-
先頭と末尾のキャップを内側にずらすには、
column-rule-inset-cap-endプロパティとcolumn-rule-inset-cap-startプロパティを、column-rule-inset-cap一括指定プロパティを使って設定することができます。 -
すべての列間罫の区間の末尾側の端点を内側にずらすには、
column-rule-inset-cap-endプロパティとcolumn-rule-inset-junction-endプロパティを、column-rule-inset-end一括指定プロパティを使って設定することができます。 -
すべての行および列のキャップと接合部の端点を内側にずらすには、
column-rule-inset-endプロパティとrow-rule-inset-endプロパティを、rule-inset-end一括指定プロパティを使用して設定できます。
すべての区間の端点は、このプロパティの -start、-junction、row- の同等のものを含め、rule-inset 一括指定を使用して設定できます。
末尾側のキャップを理解する
「キャップ区間の端点」とは、接合区間以外の端点を指します。これには、コンテナーのコンテンツの端にある端点に加え、ほかの列間罫または行間罫の区間が存在しない隙間の接合部の端点も含まれます。
column-rule-inset-cap-end プロパティは、列キャップ区間の下端の位置を調整し、区間を短縮または延長することができます。
列のキャップ区間の端点は、接合区間の区切りのみを制御する column-rule-break プロパティの設定の影響を受けません。ただし、これらの端点は、空の領域に隣接する隙間に列間罫および行間罫の区間が描画されるかどうかを定義する rule-visibility-items プロパティの影響を受けます。
列間罫のキャップ区間の端点は、コンテナーの末尾側と、他の列間罫または行間罫の区間がない内部の隙間にのみ現れます。したがって、区間が描画されるかどうか(あるいは、rule が可視値に設定されていた場合に描画されるかどうか)によって、どの列区間が末尾のキャップ区間になるかが決まります。
以下のデモでは、列間罫の区間の下端がキャップ端点になっています。column-rule-inset-cap-end: 16px を設定すると、各区間のキャップ端点が 16px 内側にずれます。インセットの <length> 値を変更して、どの区間がキャップ端点で終わっているかを確認してください。
インセットを変更してみてください。0px に設定すると、列間罫の末尾がコンテナーの末尾に配置されます。これがデフォルトの設定です。-32px に設定すると、区間の末尾が 32px だけ外側に調整され、列間罫はコンテナーの端から 32px 外側に描画されます。列間罫はボックスモデルに影響を与えないため、これらの列間罫はコンテナーやその他のコンテンツのレイアウトに影響を及ぼしません。
rule-visibility-items の値として around を選択してみてください。この値を設定すると、隣接する 2 つの領域のうちどちらかにでもアイテムが存在する場合、隙間の区間に罫線が描画されます。二重線スタイルの列間罫は、rule-visibility-items を around にすると表示されますが、キャップ端点では終わりません。最後の 2 本の列間罫は、行間罫の区間がある内部の隙間で終わるため、キャップ区間端点ではありません。したがって、column-rule-inset-cap-end プロパティはこれらの端点に影響しません。
rule-visibility-items の値として between を選択すると、隣接する両方の領域にアイテムが存在する場合にのみ、隙間の区間に罫線が描画されます。2 本目の行方向の溝にある最後の行間罫は、3 本目の列の隙間で終わります。3 本目の列間罫は、行間罫の区間が存在する内部の隙間で終わるため、この列の区間はキャップ区間の終点ではなく、column-rule-inset-cap-end プロパティの影響を受けません。しかし、最後の 2 つの列間罫は、他の罫線区間が存在しない内部の隙間で終わっているため、これらの列間罫の区間はキャップ区間の端点となり、したがって column-rule-inset-cap-end プロパティの影響を受けます。
パーセント値を理解する
パーセント値が基準とする長さは、端点の位置によって異なります。内部の端点におけるパーセント値は、キャップ端点での隙間の幅を基準とするため、罫線の隙間に隣接している場合は row-gap を基準とし、コンテナーの下端の場合は 0 を基準とします。
このデモでは、対象の端点を、暗色と明色で表示される inset の線種で示しています。キャップ区間の端点がコンテナーの端にある場合、パーセント値の基準は 0 なので、計算結果は常に 0 になります(そのため、between の場合のみ効果があります)。
rule-visibility-items の値として around を選択してみてください。最初の 3 つの列はコンテナーの端で終了するため、パーセント値を指定しても 0 として処理されます。最後の 2 本の列間罫は、行間罫の区間が存在する内部の隙間で終了するため、これらの列区間はキャップ区間の端点にはなりません。
rule-visibility-items の値として between を選択してください。最初の 2 本の列間罫は、コンテナーの端で終了するため、インセットは 0 になります。3 本目の列間罫は、行間罫の区間が存在する内部の隙間で終了するため、この列間罫の区間はキャップ区間の終点にはなりません。最後の 2 本の列間罫は、他の罫線区間が存在しない内部の隙間で終了するため、パーセント値によるオフセットは row-gap のサイズ(この場合は 20px)を基準としています。
100% を設定すると、最後の 2 本の列間罫の区間の端が 20px 内側に配置されます。-200% を設定すると、これらの区間は 40px 外側に配置され、線は 20px の隙間を通って描画され、20px がアイテムの最後の行にはみ出します。負のパーセント値で、その計算結果が最後の行と行間隔の合計高さよりも大きくなる場合、最後の 2 つの列間罫がコンテナーの下端からはみ出します。
公式定義
DB に値が見つかりません!形式文法
column-rule-inset-cap-end =
<inset-value>
<inset-value> =
<length-percentage> |
overlap-join
<length-percentage> =
<length> |
<percentage>
例
>基本的な使い方
この例では、column-rule-inset-cap-end を設定して、フレックスコンテナー内のキャップ区間の末尾側の端点を内側にずらす方法を示しています。
HTML
このマークアップには、それぞれ 7 つの子要素を含む 2 つの <div> 要素があります。2 つのコンテナーの唯一の違いは、2 つ目のコンテナーに column クラスが追加されている点です。
<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-end を 16px に設定します。
.flexbox {
display: flex;
flex-wrap: balance;
flex-line-count: 3;
gap: 20px;
rule: 5px solid lightblue;
column-rule-color: blue;
column-rule-inset-cap-end: 16px;
}
また、flex-direction を .column コンテナーに設定して、フレックスコンテナーの主軸を変更し、アイテムを行ではなく列ごとに配置するようにしています。
.column {
flex-direction: column;
}
簡潔にするため、残りの CSS は省略しています。
結果
インセットの大きさを変更してみてください。
仕様書
| 仕様書 |
|---|
| CSS Gaps Module Level 1> # propdef-column-rule-inset-cap-end> |
ブラウザーの互換性
関連情報
column-rule-inset一括指定rule-inset一括指定column-rule-breakrule-break一括指定rule-overlaprule-visibility-itemsrule一括指定- CSS 隙間モジュール