Layout & position

Display, positioning, and the smaller layout primitives — everything that isn't flexbox or grid (that's its own page) or spacing (also its own page).

Display

.joy-flex, .joy-flex-col, .joy-hidden, and .joy-block are already in Utilities. These fill in the rest:

ClassCSS
.joy-inlinedisplay: inline
.joy-inline-blockdisplay: inline-block
.joy-inline-flexdisplay: inline-flex
.joy-inline-griddisplay: inline-grid
.joy-contentsdisplay: contents
.joy-flow-rootdisplay: flow-root

There's no bare .joy-grid utility for plain display: grid — that class name is already the card-grid component from Cards & layout. For a grid container, use .joy-grid-cols-* on Flexbox & grid, which sets display: grid itself.

Box sizing

ClassCSS
.joy-box-borderbox-sizing: border-box
.joy-box-contentbox-sizing: content-box

Position

.joy-relative is already in Utilities.

ClassCSS
.joy-staticposition: static
.joy-absoluteposition: absolute
.joy-fixedposition: fixed
.joy-stickyposition: sticky

Offsets

Numbered steps map to the same --joy-space-* scale as margin and padding:

ClassCSS
.joy-inset-0top/right/bottom/left: 0
.joy-inset-autotop/right/bottom/left: auto
.joy-top-0/1/2/4, .joy-top-autotop
.joy-right-0/1/2/4, .joy-right-autoright
.joy-bottom-0/1/2/4, .joy-bottom-autobottom
.joy-left-0/1/2/4, .joy-left-autoleft
top-2 right-2
<div class="joy-relative" style="height:80px;background:rgba(127,127,127,.08);border-radius:12px;">
    <span class="joy-absolute joy-top-2 joy-right-2 joy-badge-success"><i class="ph ph-check"></i> top-2 right-2</span>
</div>

Z-index

ClassValue
.joy-z-00
.joy-z-1010
.joy-z-2020
.joy-z-3030
.joy-z-4040
.joy-z-5050
.joy-z-autoauto

Overflow & overscroll

ClassCSS
.joy-overflow-auto/hidden/visible/scrolloverflow
.joy-overflow-x-auto/hiddenoverflow-x
.joy-overflow-y-auto/hiddenoverflow-y
.joy-overscroll-auto/contain/noneoverscroll-behavior — contain stops a scrolled panel (like a modal) from also scrolling the page behind it

Float & clear

ClassCSS
.joy-float-left/right/nonefloat
.joy-clear-left/right/both/noneclear

Isolation

.joy-isolate starts a new stacking context — handy for keeping a component's internal z-index values from leaking into the rest of the page without reaching for large numbers:

ClassCSS
.joy-isolateisolation: isolate
.joy-isolation-autoisolation: auto

Object fit & position

For an <img> or <video> inside a fixed-size box:

<img src="/photo.jpg" class="joy-object-cover" style="width:200px;height:120px;">
ClassCSS
.joy-object-contain/cover/fill/none/scale-downobject-fit
.joy-object-center/top/bottom/left/rightobject-position

Aspect ratio

16 / 9
<div class="joy-aspect-video" style="background:rgba(127,127,127,.15);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--joy-text-muted);">16 / 9</div>
ClassRatio
.joy-aspect-autoauto
.joy-aspect-square1 / 1
.joy-aspect-video16 / 9
.joy-aspect-portrait3 / 4
.joy-aspect-wide21 / 9

Columns & breaks

CSS multi-column layout, for text-heavy content like a long FAQ or a print stylesheet:

ClassCSS
.joy-columns-1.joy-columns-6columns
.joy-break-after-auto/avoid/all/page/columnbreak-after
.joy-break-before-auto/avoid/all/page/columnbreak-before
.joy-break-inside-auto/avoid/avoid-page/avoid-columnbreak-inside — put on individual items so they don't get split across columns