<length>ずらす距離
pxやremなどの長さで指定します。%は使わず、負の長さも指定できます。
要素のborderとoutlineの間に、透明な間隔をつくるプロパティ。負の値から正の値まで動かし、外枠の位置だけが変わる様子を確かめます。
outline-offsetとは?負の値・0・正の値をライブプレビューで変えながら、borderとoutlineの間隔、フォーカス表示、レイアウトへの影響を初学者向けに解説します。
.element outline-offset: 0px;
値のパターン
<length>pxやremなどの長さで指定します。%は使わず、負の長さも指定できます。
border edge0ではoutlineがborderの辺へ密着し、正の値では外側へ離れます。
outlineoutline自体の太さ・線種・色はoutlineプロパティで別に用意します。
初期値は0です。正の値で外側へ離し、負の値でborder boxの内側方向へ寄せます。
-8px外枠を内側方向へ寄せる負の値0borderの辺へ密着させる初期値2pxフォーカスリングを少し離す基本4pxborderとの違いを見やすくする強調12px外枠を大きく外側へ離す広い間隔0.25rem文字サイズを基準に間隔を決める相対長outlineをborderから少し離し、キーボード操作中の位置を見分けやすくします。
.button:focus-visible { outline: 3px solid #7258e8; outline-offset: 3px; }カードの寸法を変えずに外枠を離し、borderとは別の選択状態を見せます。
.card[aria-selected="true"] { outline: 3px solid #0f735f; outline-offset: 4px; }外側の空間が少ないときは負の値を使えますが、内容やborderを隠さないか確認します。
.compact:focus-visible { outline: 3px dashed #d9472b; outline-offset: -6px; }ポイント
outline-offsetだけでは外枠は現れないため、outline-styleがnoneではないoutlineを別に指定します。初期値は0で、すべての要素に適用でき、子要素へは継承されません。値は長さで、正の値はborderの辺から外側へ離し、負の値はoutlineをborder boxの内側方向へ縮めます。間の領域は透明で、outlineと同じく要素の幅や高さ、周囲の配置は変えません。そのため、大きな正の値では近くの内容へ重なることがあります。outline一括指定にはoutline-offsetが含まれないため、独立した宣言として書きます。フォーカス表示に使う場合は、背景とのコントラストと見切れも確認します。
outline-offset と一緒に使われるプロパティや、詳しい外部リファレンスをまとめました。