Utilities
Single-purpose classes with Bootstrap 5's names, where the number is the value: p-16, gap-8, fs-14, rounded-8, w-50. Written once from a vocabulary file and committed - nothing is generated where they are used.
Scales
- Space, in px: 0 2 4 8 12 16 20 24 32 40 48 64 - for
m,pandgapwith their sides:mtmbmsmemxmy, the same forp.msandmeare the start and the end of the line, so they turn right to left. - Font size: 11 12 14 16 18 20 24 32 40 48 - 11 for the smallest caption, 40 and 48 for one hero number; line height: 16 20 24 28; radius: 0 4 6 8 12 16 and
rounded-full. - Width prefixes come on placement and spacing - display, flex, grid, gaps, order, text alignment, margins and paddings:
md:d-none,lg:p-24. d-nonebeats every other display class and component on its element, and a width prefix beats it:d-none md:d-flexshows frommd. Page styles outside the layers beat it too: usehiddenthere.
Aspect ratio
ratio-1x1, ratio-4x3, ratio-16x9 and ratio-21x9 keep an element's shape as its width changes - on a video, a map, an image's frame; ratio-auto lets it go. ratio-1.91x1 is the shape of a link's preview image on social networks, 1200 × 630. The class goes on the element itself: an image inside a frame fills it with w-100 h-100 object-fit-cover.
<div class="ratio-16x9 w-50 hstack justify-content-center rounded-8 bg-page text-muted">16 × 9</div>
<div class="ratio-1x1 w-25 hstack justify-content-center rounded-8 bg-page text-muted">1 × 1</div>
<div class="ratio-1.91x1 w-50 hstack justify-content-center rounded-8 bg-page text-muted">1.91 × 1</div>Sizes in pixels
Where a control or a mark needs a fixed size - a narrow field in a toolbar, a column of codes, a thumbnail - the number is the pixels, as with the spaces:
w-56w-64w-80w-96w-120w-160beside the sharesw-25tow-100;h-32h-40h-72besideh-25toh-100.min-w-56min-w-120min-w-160min-w-200min-w-240min-w-288;max-w-80tomax-w-1200, with 360 and 560 among them.size-32size-48size-64size-80set both sides at once: a square.
<span class="size-32 rounded-8 bg-page"></span>
<span class="size-48 rounded-8 bg-page"></span>
<span class="size-64 rounded-8 bg-page"></span>
<span class="size-80 rounded-8 bg-page"></span>
<input class="form-control w-120" type="text" aria-label="Code" value="SPRING-26">Text: kept lines, captions, clamps
text-pre-wrap keeps the lines and the spaces a person typed - a note, an address - and still wraps a long line. tracking-wide spaces the letters of a caption in capitals. line-clamp-2 and line-clamp-3 cut a text after two or three lines with an ellipsis; the whole text stays in the page for a screen reader and for search.
Villa 12, Harbor Road Main Island 00000
Last 30 days
North Bay by speedboat: a day among the forty-two islands of the marine park, with snorkelling at Reef Islet, the emerald lake of Emerald Islet and lunch on the beach, back by five.
<p class="text-pre-wrap">Villa 12, Harbor Road Main Island 00000</p>
<p class="fs-11 text-uppercase tracking-wide text-muted">Last 30 days</p>
<p class="line-clamp-2 max-w-360">North Bay by speedboat: a day among the forty-two islands of the marine park, with snorkelling at Reef Islet, the emerald lake of Emerald Islet and lunch on the beach, back by five.</p>Shown when focused
visually-hidden-focusable hides an element until it or something in it takes the focus - the first link of a page that jumps to its content. Press Tab into the example to see it.
<a class="visually-hidden-focusable btn" href="#utilities-all">Skip to every utility</a>
<span class="text-muted">The link above shows on focus.</span>A flash and a sticky panel
flash lights an element's ground once and lets it fade - a row a click elsewhere changed. To light it again, take the class off, let the browser lay the element out, and put the class back. sticky-top keeps an element at the top while the page scrolls: under the app header in the shell, at --redz-sticky-top anywhere else.
<button class="btn" type="button" data-docs-run="flash" aria-controls="utilities-flash-target">Change the row</button>
<span class="p-8 rounded-8" id="utilities-flash-target">A row a click elsewhere changed</span>row.classList.remove('flash');
void row.offsetWidth;
row.classList.add('flash');
Off the screen
offscreen puts an element outside the page, where no one sees it, yet it stays rendered: not display: none, visibility: hidden or the clip of visually-hidden, which bots look for. Two uses:
- A form's trap for bots: a field a person never fills. Its wrapper carries
aria-hidden="true"so no screen reader meets it; the field hastabindex="-1",autocomplete="off"and a plausible name, such ascompany_url. The server refuses a form that comes back with it filled. Name the class and the field plainly: bots skip what is called a honeypot. - A field that takes what a keyboard-wedge reader types - a badge or a fob read at a kiosk - kept focused while nothing else is.
<div class="offscreen" aria-hidden="true"><label>Company site<input type="text" name="company_url" tabindex="-1" autocomplete="off"></label></div>
<span class="text-muted">A field is here, off the screen.</span>Dividers, rules and icon links
divide-x and divide-y on a parent draw a line between its children, across or down, with no class on any child. vr is a rule between the items of a row. icon-link lines an icon up with the words of a link.
<div class="hstack divide-x"><span class="px-12">Bookings</span><span class="px-12">Guests</span><span class="px-12">Revenue</span></div>
<div class="hstack gap-12"><button class="btn btn-sm" type="button">Copy</button><span class="vr"></span><button class="btn btn-sm" type="button">Delete</button></div>
<a class="icon-link" href="#utilities-divide"><i class="bi bi-box-arrow-up-right" aria-hidden="true"></i>Open on the site</a>Every utility
| Class | Declarations | Width prefixes |
|---|---|---|
d-inline | display: inline; | yes |
d-inline-block | display: inline-block; | yes |
d-block | display: block; | yes |
d-grid | display: grid; | yes |
d-inline-grid | display: inline-grid; | yes |
d-flex | display: flex; | yes |
d-inline-flex | display: inline-flex; | yes |
d-table | display: table; | yes |
d-table-row | display: table-row; | yes |
d-table-cell | display: table-cell; | yes |
d-contents | display: contents; | yes |
vstack | display: flex; flex: 1 1 auto; flex-direction: column; align-self: stretch; | yes |
hstack | display: flex; flex-direction: row; align-items: center; align-self: stretch; | yes |
flex-row | flex-direction: row; | yes |
flex-column | flex-direction: column; | yes |
flex-row-reverse | flex-direction: row-reverse; | yes |
flex-column-reverse | flex-direction: column-reverse; | yes |
flex-wrap | flex-wrap: wrap; | yes |
flex-nowrap | flex-wrap: nowrap; | yes |
flex-wrap-reverse | flex-wrap: wrap-reverse; | yes |
flex-fill | flex: 1 1 auto; | yes |
flex-grow-0 | flex-grow: 0; | yes |
flex-grow-1 | flex-grow: 1; | yes |
flex-shrink-0 | flex-shrink: 0; | yes |
flex-shrink-1 | flex-shrink: 1; | yes |
justify-content-start | justify-content: flex-start; | yes |
justify-content-end | justify-content: flex-end; | yes |
justify-content-center | justify-content: center; | yes |
justify-content-between | justify-content: space-between; | yes |
justify-content-around | justify-content: space-around; | yes |
justify-content-evenly | justify-content: space-evenly; | yes |
align-items-start | align-items: flex-start; | yes |
align-items-end | align-items: flex-end; | yes |
align-items-center | align-items: center; | yes |
align-items-baseline | align-items: baseline; | yes |
align-items-stretch | align-items: stretch; | yes |
justify-items-start | justify-items: start; | yes |
justify-items-end | justify-items: end; | yes |
justify-items-center | justify-items: center; | yes |
justify-items-stretch | justify-items: stretch; | yes |
place-items-start | place-items: start; | yes |
place-items-end | place-items: end; | yes |
place-items-center | place-items: center; | yes |
place-items-stretch | place-items: stretch; | yes |
align-self-auto | align-self: auto; | yes |
align-self-start | align-self: flex-start; | yes |
align-self-end | align-self: flex-end; | yes |
align-self-center | align-self: center; | yes |
align-self-baseline | align-self: baseline; | yes |
align-self-stretch | align-self: stretch; | yes |
align-content-start | align-content: flex-start; | yes |
align-content-end | align-content: flex-end; | yes |
align-content-center | align-content: center; | yes |
align-content-between | align-content: space-between; | yes |
align-content-around | align-content: space-around; | yes |
align-content-stretch | align-content: stretch; | yes |
order-first | order: -1; | yes |
order-0 | order: 0; | yes |
order-1 | order: 1; | yes |
order-2 | order: 2; | yes |
order-3 | order: 3; | yes |
order-4 | order: 4; | yes |
order-5 | order: 5; | yes |
order-last | order: 6; | yes |
grid | display: grid; grid-auto-columns: minmax(0, 1fr); | yes |
cols-1 | grid-template-columns: repeat(1, minmax(0, 1fr)); | yes |
cols-2 | grid-template-columns: repeat(2, minmax(0, 1fr)); | yes |
cols-3 | grid-template-columns: repeat(3, minmax(0, 1fr)); | yes |
cols-4 | grid-template-columns: repeat(4, minmax(0, 1fr)); | yes |
cols-5 | grid-template-columns: repeat(5, minmax(0, 1fr)); | yes |
cols-6 | grid-template-columns: repeat(6, minmax(0, 1fr)); | yes |
cols-7 | grid-template-columns: repeat(7, minmax(0, 1fr)); | yes |
cols-8 | grid-template-columns: repeat(8, minmax(0, 1fr)); | yes |
cols-9 | grid-template-columns: repeat(9, minmax(0, 1fr)); | yes |
cols-10 | grid-template-columns: repeat(10, minmax(0, 1fr)); | yes |
cols-11 | grid-template-columns: repeat(11, minmax(0, 1fr)); | yes |
cols-12 | grid-template-columns: repeat(12, minmax(0, 1fr)); | yes |
cols-min-160 | grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); | yes |
cols-min-200 | grid-template-columns: repeat(auto-fit, minmax(min(100%, 12.5rem), 1fr)); | yes |
cols-min-240 | grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); | yes |
cols-min-280 | grid-template-columns: repeat(auto-fit, minmax(min(100%, 17.5rem), 1fr)); | yes |
cols-min-320 | grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); | yes |
span-full | grid-column: 1 / -1; | yes |
span-1 | grid-column: span 1 / span 1; | yes |
span-2 | grid-column: span 2 / span 2; | yes |
span-3 | grid-column: span 3 / span 3; | yes |
span-4 | grid-column: span 4 / span 4; | yes |
span-5 | grid-column: span 5 / span 5; | yes |
span-6 | grid-column: span 6 / span 6; | yes |
span-7 | grid-column: span 7 / span 7; | yes |
span-8 | grid-column: span 8 / span 8; | yes |
span-9 | grid-column: span 9 / span 9; | yes |
span-10 | grid-column: span 10 / span 10; | yes |
span-11 | grid-column: span 11 / span 11; | yes |
span-12 | grid-column: span 12 / span 12; | yes |
gap-0 | gap: var(--redz-space-0); | yes |
gap-2 | gap: var(--redz-space-2); | yes |
gap-4 | gap: var(--redz-space-4); | yes |
gap-8 | gap: var(--redz-space-8); | yes |
gap-12 | gap: var(--redz-space-12); | yes |
gap-16 | gap: var(--redz-space-16); | yes |
gap-20 | gap: var(--redz-space-20); | yes |
gap-24 | gap: var(--redz-space-24); | yes |
gap-32 | gap: var(--redz-space-32); | yes |
gap-40 | gap: var(--redz-space-40); | yes |
gap-48 | gap: var(--redz-space-48); | yes |
gap-64 | gap: var(--redz-space-64); | yes |
row-gap-0 | row-gap: var(--redz-space-0); | yes |
row-gap-2 | row-gap: var(--redz-space-2); | yes |
row-gap-4 | row-gap: var(--redz-space-4); | yes |
row-gap-8 | row-gap: var(--redz-space-8); | yes |
row-gap-12 | row-gap: var(--redz-space-12); | yes |
row-gap-16 | row-gap: var(--redz-space-16); | yes |
row-gap-20 | row-gap: var(--redz-space-20); | yes |
row-gap-24 | row-gap: var(--redz-space-24); | yes |
row-gap-32 | row-gap: var(--redz-space-32); | yes |
row-gap-40 | row-gap: var(--redz-space-40); | yes |
row-gap-48 | row-gap: var(--redz-space-48); | yes |
row-gap-64 | row-gap: var(--redz-space-64); | yes |
column-gap-0 | column-gap: var(--redz-space-0); | yes |
column-gap-2 | column-gap: var(--redz-space-2); | yes |
column-gap-4 | column-gap: var(--redz-space-4); | yes |
column-gap-8 | column-gap: var(--redz-space-8); | yes |
column-gap-12 | column-gap: var(--redz-space-12); | yes |
column-gap-16 | column-gap: var(--redz-space-16); | yes |
column-gap-20 | column-gap: var(--redz-space-20); | yes |
column-gap-24 | column-gap: var(--redz-space-24); | yes |
column-gap-32 | column-gap: var(--redz-space-32); | yes |
column-gap-40 | column-gap: var(--redz-space-40); | yes |
column-gap-48 | column-gap: var(--redz-space-48); | yes |
column-gap-64 | column-gap: var(--redz-space-64); | yes |
m-auto | margin: auto; | yes |
m-0 | margin: var(--redz-space-0); | yes |
m-2 | margin: var(--redz-space-2); | yes |
m-4 | margin: var(--redz-space-4); | yes |
m-8 | margin: var(--redz-space-8); | yes |
m-12 | margin: var(--redz-space-12); | yes |
m-16 | margin: var(--redz-space-16); | yes |
m-20 | margin: var(--redz-space-20); | yes |
m-24 | margin: var(--redz-space-24); | yes |
m-32 | margin: var(--redz-space-32); | yes |
m-40 | margin: var(--redz-space-40); | yes |
m-48 | margin: var(--redz-space-48); | yes |
m-64 | margin: var(--redz-space-64); | yes |
mt-auto | margin-block-start: auto; | yes |
mt-0 | margin-block-start: var(--redz-space-0); | yes |
mt-2 | margin-block-start: var(--redz-space-2); | yes |
mt-4 | margin-block-start: var(--redz-space-4); | yes |
mt-8 | margin-block-start: var(--redz-space-8); | yes |
mt-12 | margin-block-start: var(--redz-space-12); | yes |
mt-16 | margin-block-start: var(--redz-space-16); | yes |
mt-20 | margin-block-start: var(--redz-space-20); | yes |
mt-24 | margin-block-start: var(--redz-space-24); | yes |
mt-32 | margin-block-start: var(--redz-space-32); | yes |
mt-40 | margin-block-start: var(--redz-space-40); | yes |
mt-48 | margin-block-start: var(--redz-space-48); | yes |
mt-64 | margin-block-start: var(--redz-space-64); | yes |
mb-auto | margin-block-end: auto; | yes |
mb-0 | margin-block-end: var(--redz-space-0); | yes |
mb-2 | margin-block-end: var(--redz-space-2); | yes |
mb-4 | margin-block-end: var(--redz-space-4); | yes |
mb-8 | margin-block-end: var(--redz-space-8); | yes |
mb-12 | margin-block-end: var(--redz-space-12); | yes |
mb-16 | margin-block-end: var(--redz-space-16); | yes |
mb-20 | margin-block-end: var(--redz-space-20); | yes |
mb-24 | margin-block-end: var(--redz-space-24); | yes |
mb-32 | margin-block-end: var(--redz-space-32); | yes |
mb-40 | margin-block-end: var(--redz-space-40); | yes |
mb-48 | margin-block-end: var(--redz-space-48); | yes |
mb-64 | margin-block-end: var(--redz-space-64); | yes |
ms-auto | margin-inline-start: auto; | yes |
ms-0 | margin-inline-start: var(--redz-space-0); | yes |
ms-2 | margin-inline-start: var(--redz-space-2); | yes |
ms-4 | margin-inline-start: var(--redz-space-4); | yes |
ms-8 | margin-inline-start: var(--redz-space-8); | yes |
ms-12 | margin-inline-start: var(--redz-space-12); | yes |
ms-16 | margin-inline-start: var(--redz-space-16); | yes |
ms-20 | margin-inline-start: var(--redz-space-20); | yes |
ms-24 | margin-inline-start: var(--redz-space-24); | yes |
ms-32 | margin-inline-start: var(--redz-space-32); | yes |
ms-40 | margin-inline-start: var(--redz-space-40); | yes |
ms-48 | margin-inline-start: var(--redz-space-48); | yes |
ms-64 | margin-inline-start: var(--redz-space-64); | yes |
me-auto | margin-inline-end: auto; | yes |
me-0 | margin-inline-end: var(--redz-space-0); | yes |
me-2 | margin-inline-end: var(--redz-space-2); | yes |
me-4 | margin-inline-end: var(--redz-space-4); | yes |
me-8 | margin-inline-end: var(--redz-space-8); | yes |
me-12 | margin-inline-end: var(--redz-space-12); | yes |
me-16 | margin-inline-end: var(--redz-space-16); | yes |
me-20 | margin-inline-end: var(--redz-space-20); | yes |
me-24 | margin-inline-end: var(--redz-space-24); | yes |
me-32 | margin-inline-end: var(--redz-space-32); | yes |
me-40 | margin-inline-end: var(--redz-space-40); | yes |
me-48 | margin-inline-end: var(--redz-space-48); | yes |
me-64 | margin-inline-end: var(--redz-space-64); | yes |
mx-auto | margin-inline: auto; | yes |
mx-0 | margin-inline: var(--redz-space-0); | yes |
mx-2 | margin-inline: var(--redz-space-2); | yes |
mx-4 | margin-inline: var(--redz-space-4); | yes |
mx-8 | margin-inline: var(--redz-space-8); | yes |
mx-12 | margin-inline: var(--redz-space-12); | yes |
mx-16 | margin-inline: var(--redz-space-16); | yes |
mx-20 | margin-inline: var(--redz-space-20); | yes |
mx-24 | margin-inline: var(--redz-space-24); | yes |
mx-32 | margin-inline: var(--redz-space-32); | yes |
mx-40 | margin-inline: var(--redz-space-40); | yes |
mx-48 | margin-inline: var(--redz-space-48); | yes |
mx-64 | margin-inline: var(--redz-space-64); | yes |
my-auto | margin-block: auto; | yes |
my-0 | margin-block: var(--redz-space-0); | yes |
my-2 | margin-block: var(--redz-space-2); | yes |
my-4 | margin-block: var(--redz-space-4); | yes |
my-8 | margin-block: var(--redz-space-8); | yes |
my-12 | margin-block: var(--redz-space-12); | yes |
my-16 | margin-block: var(--redz-space-16); | yes |
my-20 | margin-block: var(--redz-space-20); | yes |
my-24 | margin-block: var(--redz-space-24); | yes |
my-32 | margin-block: var(--redz-space-32); | yes |
my-40 | margin-block: var(--redz-space-40); | yes |
my-48 | margin-block: var(--redz-space-48); | yes |
my-64 | margin-block: var(--redz-space-64); | yes |
p-0 | padding: var(--redz-space-0); | yes |
p-2 | padding: var(--redz-space-2); | yes |
p-4 | padding: var(--redz-space-4); | yes |
p-8 | padding: var(--redz-space-8); | yes |
p-12 | padding: var(--redz-space-12); | yes |
p-16 | padding: var(--redz-space-16); | yes |
p-20 | padding: var(--redz-space-20); | yes |
p-24 | padding: var(--redz-space-24); | yes |
p-32 | padding: var(--redz-space-32); | yes |
p-40 | padding: var(--redz-space-40); | yes |
p-48 | padding: var(--redz-space-48); | yes |
p-64 | padding: var(--redz-space-64); | yes |
pt-0 | padding-block-start: var(--redz-space-0); | yes |
pt-2 | padding-block-start: var(--redz-space-2); | yes |
pt-4 | padding-block-start: var(--redz-space-4); | yes |
pt-8 | padding-block-start: var(--redz-space-8); | yes |
pt-12 | padding-block-start: var(--redz-space-12); | yes |
pt-16 | padding-block-start: var(--redz-space-16); | yes |
pt-20 | padding-block-start: var(--redz-space-20); | yes |
pt-24 | padding-block-start: var(--redz-space-24); | yes |
pt-32 | padding-block-start: var(--redz-space-32); | yes |
pt-40 | padding-block-start: var(--redz-space-40); | yes |
pt-48 | padding-block-start: var(--redz-space-48); | yes |
pt-64 | padding-block-start: var(--redz-space-64); | yes |
pb-0 | padding-block-end: var(--redz-space-0); | yes |
pb-2 | padding-block-end: var(--redz-space-2); | yes |
pb-4 | padding-block-end: var(--redz-space-4); | yes |
pb-8 | padding-block-end: var(--redz-space-8); | yes |
pb-12 | padding-block-end: var(--redz-space-12); | yes |
pb-16 | padding-block-end: var(--redz-space-16); | yes |
pb-20 | padding-block-end: var(--redz-space-20); | yes |
pb-24 | padding-block-end: var(--redz-space-24); | yes |
pb-32 | padding-block-end: var(--redz-space-32); | yes |
pb-40 | padding-block-end: var(--redz-space-40); | yes |
pb-48 | padding-block-end: var(--redz-space-48); | yes |
pb-64 | padding-block-end: var(--redz-space-64); | yes |
ps-0 | padding-inline-start: var(--redz-space-0); | yes |
ps-2 | padding-inline-start: var(--redz-space-2); | yes |
ps-4 | padding-inline-start: var(--redz-space-4); | yes |
ps-8 | padding-inline-start: var(--redz-space-8); | yes |
ps-12 | padding-inline-start: var(--redz-space-12); | yes |
ps-16 | padding-inline-start: var(--redz-space-16); | yes |
ps-20 | padding-inline-start: var(--redz-space-20); | yes |
ps-24 | padding-inline-start: var(--redz-space-24); | yes |
ps-32 | padding-inline-start: var(--redz-space-32); | yes |
ps-40 | padding-inline-start: var(--redz-space-40); | yes |
ps-48 | padding-inline-start: var(--redz-space-48); | yes |
ps-64 | padding-inline-start: var(--redz-space-64); | yes |
pe-0 | padding-inline-end: var(--redz-space-0); | yes |
pe-2 | padding-inline-end: var(--redz-space-2); | yes |
pe-4 | padding-inline-end: var(--redz-space-4); | yes |
pe-8 | padding-inline-end: var(--redz-space-8); | yes |
pe-12 | padding-inline-end: var(--redz-space-12); | yes |
pe-16 | padding-inline-end: var(--redz-space-16); | yes |
pe-20 | padding-inline-end: var(--redz-space-20); | yes |
pe-24 | padding-inline-end: var(--redz-space-24); | yes |
pe-32 | padding-inline-end: var(--redz-space-32); | yes |
pe-40 | padding-inline-end: var(--redz-space-40); | yes |
pe-48 | padding-inline-end: var(--redz-space-48); | yes |
pe-64 | padding-inline-end: var(--redz-space-64); | yes |
px-0 | padding-inline: var(--redz-space-0); | yes |
px-2 | padding-inline: var(--redz-space-2); | yes |
px-4 | padding-inline: var(--redz-space-4); | yes |
px-8 | padding-inline: var(--redz-space-8); | yes |
px-12 | padding-inline: var(--redz-space-12); | yes |
px-16 | padding-inline: var(--redz-space-16); | yes |
px-20 | padding-inline: var(--redz-space-20); | yes |
px-24 | padding-inline: var(--redz-space-24); | yes |
px-32 | padding-inline: var(--redz-space-32); | yes |
px-40 | padding-inline: var(--redz-space-40); | yes |
px-48 | padding-inline: var(--redz-space-48); | yes |
px-64 | padding-inline: var(--redz-space-64); | yes |
py-0 | padding-block: var(--redz-space-0); | yes |
py-2 | padding-block: var(--redz-space-2); | yes |
py-4 | padding-block: var(--redz-space-4); | yes |
py-8 | padding-block: var(--redz-space-8); | yes |
py-12 | padding-block: var(--redz-space-12); | yes |
py-16 | padding-block: var(--redz-space-16); | yes |
py-20 | padding-block: var(--redz-space-20); | yes |
py-24 | padding-block: var(--redz-space-24); | yes |
py-32 | padding-block: var(--redz-space-32); | yes |
py-40 | padding-block: var(--redz-space-40); | yes |
py-48 | padding-block: var(--redz-space-48); | yes |
py-64 | padding-block: var(--redz-space-64); | yes |
text-start | text-align: start; | yes |
text-end | text-align: end; | yes |
text-center | text-align: center; | yes |
fs-11 | font-size: var(--redz-fs-11); | - |
fs-12 | font-size: var(--redz-fs-12); | - |
fs-14 | font-size: var(--redz-fs-14); | - |
fs-16 | font-size: var(--redz-fs-16); | - |
fs-18 | font-size: var(--redz-fs-18); | - |
fs-20 | font-size: var(--redz-fs-20); | - |
fs-24 | font-size: var(--redz-fs-24); | - |
fs-32 | font-size: var(--redz-fs-32); | - |
fs-40 | font-size: var(--redz-fs-40); | - |
fs-48 | font-size: var(--redz-fs-48); | - |
fw-400 | font-weight: 400; | - |
fw-500 | font-weight: 500; | - |
fw-600 | font-weight: 600; | - |
fw-700 | font-weight: 700; | - |
lh-16 | line-height: var(--redz-lh-16); | - |
lh-20 | line-height: var(--redz-lh-20); | - |
lh-24 | line-height: var(--redz-lh-24); | - |
lh-28 | line-height: var(--redz-lh-28); | - |
fst-italic | font-style: italic; | - |
fst-normal | font-style: normal; | - |
font-monospace | font-family: var(--redz-font-mono); | - |
tabular-nums | font-variant-numeric: tabular-nums; | - |
text-decoration-none | text-decoration: none; | - |
text-decoration-underline | text-decoration: underline; | - |
text-decoration-line-through | text-decoration: line-through; | - |
text-lowercase | text-transform: lowercase; | - |
text-uppercase | text-transform: uppercase; | - |
text-capitalize | text-transform: capitalize; | - |
text-wrap | white-space: normal; | - |
text-nowrap | white-space: nowrap; | - |
text-pre-wrap | white-space: pre-wrap; | - |
tracking-wide | letter-spacing: 0.06em; | - |
line-clamp-2 | display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; | - |
line-clamp-3 | display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; | - |
text-break | overflow-wrap: anywhere; | - |
text-truncate | overflow: hidden; text-overflow: ellipsis; white-space: nowrap; | - |
text-body | color: var(--redz-text); | - |
text-muted | color: var(--redz-text-muted); | - |
text-faint | color: var(--redz-text-faint); | - |
text-reset | color: inherit; | - |
text-primary | color: var(--redz-primary); | - |
text-secondary | color: var(--redz-secondary); | - |
text-success | color: var(--redz-success); | - |
text-danger | color: var(--redz-danger); | - |
text-warning | color: var(--redz-warning); | - |
text-info | color: var(--redz-info); | - |
text-primary-contrast | color: var(--redz-primary-contrast); | - |
text-secondary-contrast | color: var(--redz-secondary-contrast); | - |
text-success-contrast | color: var(--redz-success-contrast); | - |
text-danger-contrast | color: var(--redz-danger-contrast); | - |
text-warning-contrast | color: var(--redz-warning-contrast); | - |
text-info-contrast | color: var(--redz-info-contrast); | - |
list-unstyled | padding-inline-start: 0; list-style: none; | - |
bg-body | background-color: var(--redz-bg); | - |
bg-page | background-color: var(--redz-bg-page); | - |
bg-raised | background-color: var(--redz-bg-raised); | - |
bg-transparent | background-color: transparent; | - |
bg-primary | background-color: var(--redz-primary); | - |
bg-secondary | background-color: var(--redz-secondary); | - |
bg-success | background-color: var(--redz-success); | - |
bg-danger | background-color: var(--redz-danger); | - |
bg-warning | background-color: var(--redz-warning); | - |
bg-info | background-color: var(--redz-info); | - |
bg-primary-subtle | background-color: var(--redz-primary-subtle); | - |
bg-secondary-subtle | background-color: var(--redz-secondary-subtle); | - |
bg-success-subtle | background-color: var(--redz-success-subtle); | - |
bg-danger-subtle | background-color: var(--redz-danger-subtle); | - |
bg-warning-subtle | background-color: var(--redz-warning-subtle); | - |
bg-info-subtle | background-color: var(--redz-info-subtle); | - |
border | border: 1px solid var(--redz-border); | - |
border-top | border-block-start: 1px solid var(--redz-border); | - |
border-bottom | border-block-end: 1px solid var(--redz-border); | - |
border-start | border-inline-start: 1px solid var(--redz-border); | - |
border-end | border-inline-end: 1px solid var(--redz-border); | - |
border-0 | border-width: 0; | - |
border-1 | border-width: 1px; | - |
border-2 | border-width: 2px; | - |
border-4 | border-width: 4px; | - |
border-strong | border-color: var(--redz-border-strong); | - |
border-primary | border-color: var(--redz-primary); | - |
border-secondary | border-color: var(--redz-secondary); | - |
border-success | border-color: var(--redz-success); | - |
border-danger | border-color: var(--redz-danger); | - |
border-warning | border-color: var(--redz-warning); | - |
border-info | border-color: var(--redz-info); | - |
border-primary-subtle | border-color: color-mix(in oklch, var(--redz-primary) 35%, var(--redz-border)); | - |
border-secondary-subtle | border-color: color-mix(in oklch, var(--redz-secondary) 35%, var(--redz-border)); | - |
border-success-subtle | border-color: color-mix(in oklch, var(--redz-success) 35%, var(--redz-border)); | - |
border-danger-subtle | border-color: color-mix(in oklch, var(--redz-danger) 35%, var(--redz-border)); | - |
border-warning-subtle | border-color: color-mix(in oklch, var(--redz-warning) 35%, var(--redz-border)); | - |
border-info-subtle | border-color: color-mix(in oklch, var(--redz-info) 35%, var(--redz-border)); | - |
edge-top-color | border-block-start: 3px solid var(--redz-color); | - |
edge-top-primary | border-block-start: 3px solid var(--redz-primary); | - |
edge-top-secondary | border-block-start: 3px solid var(--redz-secondary); | - |
edge-top-success | border-block-start: 3px solid var(--redz-success); | - |
edge-top-danger | border-block-start: 3px solid var(--redz-danger); | - |
edge-top-warning | border-block-start: 3px solid var(--redz-warning); | - |
edge-top-info | border-block-start: 3px solid var(--redz-info); | - |
edge-start-color | border-inline-start: 3px solid var(--redz-color); | - |
edge-start-primary | border-inline-start: 3px solid var(--redz-primary); | - |
edge-start-secondary | border-inline-start: 3px solid var(--redz-secondary); | - |
edge-start-success | border-inline-start: 3px solid var(--redz-success); | - |
edge-start-danger | border-inline-start: 3px solid var(--redz-danger); | - |
edge-start-warning | border-inline-start: 3px solid var(--redz-warning); | - |
edge-start-info | border-inline-start: 3px solid var(--redz-info); | - |
edge-top-chart-1 | border-block-start: 3px solid var(--redz-chart-1); | - |
edge-top-chart-2 | border-block-start: 3px solid var(--redz-chart-2); | - |
edge-top-chart-3 | border-block-start: 3px solid var(--redz-chart-3); | - |
edge-top-chart-4 | border-block-start: 3px solid var(--redz-chart-4); | - |
edge-top-chart-5 | border-block-start: 3px solid var(--redz-chart-5); | - |
edge-top-chart-6 | border-block-start: 3px solid var(--redz-chart-6); | - |
edge-top-chart-7 | border-block-start: 3px solid var(--redz-chart-7); | - |
edge-top-chart-8 | border-block-start: 3px solid var(--redz-chart-8); | - |
edge-start-chart-1 | border-inline-start: 3px solid var(--redz-chart-1); | - |
edge-start-chart-2 | border-inline-start: 3px solid var(--redz-chart-2); | - |
edge-start-chart-3 | border-inline-start: 3px solid var(--redz-chart-3); | - |
edge-start-chart-4 | border-inline-start: 3px solid var(--redz-chart-4); | - |
edge-start-chart-5 | border-inline-start: 3px solid var(--redz-chart-5); | - |
edge-start-chart-6 | border-inline-start: 3px solid var(--redz-chart-6); | - |
edge-start-chart-7 | border-inline-start: 3px solid var(--redz-chart-7); | - |
edge-start-chart-8 | border-inline-start: 3px solid var(--redz-chart-8); | - |
rounded | border-radius: var(--redz-radius-8); | - |
rounded-full | border-radius: 999px; | - |
rounded-0 | border-radius: var(--redz-radius-0); | - |
rounded-4 | border-radius: var(--redz-radius-4); | - |
rounded-6 | border-radius: var(--redz-radius-6); | - |
rounded-8 | border-radius: var(--redz-radius-8); | - |
rounded-12 | border-radius: var(--redz-radius-12); | - |
rounded-16 | border-radius: var(--redz-radius-16); | - |
rounded-top | border-start-start-radius: var(--redz-radius-8); border-start-end-radius: var(--redz-radius-8); | - |
rounded-end | border-start-end-radius: var(--redz-radius-8); border-end-end-radius: var(--redz-radius-8); | - |
rounded-bottom | border-end-start-radius: var(--redz-radius-8); border-end-end-radius: var(--redz-radius-8); | - |
rounded-start | border-start-start-radius: var(--redz-radius-8); border-end-start-radius: var(--redz-radius-8); | - |
shadow-1 | box-shadow: var(--redz-shadow-1); | - |
shadow-2 | box-shadow: var(--redz-shadow-2); | - |
shadow-3 | box-shadow: var(--redz-shadow-3); | - |
shadow-none | box-shadow: none; | - |
w-25 | inline-size: 25%; | - |
w-50 | inline-size: 50%; | - |
w-75 | inline-size: 75%; | - |
w-100 | inline-size: 100%; | - |
w-auto | inline-size: auto; | - |
w-56 | inline-size: 3.5rem; | - |
w-64 | inline-size: 4rem; | - |
w-80 | inline-size: 5rem; | - |
w-96 | inline-size: 6rem; | - |
w-120 | inline-size: 7.5rem; | - |
w-160 | inline-size: 10rem; | - |
h-25 | block-size: 25%; | - |
h-50 | block-size: 50%; | - |
h-75 | block-size: 75%; | - |
h-100 | block-size: 100%; | - |
h-auto | block-size: auto; | - |
h-32 | block-size: 2rem; | - |
h-40 | block-size: 2.5rem; | - |
h-72 | block-size: 4.5rem; | - |
size-32 | inline-size: 2rem; block-size: 2rem; | - |
size-48 | inline-size: 3rem; block-size: 3rem; | - |
size-64 | inline-size: 4rem; block-size: 4rem; | - |
size-80 | inline-size: 5rem; block-size: 5rem; | - |
max-w-80 | max-inline-size: 5rem; | - |
max-w-120 | max-inline-size: 7.5rem; | - |
max-w-160 | max-inline-size: 10rem; | - |
max-w-240 | max-inline-size: 15rem; | - |
max-w-320 | max-inline-size: 20rem; | - |
max-w-360 | max-inline-size: 22.5rem; | - |
max-w-480 | max-inline-size: 30rem; | - |
max-w-560 | max-inline-size: 35rem; | - |
max-w-640 | max-inline-size: 40rem; | - |
max-w-768 | max-inline-size: 48rem; | - |
max-w-960 | max-inline-size: 60rem; | - |
max-w-1200 | max-inline-size: 75rem; | - |
max-h-160 | max-block-size: 10rem; | - |
max-h-240 | max-block-size: 15rem; | - |
max-h-320 | max-block-size: 20rem; | - |
max-h-400 | max-block-size: 25rem; | - |
max-h-480 | max-block-size: 30rem; | - |
max-h-560 | max-block-size: 35rem; | - |
max-h-640 | max-block-size: 40rem; | - |
min-w-0 | min-inline-size: 0; | - |
min-w-56 | min-inline-size: 3.5rem; | - |
min-w-120 | min-inline-size: 7.5rem; | - |
min-w-160 | min-inline-size: 10rem; | - |
min-w-200 | min-inline-size: 12.5rem; | - |
min-w-240 | min-inline-size: 15rem; | - |
min-w-288 | min-inline-size: 18rem; | - |
vw-100 | inline-size: 100vw; | - |
min-vw-100 | min-inline-size: 100vw; | - |
vh-100 | block-size: 100dvh; | - |
min-vh-100 | min-block-size: 100dvh; | - |
opacity-0 | opacity: 0; | - |
opacity-25 | opacity: 0.25; | - |
opacity-50 | opacity: 0.5; | - |
opacity-75 | opacity: 0.75; | - |
opacity-100 | opacity: 1; | - |
position-static | position: static; | - |
position-relative | position: relative; | - |
position-absolute | position: absolute; | - |
position-fixed | position: fixed; | - |
position-sticky | position: sticky; | - |
top-0 | inset-block-start: 0; | - |
top-50 | inset-block-start: 50%; | - |
top-100 | inset-block-start: 100%; | - |
bottom-0 | inset-block-end: 0; | - |
bottom-50 | inset-block-end: 50%; | - |
bottom-100 | inset-block-end: 100%; | - |
start-0 | inset-inline-start: 0; | - |
start-50 | inset-inline-start: 50%; | - |
start-100 | inset-inline-start: 100%; | - |
end-0 | inset-inline-end: 0; | - |
end-50 | inset-inline-end: 50%; | - |
end-100 | inset-inline-end: 100%; | - |
translate-middle | translate: -50% -50%; | - |
translate-middle:dir(rtl) | translate: 50% -50%; | - |
translate-middle-x | translate: -50% 0; | - |
translate-middle-x:dir(rtl) | translate: 50% 0; | - |
translate-middle-y | translate: 0 -50%; | - |
z-n1 | z-index: -1; | - |
z-0 | z-index: 0; | - |
z-1 | z-index: 1; | - |
z-2 | z-index: 2; | - |
z-3 | z-index: 3; | - |
float-start | float: inline-start; | yes |
float-end | float: inline-end; | yes |
float-none | float: none; | yes |
overflow-auto | overflow: auto; | - |
overflow-hidden | overflow: hidden; | - |
overflow-visible | overflow: visible; | - |
overflow-scroll | overflow: scroll; | - |
overflow-x-auto | overflow-x: auto; | - |
overflow-x-hidden | overflow-x: hidden; | - |
overflow-x-visible | overflow-x: visible; | - |
overflow-x-scroll | overflow-x: scroll; | - |
overflow-y-auto | overflow-y: auto; | - |
overflow-y-hidden | overflow-y: hidden; | - |
overflow-y-visible | overflow-y: visible; | - |
overflow-y-scroll | overflow-y: scroll; | - |
align-baseline | vertical-align: baseline; | - |
align-top | vertical-align: top; | - |
align-middle | vertical-align: middle; | - |
align-bottom | vertical-align: bottom; | - |
align-text-top | vertical-align: text-top; | - |
align-text-bottom | vertical-align: text-bottom; | - |
object-fit-contain | object-fit: contain; | - |
object-fit-cover | object-fit: cover; | - |
object-fit-fill | object-fit: fill; | - |
object-fit-none | object-fit: none; | - |
ratio-1x1 | aspect-ratio: 1 / 1; | - |
ratio-4x3 | aspect-ratio: 4 / 3; | - |
ratio-16x9 | aspect-ratio: 16 / 9; | - |
ratio-21x9 | aspect-ratio: 21 / 9; | - |
ratio-1.91x1 | aspect-ratio: 1.91 / 1; | - |
ratio-auto | aspect-ratio: auto; | - |
visible | visibility: visible; | - |
invisible | visibility: hidden; | - |
user-select-none | -webkit-user-select: none; user-select: none; | - |
user-select-all | -webkit-user-select: all; user-select: all; | - |
user-select-auto | -webkit-user-select: auto; user-select: auto; | - |
pe-none | pointer-events: none; | - |
pe-auto | pointer-events: auto; | - |
visually-hidden | position: absolute; inline-size: 1px; block-size: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; | - |
sticky-top | position: sticky; inset-block-start: var(--redz-sticky-top, 0); z-index: 5; | - |
flash | animation: flash 1.2s ease-out; | - |
offscreen | position: absolute; inset-block-start: 0; inset-inline-start: -100vw; inline-size: 1px; block-size: 1px; overflow: hidden; | - |
stretched-link::after | content: ""; position: absolute; inset: 0; z-index: 1; | - |
vr | display: inline-block; align-self: stretch; inline-size: 1px; min-block-size: 1em; background: var(--redz-border-strong); | - |
icon-link | display: inline-flex; align-items: center; gap: 0.375em; text-underline-offset: 0.2em; | - |
flip-rtl:dir(rtl) | scale: -1 1; | - |
d-none | display: none; | yes |
From Bootstrap 5.3
| Bootstrap 5.3 | REDZ.UI | Change | Note |
|---|---|---|---|
bg-black | - | review | bg-body, bg-page, bg-raised or a tone |
bg-body-secondary | bg-page | rename | |
bg-body-tertiary | bg-raised | rename | |
bg-dark | - | review | bg-body, bg-page, bg-raised or a tone |
bg-dark-subtle | - | review | bg-page, or a tone's -subtle |
bg-gradient | - | remove | no gradients |
bg-light | - | review | bg-body, bg-page, bg-raised or a tone |
bg-light-subtle | - | review | bg-page, or a tone's -subtle |
bg-opacity-10 | - | review | Bootstrap 6 dropped it too: bg-{tone}-subtle |
bg-opacity-100 | - | review | Bootstrap 6 dropped it too: bg-{tone}-subtle |
bg-opacity-25 | - | review | Bootstrap 6 dropped it too: bg-{tone}-subtle |
bg-opacity-50 | - | review | Bootstrap 6 dropped it too: bg-{tone}-subtle |
bg-opacity-75 | - | review | Bootstrap 6 dropped it too: bg-{tone}-subtle |
bg-white | - | review | bg-body, bg-page, bg-raised or a tone |
blockquote | - | missing | |
blockquote-footer | - | missing | |
border-3 | - | review | the widths are 1, 2 and 4 px |
border-5 | - | review | the widths are 1, 2 and 4 px |
border-black | - | review | border-strong, or a tone |
border-bottom-0 | - | missing | draw only the sides you need: border-top and the others |
border-dark | - | review | border-strong, or a tone |
border-dark-subtle | - | review | border, or border-strong |
border-end-0 | - | missing | draw only the sides you need: border-top and the others |
border-light | - | review | border-strong, or a tone |
border-light-subtle | - | review | border, or border-strong |
border-opacity-10 | - | missing | |
border-opacity-100 | - | missing | |
border-opacity-25 | - | missing | |
border-opacity-50 | - | missing | |
border-opacity-75 | - | missing | |
border-start-0 | - | missing | draw only the sides you need: border-top and the others |
border-top-0 | - | missing | draw only the sides you need: border-top and the others |
border-white | - | review | border-strong, or a tone |
clearfix | - | remove | no floats |
column-gap-1 | column-gap-4 | value | the number is the pixels |
column-gap-2 | column-gap-8 | value | reused: column-gap-2 means another thing in REDZ.UI; the number is the pixels |
column-gap-3 | column-gap-16 | value | the number is the pixels |
column-gap-4 | column-gap-24 | value | reused: column-gap-4 means another thing in REDZ.UI; the number is the pixels |
column-gap-5 | column-gap-48 | value | the number is the pixels |
display-1 | fs-32 | review | the largest size here |
display-2 | fs-32 | review | the largest size here |
display-3 | fs-32 | review | the largest size here |
display-4 | fs-32 | review | the largest size here |
display-5 | fs-32 | review | the largest size here |
display-6 | fs-32 | review | the largest size here |
figure | - | missing | |
figure-caption | - | missing | |
figure-img | - | missing | |
fixed-bottom | - | review | position-fixed with top-0 or bottom-0, start-0 and end-0 |
fixed-top | - | review | position-fixed with top-0 or bottom-0, start-0 and end-0 |
focus-ring | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-danger | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-dark | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-info | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-light | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-primary | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-secondary | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-success | - | remove | the focus ring is built in, 3:1 in both themes |
focus-ring-warning | - | remove | the focus ring is built in, 3:1 in both themes |
fs-1 | fs-32 | value | 40 px in Bootstrap; 32 is the largest here |
fs-2 | fs-32 | value | 32 px |
fs-3 | fs-24 | value | 28 px in Bootstrap |
fs-4 | fs-24 | value | 24 px |
fs-5 | fs-20 | value | 20 px |
fs-6 | fs-16 | value | 16 px |
fw-bold | fw-700 | rename | |
fw-bolder | - | review | the weights are 400, 500, 600 and 700 |
fw-light | - | review | the weights are 400, 500, 600 and 700 |
fw-lighter | - | review | the weights are 400, 500, 600 and 700 |
fw-medium | fw-500 | rename | |
fw-normal | fw-400 | rename | |
fw-semibold | fw-600 | rename | |
gap-1 | gap-4 | value | the number is the pixels |
gap-2 | gap-8 | value | reused: gap-2 means another thing in REDZ.UI; the number is the pixels |
gap-3 | gap-16 | value | the number is the pixels |
gap-4 | gap-24 | value | reused: gap-4 means another thing in REDZ.UI; the number is the pixels |
gap-5 | gap-48 | value | the number is the pixels |
h1 | - | review | the h1-h4 sizes are the elements'; fs-* for another |
h2 | - | review | the h1-h4 sizes are the elements'; fs-* for another |
h3 | - | review | the h1-h4 sizes are the elements'; fs-* for another |
h4 | - | review | the h1-h4 sizes are the elements'; fs-* for another |
h5 | - | review | the h1-h4 sizes are the elements'; fs-* for another |
h6 | - | review | the h1-h4 sizes are the elements'; fs-* for another |
icon-link-hover | - | remove | the icon does not move on hover |
img-fluid | - | review | images never overflow their box here; w-100 to fill it |
img-thumbnail | - | missing | |
initialism | - | missing | |
lead | fs-16 text-muted | review | a lead paragraph |
lh-1 | - | review | line heights are px here: lh-16, lh-20, lh-24, lh-28 |
lh-base | - | review | line heights are px here: lh-16, lh-20, lh-24, lh-28 |
link-body-emphasis | - | review | a link is the accent; text-* for a tone |
link-danger | - | review | a link is the accent; text-* for a tone |
link-dark | - | review | a link is the accent; text-* for a tone |
link-info | - | review | a link is the accent; text-* for a tone |
link-light | - | review | a link is the accent; text-* for a tone |
link-offset-1 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-offset-1-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-offset-2 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-offset-2-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-offset-3 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-offset-3-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-10 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-10-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-100 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-100-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-25 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-25-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-50 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-50-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-75 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-opacity-75-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-primary | - | review | a link is the accent; text-* for a tone |
link-secondary | - | review | a link is the accent; text-* for a tone |
link-success | - | review | a link is the accent; text-* for a tone |
link-underline | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-danger | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-dark | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-info | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-light | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-0 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-0-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-10 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-10-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-100 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-100-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-25 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-25-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-50 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-50-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-75 | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-opacity-75-hover | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-primary | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-secondary | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-success | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-underline-warning | - | review | Bootstrap 6 dropped them too: text-decoration-underline or -none on the link |
link-warning | - | review | a link is the accent; text-* for a tone |
list-inline | - | review | hstack flex-wrap |
list-inline-item | - | review | hstack flex-wrap |
m-1 | m-4 | value | the number is the pixels |
m-2 | m-8 | value | reused: m-2 means another thing in REDZ.UI; the number is the pixels |
m-3 | m-16 | value | the number is the pixels |
m-4 | m-24 | value | reused: m-4 means another thing in REDZ.UI; the number is the pixels |
m-5 | m-48 | value | the number is the pixels |
mark | - | missing | |
mb-1 | mb-4 | value | the number is the pixels |
mb-2 | mb-8 | value | reused: mb-2 means another thing in REDZ.UI; the number is the pixels |
mb-3 | mb-16 | value | the number is the pixels |
mb-4 | mb-24 | value | reused: mb-4 means another thing in REDZ.UI; the number is the pixels |
mb-5 | mb-48 | value | the number is the pixels |
me-1 | me-4 | value | the number is the pixels |
me-2 | me-8 | value | reused: me-2 means another thing in REDZ.UI; the number is the pixels |
me-3 | me-16 | value | the number is the pixels |
me-4 | me-24 | value | reused: me-4 means another thing in REDZ.UI; the number is the pixels |
me-5 | me-48 | value | the number is the pixels |
mh-100 | - | missing | |
ms-1 | ms-4 | value | the number is the pixels |
ms-2 | ms-8 | value | reused: ms-2 means another thing in REDZ.UI; the number is the pixels |
ms-3 | ms-16 | value | the number is the pixels |
ms-4 | ms-24 | value | reused: ms-4 means another thing in REDZ.UI; the number is the pixels |
ms-5 | ms-48 | value | the number is the pixels |
mt-1 | mt-4 | value | the number is the pixels |
mt-2 | mt-8 | value | reused: mt-2 means another thing in REDZ.UI; the number is the pixels |
mt-3 | mt-16 | value | the number is the pixels |
mt-4 | mt-24 | value | reused: mt-4 means another thing in REDZ.UI; the number is the pixels |
mt-5 | mt-48 | value | the number is the pixels |
mw-100 | - | review | max-w-* by px |
mx-1 | mx-4 | value | the number is the pixels |
mx-2 | mx-8 | value | reused: mx-2 means another thing in REDZ.UI; the number is the pixels |
mx-3 | mx-16 | value | the number is the pixels |
mx-4 | mx-24 | value | reused: mx-4 means another thing in REDZ.UI; the number is the pixels |
mx-5 | mx-48 | value | the number is the pixels |
my-1 | my-4 | value | the number is the pixels |
my-2 | my-8 | value | reused: my-2 means another thing in REDZ.UI; the number is the pixels |
my-3 | my-16 | value | the number is the pixels |
my-4 | my-24 | value | reused: my-4 means another thing in REDZ.UI; the number is the pixels |
my-5 | my-48 | value | the number is the pixels |
object-fit-scale | - | review | object-fit-contain is the nearest |
p-1 | p-4 | value | the number is the pixels |
p-2 | p-8 | value | reused: p-2 means another thing in REDZ.UI; the number is the pixels |
p-3 | p-16 | value | the number is the pixels |
p-4 | p-24 | value | reused: p-4 means another thing in REDZ.UI; the number is the pixels |
p-5 | p-48 | value | the number is the pixels |
pb-1 | pb-4 | value | the number is the pixels |
pb-2 | pb-8 | value | reused: pb-2 means another thing in REDZ.UI; the number is the pixels |
pb-3 | pb-16 | value | the number is the pixels |
pb-4 | pb-24 | value | reused: pb-4 means another thing in REDZ.UI; the number is the pixels |
pb-5 | pb-48 | value | the number is the pixels |
pe-1 | pe-4 | value | the number is the pixels |
pe-2 | pe-8 | value | reused: pe-2 means another thing in REDZ.UI; the number is the pixels |
pe-3 | pe-16 | value | the number is the pixels |
pe-4 | pe-24 | value | reused: pe-4 means another thing in REDZ.UI; the number is the pixels |
pe-5 | pe-48 | value | the number is the pixels |
ps-1 | ps-4 | value | the number is the pixels |
ps-2 | ps-8 | value | reused: ps-2 means another thing in REDZ.UI; the number is the pixels |
ps-3 | ps-16 | value | the number is the pixels |
ps-4 | ps-24 | value | reused: ps-4 means another thing in REDZ.UI; the number is the pixels |
ps-5 | ps-48 | value | the number is the pixels |
pt-1 | pt-4 | value | the number is the pixels |
pt-2 | pt-8 | value | reused: pt-2 means another thing in REDZ.UI; the number is the pixels |
pt-3 | pt-16 | value | the number is the pixels |
pt-4 | pt-24 | value | reused: pt-4 means another thing in REDZ.UI; the number is the pixels |
pt-5 | pt-48 | value | the number is the pixels |
px-1 | px-4 | value | the number is the pixels |
px-2 | px-8 | value | reused: px-2 means another thing in REDZ.UI; the number is the pixels |
px-3 | px-16 | value | the number is the pixels |
px-4 | px-24 | value | reused: px-4 means another thing in REDZ.UI; the number is the pixels |
px-5 | px-48 | value | the number is the pixels |
py-1 | py-4 | value | the number is the pixels |
py-2 | py-8 | value | reused: py-2 means another thing in REDZ.UI; the number is the pixels |
py-3 | py-16 | value | the number is the pixels |
py-4 | py-24 | value | reused: py-4 means another thing in REDZ.UI; the number is the pixels |
py-5 | py-48 | value | the number is the pixels |
ratio | - | remove | the ratio goes on the element itself; an image inside a frame fills it with w-100 h-100 object-fit-cover |
rounded-1 | rounded-4 | value | 4 px |
rounded-2 | rounded-6 | value | 6 px |
rounded-3 | rounded-8 | value | 8 px |
rounded-4 | rounded-16 | value | reused: rounded-4 means another thing in REDZ.UI; 16 px |
rounded-5 | - | review | 32 px in Bootstrap: rounded-16 or rounded-full |
rounded-bottom-0 | rounded-bottom | review | a side takes the 8 px radius |
rounded-bottom-1 | rounded-bottom | review | a side takes the 8 px radius |
rounded-bottom-2 | rounded-bottom | review | a side takes the 8 px radius |
rounded-bottom-3 | rounded-bottom | review | a side takes the 8 px radius |
rounded-bottom-4 | rounded-bottom | review | a side takes the 8 px radius |
rounded-bottom-5 | rounded-bottom | review | a side takes the 8 px radius |
rounded-bottom-circle | rounded-bottom | review | a side takes the 8 px radius |
rounded-bottom-pill | rounded-bottom | review | a side takes the 8 px radius |
rounded-circle | rounded-full | rename | |
rounded-end-0 | rounded-end | review | a side takes the 8 px radius |
rounded-end-1 | rounded-end | review | a side takes the 8 px radius |
rounded-end-2 | rounded-end | review | a side takes the 8 px radius |
rounded-end-3 | rounded-end | review | a side takes the 8 px radius |
rounded-end-4 | rounded-end | review | a side takes the 8 px radius |
rounded-end-5 | rounded-end | review | a side takes the 8 px radius |
rounded-end-circle | rounded-end | review | a side takes the 8 px radius |
rounded-end-pill | rounded-end | review | a side takes the 8 px radius |
rounded-pill | rounded-full | rename | |
rounded-start-0 | rounded-start | review | a side takes the 8 px radius |
rounded-start-1 | rounded-start | review | a side takes the 8 px radius |
rounded-start-2 | rounded-start | review | a side takes the 8 px radius |
rounded-start-3 | rounded-start | review | a side takes the 8 px radius |
rounded-start-4 | rounded-start | review | a side takes the 8 px radius |
rounded-start-5 | rounded-start | review | a side takes the 8 px radius |
rounded-start-circle | rounded-start | review | a side takes the 8 px radius |
rounded-start-pill | rounded-start | review | a side takes the 8 px radius |
rounded-top-0 | rounded-top | review | a side takes the 8 px radius |
rounded-top-1 | rounded-top | review | a side takes the 8 px radius |
rounded-top-2 | rounded-top | review | a side takes the 8 px radius |
rounded-top-3 | rounded-top | review | a side takes the 8 px radius |
rounded-top-4 | rounded-top | review | a side takes the 8 px radius |
rounded-top-5 | rounded-top | review | a side takes the 8 px radius |
rounded-top-circle | rounded-top | review | a side takes the 8 px radius |
rounded-top-pill | rounded-top | review | a side takes the 8 px radius |
row-gap-1 | row-gap-4 | value | the number is the pixels |
row-gap-2 | row-gap-8 | value | reused: row-gap-2 means another thing in REDZ.UI; the number is the pixels |
row-gap-3 | row-gap-16 | value | the number is the pixels |
row-gap-4 | row-gap-24 | value | reused: row-gap-4 means another thing in REDZ.UI; the number is the pixels |
row-gap-5 | row-gap-48 | value | the number is the pixels |
shadow | shadow-2 | rename | |
small | - | review | fs-12, or the <small> element |
sticky-bottom | - | review | position-sticky with bottom-0 |
text-black | - | review | no white, black, light or dark: text-body, text-muted or a tone; on bg-TONE, text-TONE-contrast |
text-black-50 | - | review | no white, black, light or dark: text-body, text-muted or a tone; on bg-TONE, text-TONE-contrast |
text-body-emphasis | text-body | rename | |
text-body-secondary | text-muted | rename | |
text-body-tertiary | text-faint | rename | |
text-danger-emphasis | text-danger | rename | a tone's text color is already its emphasis |
text-dark | - | review | no white, black, light or dark: text-body, text-muted or a tone; on bg-TONE, text-TONE-contrast |
text-dark-emphasis | text-body | review | no light or dark: the text color |
text-info-emphasis | text-info | rename | a tone's text color is already its emphasis |
text-light | - | review | no white, black, light or dark: text-body, text-muted or a tone; on bg-TONE, text-TONE-contrast |
text-light-emphasis | text-body | review | no light or dark: the text color |
text-opacity-100 | - | review | Bootstrap 6 dropped it too: text-muted or text-faint |
text-opacity-25 | - | review | Bootstrap 6 dropped it too: text-muted or text-faint |
text-opacity-50 | - | review | Bootstrap 6 dropped it too: text-muted or text-faint |
text-opacity-75 | - | review | Bootstrap 6 dropped it too: text-muted or text-faint |
text-primary-emphasis | text-primary | rename | a tone's text color is already its emphasis |
text-secondary-emphasis | text-secondary | rename | a tone's text color is already its emphasis |
text-success-emphasis | text-success | rename | a tone's text color is already its emphasis |
text-warning-emphasis | text-warning | rename | a tone's text color is already its emphasis |
text-white | - | review | no white, black, light or dark: text-body, text-muted or a tone; on bg-TONE, text-TONE-contrast |
text-white-50 | - | review | no white, black, light or dark: text-body, text-muted or a tone; on bg-TONE, text-TONE-contrast |
--bs-aspect-ratio | - | review | ratio-* for the ratio; the property itself for the rest |
--bs-bg-opacity | - | review | a relative color or color-mix in place of the opacity |
--bs-border-opacity | - | review | a relative color or color-mix in place of the opacity |
--bs-danger-border-subtle | - | review | color-mix(in oklch, var(--redz-danger) 35%, var(--redz-border)), as border-danger-subtle draws it |
--bs-info-border-subtle | - | review | color-mix(in oklch, var(--redz-info) 35%, var(--redz-border)), as border-info-subtle draws it |
--bs-position | - | review | ratio-* for the ratio; the property itself for the rest |
--bs-primary-border-subtle | - | review | color-mix(in oklch, var(--redz-primary) 35%, var(--redz-border)), as border-primary-subtle draws it |
--bs-secondary-border-subtle | - | review | color-mix(in oklch, var(--redz-secondary) 35%, var(--redz-border)), as border-secondary-subtle draws it |
--bs-success-border-subtle | - | review | color-mix(in oklch, var(--redz-success) 35%, var(--redz-border)), as border-success-subtle draws it |
--bs-text-opacity | - | review | a relative color or color-mix in place of the opacity |
--bs-warning-border-subtle | - | review | color-mix(in oklch, var(--redz-warning) 35%, var(--redz-border)), as border-warning-subtle draws it |