位置(Position)

使用这些速记实用程序可以快速配置元素的位置。

定位值

可以快速的使用位置类别定位,尽管它们并不是响应式的。

<div class="position-static">...</div>
        <div class="position-relative">...</div>
        <div class="position-absolute">...</div>
        <div class="position-fixed">...</div>
        <div class="position-sticky">...</div>
        

排列元素

可以使用边界定位通用类别轻松的排列元素。格式为{property}-{position}。

其中,property为以下的其中一种:

  • top - 用于垂直定位top
  • start - 用于水平定位left(LTR)
  • bottom - 用于垂直定位bottom
  • end - 用于水平定位right(LTR)

其中,position为以下的其中一种:

  • 0 - 用于0的边界定位
  • 50 - 用于50%的边界定位
  • 100 - 用于100%的边界定位

(你可以透过在$position-values Sass map变数添加实体,以增加更多定位值。)

<div class="position-relative">
        <div class="position-absolute top-0 start-0"></div>
        <div class="position-absolute top-0 end-0"></div>
        <div class="position-absolute top-50 start-50"></div>
        <div class="position-absolute bottom-50 end-50"></div>
        <div class="position-absolute bottom-0 start-0"></div>
        <div class="position-absolute bottom-0 end-0"></div>
        </div>

元素置中

此外,你也可以透过转换通用类别.translate-middle将元素置中。

此类别将transform之translateX(-50%)与translateY(-50%)应用于元素,并结合使用边界定位通用类别,让你可以把元素完全置中。

<div class="position-relative">
        <div class="position-absolute top-0 start-0 translate-middle"></div>
        <div class="position-absolute top-0 start-50 translate-middle"></div>
        <div class="position-absolute top-0 start-100 translate-middle"></div>
        <div class="position-absolute top-50 start-0 translate-middle"></div>
        <div class="position-absolute top-50 start-50 translate-middle"></div>
        <div class="position-absolute top-50 start-100 translate-middle"></div>
        <div class="position-absolute top-100 start-0 translate-middle"></div>
        <div class="position-absolute top-100 start-50 translate-middle"></div>
        <div class="position-absolute top-100 start-100 translate-middle"></div>
        </div>

透过添加.translate-middle-x或.translate-middle-y类别,元素将只能在水平或垂直方向上定位。

<div class="position-relative">
        <div class="position-absolute top-0 start-0"></div>
        <div class="position-absolute top-0 start-50 translate-middle-x"></div>
        <div class="position-absolute top-0 end-0"></div>
        <div class="position-absolute top-50 start-0 translate-middle-y"></div>
        <div class="position-absolute top-50 start-50 translate-middle"></div>
        <div class="position-absolute top-50 end-0 translate-middle-y"></div>
        <div class="position-absolute bottom-0 start-0"></div>
        <div class="position-absolute bottom-0 start-50 translate-middle-x"></div>
        <div class="position-absolute bottom-0 end-0"></div>
        </div>

示例

以下是这些类别的实际案例:

<button type="button" class="btn btn-primary position-relative">
        Mails <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-secondary">+99 <span class="visually-hidden">unread messages</span></span>
        </button>
        
        <button type="button" class="btn btn-dark position-relative">
        Marker <svg width="1em" height="1em" viewBox="0 0 16 16" class="position-absolute top-100 start-50 translate-middle mt-1 bi bi-caret-down-fill" fill="#212529" xmlns="http://www.w3.org/2000/svg"><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">
        Alerts <span class="position-absolute top-0 start-100 translate-middle badge border border-light rounded-circle bg-danger p-2"><span class="visually-hidden">unread messages</span></span>
        </button>

可以将这些类别与现有的元件结合使用,创造新的元件。请记得你可以透过在$position-values变数添加实体以扩展它的功能。

<div class="position-relative m-4">
        <div class="progress" style="height: 1px;">
        <div class="progress-bar" role="progressbar" 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>

Sass

Maps

Default position utility values are declared in a Sass map, then used to generate our utilities.

$position-values: (
        0: 0,
        50: 50%,
        100: 100%
        );
        

Utilities API

Position utilities are declared in our utilities API in scss/_utilities.scss.

    "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%),
        )
        ),
        
返回顶部