位置ユーティリティ(Position)
要素の位置をすばやく設定するには、これらの短縮形ユーティリティを使用。
※"v5.0.0"での変更はv5.0.0-alpha版、v5.0.0-beta版での変更も含みます。
※"v5.3.0"での変更はv5.3.0-alpha版での変更も含みます。
※固定位置のクラスはヘルパーに移動
位置の値(Position values)
位置ユーティリティクラスで迅速に設定できるが、レスポンシブには未対応。
設定例
指定なし<div class="position-static">...</div>
相対位置<div class="position-relative">...</div>
絶対位置<div class="position-absolute">...</div>
固定位置<div class="position-fixed">...</div>
Sticky位置<div class="position-sticky">...</div>
【設定】
- 指定なし(デフォルトと同じ)(
position: static):.position-static - 相対位置(
position: relative):.position-relative - 絶対位置(
position: absolute):.position-absolute - 固定位置(
position: fixed):.position-fixed - Sticky位置(
position: sticky):.position-sticky
要素の端からの位置(Arrange elements)v5.0.0-alpha2新設、v5.0.0-beta1一部クラス名変更
端からの配置ユーティリティを使用して要素を簡単に配置する。クラスの形式は {property}-{position} となる。
property(プロパティ)は次のいずれか:
top- 垂直方向のtop(上)の位置start- 水平方向のleft(左)の位置(LTR内)bottom- 垂直方向のbottom(下)の位置end- 水平方向のright(右)の位置(LTR内)
position(位置)は次のいずれか:
0- 端から0の位置50- 端から50%の位置100- 端から100%の位置
(scss/_variables.scss 内の $position-values Sassマップ変数にエントリーを追加すれば、位置の値はさらに追加できる)
定義済クラスの種類
| 端の場所 | 上端 | 行頭端 v5.0.0-beta1クラス名変更 |
下端 | 行末端 v5.0.0-beta1クラス名変更 |
|---|---|---|---|---|
| 端から 0 の位置 | .top-0 |
.start-0 |
.bottom-0 |
.end-0 |
| 端から 50% の位置 | .top-50 |
.start-50 |
.bottom-50 |
.end-50 |
| 端から 100% の位置 | .top-100 |
.start-100 |
.bottom-100 |
.end-100 |
見本 見やすいよう色と枠を付けています
設定例
<div class="position-relative">
<div class="position-absolute top-0 start-0">1</div>
</div>
定義済クラスの組み合わせ
| 位置 | クラス |
|---|---|
| 行頭上(上記見本の1) | .position-absolute.top-0.start-0 |
| 行末上(上記見本の2) | .position-absolute.top-0.end-0 |
| 上下左右中央(上記見本の3) | .position-absolute.top-50.start-50 |
| 上下左右中央(上記見本の4) | .position-absolute.bottom-50.end-50 |
| 行頭下(上記見本の5) | .position-absolute.bottom-0.start-0 |
| 行末下(上記見本の6) | .position-absolute.bottom-0.end-0 |
【設定】
div.position-relative>div.position-absolute.{property}-{position}(.{property}-{position}は上記の「定義済クラスの種類」から選択)
【変更履歴】
- 【v5.0.0-beta1】
- RTL(右書き)の設定追加に伴いユーティリティのクラス名変更
- 行頭端:
.left-{position}⇒.start-{position} - 行末端:
.right-{position}⇒.end-{position}
- 行頭端:
- RTL(右書き)の設定追加に伴いユーティリティのクラス名変更
要素を中央に配置(Center elements)v5.0.0-alpha2新設、v5.0.0-beta1クラス追加
さらに、変換ユーティリティクラス .translate-middle(transform: translateX(-50%) translateY(-50%))を使用して要素を中央に配置できる。
このクラスは、translateX(-50%) と translateY(-50%) を要素に適用。これにより、端からの配置ユーティリティと組み合わせて、要素を絶対的中心に配置できる。
見本 見やすいよう色と枠を付けています
設定例
<div class="position-relative">
<div class="position-absolute top-0 start-0 translate-middle">1</div>
</div>
定義済クラスの組み合わせ
| 位置 | クラス |
|---|---|
| 行頭上(上記見本の1) | .position-absolute.top-0.start-0.translate-middle |
| 中央上(上記見本の2) | .position-absolute.top-0.start-50.translate-middle |
| 行末上(上記見本の3) | .position-absolute.top-0.start-100.translate-middle |
| 行頭中央(上記見本の4) | .position-absolute.top-50.start-0.translate-middle |
| 上下左右中央(上記見本の5) | .position-absolute.top-50.start-50.translate-middle |
| 行末中央(上記見本の6) | .position-absolute.top-50.start-100.translate-middle |
| 行頭下(上記見本の7) | .position-absolute.bottom-0.start-0.translate-middle |
| 中央下(上記見本の8) | .position-absolute.bottom-0.start-50.translate-middle |
| 行末下(上記見本の9) | .position-absolute.bottom-0.start-100.translate-middle |
.translate-middle-x(transform: translateX(-50%))か .translate-middle-y(transform: translateY(-50%))クラスの追加により、要素を水平方向または垂直方向にのみ配置できる。
見本 見やすいよう色と枠を付けています
設定例
<div class="position-relative">
<div class="position-absolute top-0 start-50 translate-middle-x">2</div>
</div>
定義済クラスの組み合わせ
| 位置 | クラス |
|---|---|
| 行頭上(上記見本の1) | .position-absolute.top-0.start-0 |
| 中央上(上記見本の2) | .position-absolute.top-0.start-50.translate-middle-x |
| 行末上(上記見本の3) | .position-absolute.top-0.end-0 |
| 行頭中央(上記見本の4) | .position-absolute.top-50.start-0.translate-middle-y |
| 上下左右中央(上記見本の5) | .position-absolute.top-50.start-50.translate-middle |
| 行末中央(上記見本の6) | .position-absolute.top-50.end-0.translate-middle-y |
| 行頭下(上記見本の7) | .position-absolute.bottom-0.start-0 |
| 中央下(上記見本の8) | .position-absolute.bottom-0.start-50.translate-middle-x |
| 行末下(上記見本の9) | .position-absolute.bottom-0.end-0 |
【設定】
.position-absolute.{property}-{position}に.translate-middle,.translate-middle-x,.translate-middle-y(組み合わせは上記の「定義済クラスの組み合わせ」を参照)を追加
【変更履歴】
- 【v5.0.0-beta1】
.translate-middle-x,.translate-middle-yが追加
実例(Examples)
これらのクラスの実例をいくつか表示:
1.ボタンを装飾
見本
メール<button type="button" class="btn btn-primary position-relative">
メール <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-secondary">+99 <span class="visually-hidden">未読メッセージ</span></span>
</button>
マーカー<button type="button" class="position-relative py-2 px-4 text-bg-secondary border border-secondary rounded-pill">
マーカー <svg width="1em" height="1em" viewBox="0 0 16 16" class="position-absolute top-100 start-50 translate-middle mt-1" fill="var(--bs-secondary)" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></svg>
</button>
アラート<button type="button" class="btn btn-primary position-relative">
アラート <span class="position-absolute top-0 start-100 translate-middle badge border border-light rounded-circle bg-danger p-2"><span class="visually-hidden">未読メッセージ</span></span>
</button>
これらのクラスを既存のコンポーネントとともに使用して、新しいコンポーネントが作成できる。$position-values 変数にエントリーを追加すれば機能拡張できる。
2.プログレスバーの両端と中央に円をつける v5.3.0設定変更
見本
Bootstrap5.3.0の設定例 緑背景が5.3.0での変更箇所
<div class="position-relative m-4">
<div class="progress" role="progressbar" aria-label="プログレスバー" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 1px;">
<div class="progress-bar" style="width: 50%;"></div>
</div>
<button type="button" class="position-absolute top-0 start-0 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">1</button>
<button type="button" class="position-absolute top-0 start-50 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">2</button>
<button type="button" class="position-absolute top-0 start-100 translate-middle btn btn-sm btn-secondary rounded-pill" style="width: 2rem; height:2rem;">3</button>
</div>
※Bootstrap5.2.xの設定例 赤背景が5.3.0での変更箇所
<div class="position-relative m-4">
<div class="progress" style="height: 1px;">
<div class="progress-bar" role="progressbar" aria-label="プログレスバー" style="width: 50%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<button type="button" class="position-absolute top-0 start-0 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">1</button>
<button type="button" class="position-absolute top-0 start-50 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">2</button>
<button type="button" class="position-absolute top-0 start-100 translate-middle btn btn-sm btn-secondary rounded-pill" style="width: 2rem; height:2rem;">3</button>
</div>
【変更履歴】
- 【v5.2.0】
- プログレスバーの設定を変更
- 【v5.3.0】
- マーカーの設定:
*-darkを*-secondaryに変更 - プログレスバーの設定を変更
- マーカーの設定:
CSS v5.0.0-beta3追加、v5.3.0Sassから名称変更
Sassマップ(Sass maps)v5.3.0マップから名称変更
デフォルトの位置ユーティリティ値は Sassマップで宣言され、ユーティリティの生成に使用。
scss/_variables.scss 内 position-map の設定$position-values: (
0: 0,
50: 50%,
100: 100%
);
SassユーティリティAPI(Sass utilities API)v5.3.0ユーティリティAPIより名称変更
位置ユーティリティは、scss/_utilities.scss のユーティリティAPIで宣言されている。ユーティリティAPIの使用方法はこちらに掲載。
デフォルトの設定
scss/_utilities.scss 内 utils-position の設定"position": (
property: position,
values: static relative absolute fixed sticky
),
"top": (
property: top,
values: $position-values
),
"bottom": (
property: bottom,
values: $position-values
),
"start": (
property: left,
class: start,
values: $position-values
),
"end": (
property: right,
class: end,
values: $position-values
),
"translate-middle": (
property: transform,
class: translate-middle,
values: (
null: translate(-50%, -50%),
x: translateX(-50%),
y: translateY(-50%),
)
),