Position

Use these shorthand utilities for quickly configuring the position of an element.

Position values

Quick positioning classes are available, though they are not responsive.

<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>

Arrange elements

Arrange elements easily with the edge positioning utilities. The format is {property}-{position}.

Where property is one of:

  • top - for the vertical top position
  • start - for the horizontal left position (in LTR)
  • bottom - for the vertical bottom position
  • end - for the horizontal right position (in LTR)

Where position is one of:

  • 0 - for 0 edge position
  • 50 - for 50% edge position
  • 100 - for 100% edge position
<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>

Center elements

In addition, you can also center the elements with the transform utility class .translate-middle.

This class applies the transformations translateX(-50%) and translateY(-50%) to the element which, in combination with the edge positioning utilities, allows you to absolute center an element.

<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>

By adding .translate-middle-x or .translate-middle-y classes, elements can be positioned only in horizontal or vertical direction.

<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>

Examples

Here are some real life examples of these classes:

Marker
<button type="button" class="wui-btn wui-btn--active position-relative">
Mails <span class="position-absolute top-0 start-100 translate-middle wui-badge wui-bg-color--gray-60" style="right: initial;">+99 <span class="visually-hidden">unread messages</span></span>
</button>
<div class="position-relative p-y-10 p-x-20 wui-bg-color--gray-20 wui-color--white border-1 border-dark">
  Marker <svg width="1em" height="1em" viewBox="0 0 16 16" class="position-absolute top-100 start-50 translate-middle mt-1" fill="var(--wui-color-gray-20)" 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>
</div>
<button type="button" class="wui-btn wui-btn--active position-relative">
  Alerts <span class="position-absolute top-0 start-100 translate-middle wui-badge border-1 border-light wui-bg-color--danger p-10" style="right: initial;"><span class="visually-hidden">unread messages</span></span>
</button>

You can use these classes with existing components to create new ones.

<div class="position-relative m-4">
  <div style="display: flex; height: 1px; overflow: hidden; font-size: 0.75rem; background-color: var(--wui-color-gray-87);" role="progressbar" aria-label="Progress" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
    <div style="width: 50%; display: flex; flex-direction: column; justify-content: center; overflow: hidden; color: var(--wui-color-gray-87); text-align: center; white-space: nowrap; background-color: var(--wui-color-active);"></div>
  </div>
  <button type="button" class="position-absolute top-0 start-0 translate-middle wui-btn wui-btn--sm wui-btn--active rounded-circle" style="width: 3rem; height:3rem;">1</button>
  <button type="button" class="position-absolute top-0 start-50 translate-middle wui-btn wui-btn--sm wui-btn--active rounded-circle" style="width: 3rem; height:3rem;">2</button>
  <button type="button" class="position-absolute top-0 start-100 translate-middle wui-btn wui-btn--sm wui-btn--default rounded-circle" style="width: 3rem; height:3rem;">3</button>
</div>

Some features in this style guide may not work as expected because they are not supported by the browser version you are using.

For the best experience, we recommend upgrading to a newer browser such as Microsoft Edge, Mozilla Firefox, or Google Chrome.