レイアウト

inset-block

inset-block は、位置を決めた要素(position が static 以外)を、行が進む向き(ブロック方向)の始まりと終わりからどれだけ離すかをまとめて指定します。横書きでは top と bottom にあたります。

構文

<'top'>{1,2}

プレビュー

1234
プリセット
見本
項目
右下の角をドラッグするとサイズを変えられます

コード

.box {
  display: flex;
  position: relative;
}

.box > :nth-child(2) {
  position: absolute;
  inset-inline-end: 16px;
  inset-block: 16px 48px;
}

コントロール

inset-block
両側を同じ値にする
inset-block-start16px
inset-block-end48px
1234

解説

値の書き方

  • 値を 1 つ書くと両側に、2 つ書くと始まり(inset-block-start)と終わり(inset-block-end)の順に効きます。
  • 値は inset と同じで、長さ・%・auto と負の値です。% は基準の箱の、その向きの大きさ(横書きなら高さ)に対する割合です。初期値は auto です。
  • 片方だけ決めるとその端からの距離で置き、両方決めると、高さが auto ならその間いっぱいに広がります。このページの初期状態では、項目が箱の上から 16px、下から 48px の間に伸びます。

このページのプレビューは、補助の宣言で箱を position: relativeにして、2 番目の項目に position: absolute と inset-block を書いています。項目は、補助の宣言の inset-inline-end: 16px で右端に寄せています。横書きなので、始まりが上、終わりが下です。

向きで変わること

  • writing-mode: vertical-rl の縦書きでは行が右から左へ進むので、始まりが右、終わりが左になります。vertical-lr では始まりが左です。
  • どの辺になるかは、基準の箱ではなく、その要素自身の writing-mode で決まります。direction では変わりません。

よく使う場面

inset-block: 0 で、横に置いたサイドバーや区切り線を基準の箱の上下いっぱいに伸ばします。

気をつけること

  • position が static の要素には効きません。
  • 横書きでは top・bottom と同じ辺を指します。同じ要素に両方書くと、後に書いたほうが効きます。
  • 主要なブラウザすべてで使えます。

コメント