Placeholder component

Use loading placeholders for your components or pages to indicate something may still be loading. They’re built only with HTML and CSS, no JS is needed to create them

Placeholder animation

Animate placeholders with .placeholder-glow or .placeholder-wave added to parent container to better convey the perception of something being actively loaded

Placeholder width

You can change the width through grid column classes: .col-[1-12], width utilities: .w-[25|50|75|100], or inline styles: style="width: [number]%". The base .placeholder class is required

Placeholder height

The size of .placeholder is based on the typographic style of the parent element. Customize them with sizing modifiers: .placeholder-lg, .placeholder-sm, or .placeholder-xs.

Centered placeholder

Placeholder by default is an inline element and you can control its alignment simply by using .text-start, .text-center and .text-end classes on parent container

Right aligned placeholder

Example of right alignmed placeholder. Can be combined with other placeholders in the same container or used separately depending on original content alignment

Placeholder color

By default, the placeholder uses currentColor and inherits color from parent element. This can be overridden with a custom color or utility class, including a set of available custom colors

Animated color options

All placeholder colors support animation by default, no additional CSS or classes are required since both effects are based on repeating opacity or image-mask animation

Card placeholder

In the example below, we take a typical card component and recreate it with placeholders applied to create a “loading card”. Size and proportions are the same between the two. We apply additional styling to .btn via ::before to ensure the height is respected. You may extend this pattern for other situations as needed, or add a   within the element to reflect the height when actual text is rendered in its place.

Component
Placeholder Image cap
Card title

Some quick example text to build on the card title and make up the bulk of the card's content.

Go somewhere
Loading state
Table placeholder

Example of placeholder in table element. You can show placeholder only in table head, table body or in both. Keeping header text visible would work better when number of columns is known and you need only to load table content (e.g. when pagination is triggered). If headers are hidden, make sure column widths are defined in table markup or CSS, as they may collapse and jump when content is loaded.

Component
# First Name Last Name Username
1 Eugene Kopyov @Kopyov
2 Victoria Baker @Vicky
3 James Alexander @Alex
4 Franklin Morrison @Frank
Loading state
Navbar placeholder

Although navbar supports placeholder, implementation is a bit different: all collapsible containers and dropdown menus are disabled, but all their togglers are visible. To disable links, add .pe-none to disable pointer events and control container widths with .col-* classes, in some cases you might also need to toggle these classes in parent containers as well. Check the example below.

Component
Loading state
Sidebar placeholder

Placeholder implementation in the sidebar is custom and depends on the content type you display there. All sub levels and item states in sidebar navigation are disabled by default, unless you need to show them intentionally (e.g. when you load sub menus dynamically). Apart from that, all other elements are rendered in a regular way with .placeholder elements.

Media object placeholder

You can replace any text or image content with placeholder, keeping the structure of content section. In this example we have a regular list group with custom inner content structure based on utility classes, where we replace our images with a custom inline SVG placeholder that has similar size and shape. All parent links are disabled with .pe-none class.

Component
Walking away fallaciously
Wise that some and before yellow thus yikes mandrill
Recklessly won
Awkwardly thus when much according forwardly far grizzly
Fired or unlocked
Much contemptible squid crud the dear less hazy naturally
Page header placeholder

Replacing content in page header might be useful when you need to show layout structure on page load. Here we replace right content group (dropdown and a list of images) with a multi line placeholder, this requires some additional changes in the markup - we don't replace inner content of right nav, but the whole container with a few parent levels. This can be changed if you really need to be that precise.

Component
Loading state
Modal placeholder

Showing placeholders in modals is easy, it has the same logic as in other elements with a few exceptions: we can replace single or multiple buttons with animated placeholders, close button is also visible and disabled. We recommend to keep modal markup always available during loading process and replace only inner content, this will prevent full component layout shift when progress is finished.

Component
Loading state
Dropdown placeholder

Dropdown menu also supports placeholder. You can either show it in each dropdown item, simulate a short vertical list with multiple placeholders that are displayed on multiple lines within 1 container, or you can completely replace all content inside .dropdown-menu container with your custom placeholder implementation.

Activity
New notifications
James has completed the task Submit documents from Onboarding list
2 hours ago
Margo has added 4 users to Customer enablement channel
3 hours ago
Subscription #466573 from 10.12.2021 has been cancelled. Refund case #4492 created
4 hours ago
Older notifications
Nick requested your feedback and approval in support request #458
3 days ago
Mike added 1 new file(s) to Product management project
new_contract.pdf
112KB
1 day ago
All hands meeting will take place coming Thursday at 13:45.
2 days ago
Christine commented on your community post from 10.12.2021
2 days ago
HR department requested you to complete internal survey by Friday
3 days ago
Loading...
Demo configuration
Color mode
Direction
Layouts
Purchase Limitless