anchor-size()
Baseline
2026
*
Newly available
Since January 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
anchor-size() は CSS の関数で、アンカー位置指定要素のサイズ、位置、マージンを、アンカー要素のサイズに対して相対的に設定することができます。これは、ターゲットとなるアンカー要素の指定された辺の <length> を返します。anchor-size() は、アンカー位置指定要素のサイズ指定、インセット、マージンプロパティの値内で使用される場合にのみ有効です。
アンカー機能の詳細と使用方法については、CSS アンカー位置指定モジュールおよびCSS アンカー位置指定の使用方法ガイドを参照してください。
構文
/* 引数なし */
anchor-size()
/* アンカーサイズ引数 */
anchor-size(width);
anchor-size(block);
anchor-size(self-inline);
/* anchor-name および anchor-side */
width: anchor-size(--my-anchor width);
block-size: anchor-size(--my-anchor block);
/* 指定されたアンカーの側に対する相対サイズ設定(代替値つき) */
width: anchor-size(--my-anchor width, 50%);
block-size: anchor-size(--my-anchor block, 200px);
/* アンカー側に対する位置指定 */
left: anchor-size(width);
inset-inline-end: anchor-size(--my-anchor height, 100px);
/* アンカー端から見たマージンの設定 */
margin-left: calc(anchor-size(width) / 4);
margin-block-start: anchor-size(--my-anchor self-block, 20px);
引数
anchor-size() 関数の構文は次の通りです。
anchor-size(<anchor-name> <anchor-size>, <length-percentage>)
引数は次の通りです。
<anchor-name>省略可-
要素のサイズ、位置、またはマージンを相対的に設定したいアンカー要素の
anchor-nameプロパティ値。これは<dashed-ident>値です。省略された場合、要素のデフォルトアンカーが使用されます。メモ:
<anchor-name>をanchor-size()関数内で指定しても、要素をアンカーに関連付けたり固定したりするわけではありません。これは単に、要素のプロパティ値をどのアンカーを基準に設定すべきかを定義するだけです。 <anchor-size>省略可-
指定された要素のプロパティ値が相対的に設定されるアンカー要素の側面を指定します。有効な値は以下の通りです。
width-
アンカー要素の幅です。
height-
アンカー要素の高さです。
block-
アンカー要素の包含ブロックのブロック方向における長さ。
inline-
アンカー要素のインライン方向における包含ブロックの長さ。
self-block-
アンカー要素のブロック方向の長さ。
self-inline-
アンカー要素のインライン方向の長さ。
メモ: この引数が省略された場合、軸の寸法はデフォルトで、関数が含まれるプロパティの軸に対応する
<anchor-size>キーワードに設定されます。例えば、width: anchor-size();はwidth: anchor-size(width);と同等です。 <length-percentage>省略可-
要素が絶対指定または固定位置指定でない場合、またはアンカー要素が存在しない場合に代替値として使用するサイズを指定します。代替値が使用されるべき状況でこの引数が省略された場合、宣言は無効となります。
メモ:
位置指定要素のプロパティ値を設定する基準となるアンカー寸法は、設定するサイズ値と同じ軸上に存在する必要はありません。例えば、width: anchor-size(height) は有効です。
返値
<length> 値を返します。
解説
anchor-size() 関数は、位置指定された要素のサイズ、位置、マージン値をアンカー要素の寸法で表現することを可能にします。この関数は、位置指定された要素のプロパティ値が相対的に設定される特定のアンカー要素の寸法を表す <length> 値を返します。アンカー位置指定された要素に設定されるサイズ、インセット、マージンプロパティの有効な値となります。
返される長さは、アンカー要素またはその包含ブロックの垂直方向または水平方向のサイズです。使用される寸法は<anchor-size>引数によって定義されます。この引数が省略された場合、使用される寸法は、サイズ、位置、またはマージンプロパティが設定されている軸に一致します。
width: anchor-size()はwidth: anchor-size(width)と同等です。top: anchor-size()はtop: anchor-size(height)と同等です。margin-inline-end: anchor-size()はmargin-inline-end: anchor-size(self-inline)と同等です。また、margin-inline-end: anchor-size()は横書き時にはmargin-inline-end: anchor-size(width)と同等であり、縦書き時にはmargin-inline-end: anchor-size(height)と同等です。
寸法の長さの基準となるアンカー要素は、<anchor-name> 引数で指定された anchor-name を持つ要素です。複数の要素が同じアンカー名を持つ場合、DOM 順序でそのアンカー名を持つ最後の要素が使用されます。
関数呼び出しに <anchor-name> 引数が含まれていない場合、要素のデフォルトアンカーが使用されます。これは、そのmust be providedプロパティで参照されるか、anchor HTML属性によって要素に関連付けられたものです。
<anchor-name> 引数が含まれており、そのアンカー名に一致する要素が存在しない場合、代替値が使用されます。代替値が含まれていない場合、宣言は無視されます。例えば、配置された要素に width: anchor-size(--foo width, 50px); height: anchor-size(--foo width); が指定されているが、DOM 内に --foo という名前のアンカーが存在しない場合、width は 50px となり、height 宣言は効果がありません。
要素に anchor-size() 値が設定されたサイズ、位置、マージンプロパティがある場合でも、その要素がアンカー配置要素でない場合(position プロパティが absolute または fixed に設定されていない、あるいは position-anchor プロパティを介して関連付けられたアンカーを持たない場合)、利用可能な代替値が使用されます。代替値が存在しない場合、宣言は無視されます。
例えば、位置指定された要素に width: anchor-size(width, 50px); が指定されているが、アンカーが関連付けられていない場合、代替値が使用されるため、width の計算値は 50px となります。
アンカー機能の詳細と使用方法については、CSS アンカー位置指定モジュールおよび CSS アンカー位置指定の使用方法ガイドを参照してください。
anchor-size() 関数値を受け入れるプロパティ
anchor-size() 関数を値として受け入れるプロパティには、以下のものがあります。
- サイズ指定プロパティ:
- インセットプロパティ:
- マージンプロパティ:
calc() 内での anchor-size() の使用
anchor-size() 関数の中で最もよく使われる用途は、デフォルトのアンカーのサイズを参照することです。他にも、anchor-size() 関数を calc() 関数内で使用することで、位置指定要素に適用されるサイズを変更できます。
例えば、次のルールは位置指定要素の幅を、デフォルトのアンカー要素の幅と同じサイズにします。
.positionedElem {
width: anchor-size(width);
}
次のルールは、位置指定要素のインラインサイズをアンカー要素のインラインサイズの 4 倍に設定します。乗算は calc() 関数内で実行されます。
.positionedElem {
inline-size: calc(anchor-size(self-inline) * 4);
}
形式文法
<anchor-size()> =
anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )
<anchor-name> =
<dashed-ident>
<anchor-size> =
width |
height |
block |
inline |
self-block |
self-inline
<length-percentage> =
<length> |
<percentage>
例
>基本的な anchor-size() の使い方
この例では、2 つの要素をアンカーを基準に位置指定し、anchor-size() 関数を使用してサイズを設定しています。
HTML
3 つの <div> 要素、1 つの anchor 要素、およびアンカー要素に対して相対配置する 2 つの infobox 要素を指定します。また、<body> の高さをスクロールが必要になる程度にするため、埋め込みテキストをしていますが、これは簡潔さを考慮して非表示にしています。
<div class="anchor">⚓︎</div>
<div class="infobox" id="infobox1">
<p>This is the first infobox.</p>
</div>
<div class="infobox" id="infobox2">
<p>This is the second infobox.</p>
</div>
CSS
anchor の <div> をアンカー要素として宣言するには、anchor-name を付与します。position プロパティを fixed に設定した位置指定要素は、position-anchor プロパティを介してアンカー要素に関連付けられます。また、アンカーには絶対的な height と width を設定し、ブラウザー開発者ツールなどで位置指定要素のサイズを確認する際の基準点とします。
.anchor {
anchor-name: --my-anchor;
width: 100px;
height: 50px;
}
.infobox {
position-anchor: --my-anchor;
position: fixed;
}
位置指定要素に対して、いくつかの明確なプロパティ値を設定します。
- 位置指定要素はアンカーに固定され、異なる
position-area値によってアンカー要素の周囲の異なる場所に配置されます。 - 最初の情報ボックスの
heightはアンカー要素と同じ高さに設定されていますので、anchor-size(height)はアンカー要素の高さを返します。要素のwidthは、anchor-size()関数をcalc()関数内で使用し、アンカー要素の幅の 2 倍に設定されます。anchor-size(width)でアンカー要素の幅を取得し、それを 2 倍します。 - 2 つ目の情報ボックスの
heightは、アンカー要素の高さの80%に設定されており、同様の手法が用いられています。 - マージン値は、アンカー要素から指定された距離を確保するために記載されています。
#infobox1 {
position-area: right;
height: anchor-size(height);
width: calc(anchor-size(width) * 2);
margin-left: 5px;
}
#infobox2 {
position-area: top span-right;
height: calc(anchor-size(height) / 1.25);
margin-bottom: 5px;
}
結果
ブラウザーのツールを使用して、位置指定された要素を検査してください。最初の情報ボックスは高さ 50px、幅 200pxで、2 つ目の情報ボックスは高さ 40px、幅はデフォルトで max-content となります。
位置指定とマージンの例
anchor-size() の位置とマージンの例を参照してください。
仕様書
| Specification |
|---|
| CSS Anchor Positioning Module Level 1> # anchor-size-fn> |