mirror of
https://github.com/onsonr/nebula.git
synced 2025-03-11 01:39:11 +00:00
1645 lines
95 KiB
HTML
1645 lines
95 KiB
HTML
<!doctype html>
|
||
<html lang="en" data-layout="component" data-shoelace-version="0.0.10">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<meta
|
||
name="description"
|
||
content="Skeletons are used to provide a visual representation of where content will eventually be drawn."
|
||
/>
|
||
<title>Skeleton</title>
|
||
|
||
<meta name="turbo-cache-control" />
|
||
|
||
<link rel="stylesheet" href="/assets/styles/docs.css" />
|
||
<link rel="stylesheet" href="/assets/styles/code-previews.css" />
|
||
<link rel="stylesheet" href="/assets/styles/search.css" />
|
||
|
||
<link rel="icon" href="/assets/images/logo.svg" type="image/x-icon" />
|
||
|
||
<meta name="twitter:card" content="summary" />
|
||
<meta name="twitter:creator" content="shoelace_style" />
|
||
<meta name="twitter:image" content="https://nebulaui.org/assets/images/og-image.png" />
|
||
|
||
<meta property="og:url" content="https://nebulaui.org/components/skeleton/" />
|
||
<meta property="og:title" content="Skeleton" />
|
||
<meta
|
||
property="og:description"
|
||
content="Skeletons are used to provide a visual representation of where content will eventually be drawn."
|
||
/>
|
||
<meta property="og:image" content="https://nebulaui.org/assets/images/og-image.png" />
|
||
|
||
<link rel="stylesheet" href="/dist/themes/light.css" />
|
||
<link rel="stylesheet" href="/dist/themes/dark.css" />
|
||
<script type="module" src="/dist/shoelace-autoloader.js"></script>
|
||
|
||
<script>
|
||
(() => {
|
||
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
const theme = localStorage.getItem('theme') || 'auto';
|
||
document.documentElement.classList.toggle(
|
||
'sl-theme-dark',
|
||
theme === 'dark' || (theme === 'auto' && prefersDark)
|
||
);
|
||
})();
|
||
</script>
|
||
|
||
<script src="/assets/scripts/turbo.js" type="module"></script>
|
||
<script src="/assets/scripts/docs.js" defer=""></script>
|
||
<script src="/assets/scripts/code-previews.js" defer=""></script>
|
||
<script src="/assets/scripts/lunr.js" defer=""></script>
|
||
<script src="/assets/scripts/search.js" defer=""></script>
|
||
</head>
|
||
<body>
|
||
<a id="skip-to-main" class="visually-hidden" href="#main-content" data-smooth-link="false">
|
||
Skip to main content
|
||
</a>
|
||
|
||
<button id="menu-toggle" type="button" aria-label="Menu">
|
||
<svg width="148" height="148" viewBox="0 0 148 148" xmlns="http://www.w3.org/2000/svg">
|
||
<g stroke="currentColor" stroke-width="18" fill="none" fill-rule="evenodd" stroke-linecap="round">
|
||
<path d="M9.5 125.5h129M9.5 74.5h129M9.5 23.5h129"></path>
|
||
</g>
|
||
</svg>
|
||
</button>
|
||
|
||
<div id="icon-toolbar">
|
||
<a
|
||
href="https://github.com/onsonr/nebula"
|
||
title="View Nebula on GitHub"
|
||
class="external-link"
|
||
rel="noopener noreferrer"
|
||
target="_blank"
|
||
>
|
||
<sl-icon name="github"></sl-icon>
|
||
</a>
|
||
|
||
<a
|
||
href="https://twitter.com/shoelace_style"
|
||
title="Follow Nebula on Twitter"
|
||
class="external-link"
|
||
rel="noopener noreferrer"
|
||
target="_blank"
|
||
>
|
||
<sl-icon name="twitter"></sl-icon>
|
||
</a>
|
||
|
||
<sl-dropdown id="theme-selector" placement="bottom-end" distance="3">
|
||
<sl-button slot="trigger" size="small" variant="text" caret="" title="Press \ to toggle">
|
||
<sl-icon class="only-light" name="sun-fill"></sl-icon>
|
||
<sl-icon class="only-dark" name="moon-fill"></sl-icon>
|
||
</sl-button>
|
||
<sl-menu>
|
||
<sl-menu-item type="checkbox" value="light">Light</sl-menu-item>
|
||
<sl-menu-item type="checkbox" value="dark">Dark</sl-menu-item>
|
||
<sl-divider></sl-divider>
|
||
<sl-menu-item type="checkbox" value="auto">System</sl-menu-item>
|
||
</sl-menu>
|
||
</sl-dropdown>
|
||
</div>
|
||
|
||
<aside id="sidebar" data-preserve-scroll="">
|
||
<header>
|
||
<a href="/">
|
||
<img src="/assets/images/wordmark.svg" alt="Nebula" />
|
||
</a>
|
||
<div class="sidebar-version">0.0.10</div>
|
||
</header>
|
||
|
||
<div class="sidebar-buttons">
|
||
<sl-button
|
||
size="small"
|
||
class="repo-button repo-button--github"
|
||
href="https://github.com/onsonr/nebula"
|
||
target="_blank"
|
||
>
|
||
<sl-icon slot="prefix" name="github"></sl-icon> Code
|
||
</sl-button>
|
||
<sl-button
|
||
size="small"
|
||
class="repo-button repo-button--star"
|
||
href="https://github.com/onsonr/nebula/stargazers"
|
||
target="_blank"
|
||
>
|
||
<sl-icon slot="prefix" name="star-fill"></sl-icon> Star
|
||
</sl-button>
|
||
<sl-button
|
||
size="small"
|
||
class="repo-button repo-button--twitter"
|
||
href="https://twitter.com/shoelace_style"
|
||
target="_blank"
|
||
>
|
||
<sl-icon slot="prefix" name="twitter"></sl-icon> Follow
|
||
</sl-button>
|
||
</div>
|
||
|
||
<button class="search-box" type="button" title="Press / to search" aria-label="Search" data-plugin="search">
|
||
<sl-icon name="search"></sl-icon>
|
||
<span>Search</span>
|
||
</button>
|
||
|
||
<nav>
|
||
<ul>
|
||
<li>
|
||
<h2>Getting Started</h2>
|
||
<ul>
|
||
<li><a href="/">Home</a></li>
|
||
<li><a href="/getting-started/installation">Installation</a></li>
|
||
<li><a href="/getting-started/usage">Usage</a></li>
|
||
<li><a href="/getting-started/themes">Themes</a></li>
|
||
<li><a href="/getting-started/customizing">Customizing</a></li>
|
||
<li><a href="/getting-started/form-controls">Form Controls</a></li>
|
||
<li><a href="/getting-started/localization">Localization</a></li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<h2>Frameworks</h2>
|
||
<ul>
|
||
<li><a href="/frameworks/react">React</a></li>
|
||
<li><a href="/frameworks/vue">Vue</a></li>
|
||
<li><a href="/frameworks/angular">Angular</a></li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<h2>Resources</h2>
|
||
<ul>
|
||
<li><a href="/resources/community">Community</a></li>
|
||
<li>
|
||
<a
|
||
href="https://github.com/onsonr/nebula/discussions"
|
||
class="external-link"
|
||
rel="noopener noreferrer"
|
||
target="_blank"
|
||
>Help & Support</a
|
||
>
|
||
</li>
|
||
<li><a href="/resources/accessibility">Accessibility</a></li>
|
||
<li><a href="/resources/contributing">Contributing</a></li>
|
||
<li><a href="/resources/changelog">Changelog</a></li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<h2>Components</h2>
|
||
<ul>
|
||
<li>
|
||
<a href="/components/alert"> Alert </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/animated-image"> Animated Image </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/animation"> Animation </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/avatar"> Avatar </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/badge"> Badge </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/breadcrumb"> Breadcrumb </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/breadcrumb-item"> Breadcrumb Item </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/button"> Button </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/button-group"> Button Group </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/card"> Card </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/carousel"> Carousel </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/carousel-item"> Carousel Item </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/checkbox"> Checkbox </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/color-picker"> Color Picker </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/copy-button"> Copy Button </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/details"> Details </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/dialog"> Dialog </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/divider"> Divider </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/drawer"> Drawer </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/dropdown"> Dropdown </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/format-bytes"> Format Bytes </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/format-date"> Format Date </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/format-number"> Format Number </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/icon"> Icon </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/icon-button"> Icon Button </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/image-comparer"> Image Comparer </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/include"> Include </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/input"> Input </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/menu"> Menu </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/menu-item"> Menu Item </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/menu-label"> Menu Label </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/mutation-observer"> Mutation Observer </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/option"> Option </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/popup"> Popup </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/progress-bar"> Progress Bar </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/progress-ring"> Progress Ring </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/qr-code"> QR Code </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/radio"> Radio </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/radio-button"> Radio Button </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/radio-group"> Radio Group </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/range"> Range </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/rating"> Rating </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/relative-time"> Relative Time </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/resize-observer"> Resize Observer </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/select"> Select </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/skeleton" class="active-link"> Skeleton </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/spinner"> Spinner </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/split-panel"> Split Panel </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/switch"> Switch </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/tab"> Tab </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/tab-group"> Tab Group </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/tab-panel"> Tab Panel </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/tag"> Tag </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/textarea"> Textarea </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/tooltip"> Tooltip </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/tree"> Tree </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/tree-item"> Tree Item </a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="/components/visually-hidden"> Visually Hidden </a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<h2>Design Tokens</h2>
|
||
<ul>
|
||
<li><a href="/tokens/typography">Typography</a></li>
|
||
<li><a href="/tokens/color">Color</a></li>
|
||
<li><a href="/tokens/spacing">Spacing</a></li>
|
||
<li><a href="/tokens/elevation">Elevation</a></li>
|
||
<li><a href="/tokens/border-radius">Border Radius</a></li>
|
||
<li><a href="/tokens/transition">Transition</a></li>
|
||
<li><a href="/tokens/z-index">Z-index</a></li>
|
||
<li><a href="/tokens/more">More Tokens</a></li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<h2>Tutorials</h2>
|
||
<ul>
|
||
<li><a href="/tutorials/integrating-with-astro">Integrating with Astro</a></li>
|
||
<li><a href="/tutorials/integrating-with-laravel">Integrating with Laravel</a></li>
|
||
<li><a href="/tutorials/integrating-with-nextjs">Integrating with NextJS</a></li>
|
||
<li><a href="/tutorials/integrating-with-rails">Integrating with Rails</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</aside>
|
||
|
||
<main>
|
||
<a id="main-content"></a>
|
||
<article id="content" class="content content--with-toc">
|
||
<div class="content__toc">
|
||
<ul>
|
||
<li class="top"><a href="#">Skeleton</a></li>
|
||
<li data-level="2"><a href="#examples">Examples</a></li>
|
||
<li data-level="3"><a href="#effects">Effects</a></li>
|
||
<li data-level="3"><a href="#paragraphs">Paragraphs</a></li>
|
||
<li data-level="3"><a href="#avatars">Avatars</a></li>
|
||
<li data-level="3"><a href="#custom-shapes">Custom Shapes</a></li>
|
||
<li data-level="3"><a href="#custom-colors">Custom Colors</a></li>
|
||
<li data-level="2"><a href="#importing">Importing</a></li>
|
||
<li data-level="2"><a href="#properties">Properties</a></li>
|
||
<li data-level="2"><a href="#custom-properties">Custom Properties</a></li>
|
||
<li data-level="2"><a href="#parts">Parts</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="content__body">
|
||
<header class="component-header">
|
||
<h1>Skeleton</h1>
|
||
|
||
<div class="component-header__tag">
|
||
<code><sl-skeleton> | SlSkeleton</code>
|
||
</div>
|
||
|
||
<div class="component-header__info">
|
||
<sl-badge variant="neutral" pill=""> Since 2.0 </sl-badge>
|
||
<sl-badge variant="primary" pill="" style="text-transform: capitalize"> stable </sl-badge>
|
||
</div>
|
||
</header>
|
||
|
||
<p class="component-summary">
|
||
Skeletons are used to provide a visual representation of where content will eventually be drawn.
|
||
</p>
|
||
|
||
<p>
|
||
These are simple containers for scaffolding layouts that mimic what users will see when content has finished
|
||
loading. This prevents large areas of empty space during asynchronous operations.
|
||
</p>
|
||
<p>
|
||
Skeletons try not to be opinionated, as there are endless possibilities for designing layouts. Therefore,
|
||
you’ll likely use more than one skeleton to create the effect you want. If you find yourself using them
|
||
frequently, consider creating a template that renders them with the desired arrangement and styles.
|
||
</p>
|
||
|
||
<div class="code-preview">
|
||
<div class="code-preview__preview">
|
||
<div class="skeleton-overview">
|
||
<header>
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
</header>
|
||
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
</div>
|
||
|
||
<style>
|
||
.skeleton-overview header {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.skeleton-overview header sl-skeleton:last-child {
|
||
flex: 0 0 auto;
|
||
width: 30%;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton {
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton:nth-child(1) {
|
||
float: left;
|
||
width: 3rem;
|
||
height: 3rem;
|
||
margin-right: 1rem;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton:nth-child(3) {
|
||
width: 95%;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton:nth-child(4) {
|
||
width: 80%;
|
||
}
|
||
</style>
|
||
|
||
<div class="code-preview__resizer">
|
||
<sl-icon name="grip-vertical"></sl-icon>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__source-group" id="code-preview-source-group-272">
|
||
<div class="code-preview__source code-preview__source--html" data-flavor="html">
|
||
<pre><code class="language-html" id="code-block-851"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-overview<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>header</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>header</span><span class="token punctuation">></span></span>
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
|
||
<span class="token selector">.skeleton-overview header</span> <span class="token punctuation">{</span>
|
||
<span class="token property">display</span><span class="token punctuation">:</span> flex<span class="token punctuation">;</span>
|
||
<span class="token property">align-items</span><span class="token punctuation">:</span> center<span class="token punctuation">;</span>
|
||
<span class="token property">margin-bottom</span><span class="token punctuation">:</span> 1rem<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-overview header sl-skeleton:last-child</span> <span class="token punctuation">{</span>
|
||
<span class="token property">flex</span><span class="token punctuation">:</span> 0 0 auto<span class="token punctuation">;</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 30%<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-overview sl-skeleton</span> <span class="token punctuation">{</span>
|
||
<span class="token property">margin-bottom</span><span class="token punctuation">:</span> 1rem<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-overview sl-skeleton:nth-child(1)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">float</span><span class="token punctuation">:</span> left<span class="token punctuation">;</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 3rem<span class="token punctuation">;</span>
|
||
<span class="token property">height</span><span class="token punctuation">:</span> 3rem<span class="token punctuation">;</span>
|
||
<span class="token property">margin-right</span><span class="token punctuation">:</span> 1rem<span class="token punctuation">;</span>
|
||
<span class="token property">vertical-align</span><span class="token punctuation">:</span> middle<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-overview sl-skeleton:nth-child(3)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 95%<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-overview sl-skeleton:nth-child(4)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 80%<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-851"></sl-copy-button></pre>
|
||
</div>
|
||
|
||
<div class="code-preview__source code-preview__source--react" data-flavor="react">
|
||
<pre><code class="language-jsx" id="code-block-852"><span class="token keyword">import</span> SlSkeleton <span class="token keyword">from</span> <span class="token string">'@onsonr/nebula/dist/react/skeleton'</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> css <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
||
.skeleton-overview header {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.skeleton-overview header sl-skeleton:last-child {
|
||
flex: 0 0 auto;
|
||
width: 30%;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton {
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton:nth-child(1) {
|
||
float: left;
|
||
width: 3rem;
|
||
height: 3rem;
|
||
margin-right: 1rem;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton:nth-child(3) {
|
||
width: 95%;
|
||
}
|
||
|
||
.skeleton-overview sl-skeleton:nth-child(4) {
|
||
width: 80%;
|
||
}
|
||
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> <span class="token function-variable function">App</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-overview<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>header</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>header</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">{css}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span></span><span class="token punctuation">></span></span>
|
||
<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-852"></sl-copy-button></pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__buttons">
|
||
<button
|
||
type="button"
|
||
class="code-preview__button code-preview__toggle"
|
||
aria-expanded="false"
|
||
aria-controls="code-preview-source-group-272"
|
||
>
|
||
Source
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<polyline points="6 9 12 15 18 9"></polyline>
|
||
</svg>
|
||
</button>
|
||
|
||
<button type="button" title="Show HTML code" class="code-preview__button code-preview__button--html">
|
||
HTML
|
||
</button>
|
||
|
||
<button type="button" title="Show React code" class="code-preview__button code-preview__button--react">
|
||
React
|
||
</button>
|
||
|
||
<button type="button" class="code-preview__button code-preview__button--codepen" title="Edit on CodePen">
|
||
<svg
|
||
width="138"
|
||
height="26"
|
||
viewBox="0 0 138 26"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2.3"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<path
|
||
d="M80 6h-9v14h9 M114 6h-9 v14h9 M111 13h-6 M77 13h-6 M122 20V6l11 14V6 M22 16.7L33 24l11-7.3V9.3L33 2L22 9.3V16.7z M44 16.7L33 9.3l-11 7.4 M22 9.3l11 7.3 l11-7.3 M33 2v7.3 M33 16.7V24 M88 14h6c2.2 0 4-1.8 4-4s-1.8-4-4-4h-6v14 M15 8c-1.3-1.3-3-2-5-2c-4 0-7 3-7 7s3 7 7 7 c2 0 3.7-0.8 5-2 M64 13c0 4-3 7-7 7h-5V6h5C61 6 64 9 64 13z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<h2 id="examples" class="anchor-heading">
|
||
Examples<a href="#examples" aria-label='Direct link to "Examples"'></a>
|
||
</h2>
|
||
<h3 id="effects" class="anchor-heading">
|
||
Effects<a href="#effects" aria-label='Direct link to "Effects"'></a>
|
||
</h3>
|
||
<p>
|
||
There are two built-in effects, <code>sheen</code> and <code>pulse</code>. Effects are intentionally subtle,
|
||
as they can be distracting when used extensively. The default is <code>none</code>, which displays a static,
|
||
non-animated skeleton.
|
||
</p>
|
||
|
||
<div class="code-preview">
|
||
<div class="code-preview__preview">
|
||
<div class="skeleton-effects">
|
||
<sl-skeleton effect="none"></sl-skeleton>
|
||
None
|
||
|
||
<sl-skeleton effect="sheen"></sl-skeleton>
|
||
Sheen
|
||
|
||
<sl-skeleton effect="pulse"></sl-skeleton>
|
||
Pulse
|
||
</div>
|
||
|
||
<style>
|
||
.skeleton-effects {
|
||
font-size: var(--sl-font-size-small);
|
||
}
|
||
|
||
.skeleton-effects sl-skeleton:not(:first-child) {
|
||
margin-top: 1rem;
|
||
}
|
||
</style>
|
||
|
||
<div class="code-preview__resizer">
|
||
<sl-icon name="grip-vertical"></sl-icon>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__source-group" id="code-preview-source-group-273">
|
||
<div class="code-preview__source code-preview__source--html" data-flavor="html">
|
||
<pre><code class="language-html" id="code-block-853"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-effects<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>none<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
None
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sheen<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
Sheen
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pulse<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
Pulse
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
|
||
<span class="token selector">.skeleton-effects</span> <span class="token punctuation">{</span>
|
||
<span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--sl-font-size-small<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-effects sl-skeleton:not(:first-child)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">margin-top</span><span class="token punctuation">:</span> 1rem<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-853"></sl-copy-button></pre>
|
||
</div>
|
||
|
||
<div class="code-preview__source code-preview__source--react" data-flavor="react">
|
||
<pre><code class="language-jsx" id="code-block-854"><span class="token keyword">import</span> SlSkeleton <span class="token keyword">from</span> <span class="token string">'@onsonr/nebula/dist/react/skeleton'</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> css <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
||
.skeleton-effects {
|
||
font-size: var(--sl-font-size-small);
|
||
}
|
||
|
||
.skeleton-effects sl-skeleton:not(:first-child) {
|
||
margin-top: 1rem;
|
||
}
|
||
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> <span class="token function-variable function">App</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-effects<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>none<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
None
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sheen<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
Sheen
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pulse<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
Pulse
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">{css}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span></span><span class="token punctuation">></span></span>
|
||
<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-854"></sl-copy-button></pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__buttons">
|
||
<button
|
||
type="button"
|
||
class="code-preview__button code-preview__toggle"
|
||
aria-expanded="false"
|
||
aria-controls="code-preview-source-group-273"
|
||
>
|
||
Source
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<polyline points="6 9 12 15 18 9"></polyline>
|
||
</svg>
|
||
</button>
|
||
|
||
<button type="button" title="Show HTML code" class="code-preview__button code-preview__button--html">
|
||
HTML
|
||
</button>
|
||
|
||
<button type="button" title="Show React code" class="code-preview__button code-preview__button--react">
|
||
React
|
||
</button>
|
||
|
||
<button type="button" class="code-preview__button code-preview__button--codepen" title="Edit on CodePen">
|
||
<svg
|
||
width="138"
|
||
height="26"
|
||
viewBox="0 0 138 26"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2.3"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<path
|
||
d="M80 6h-9v14h9 M114 6h-9 v14h9 M111 13h-6 M77 13h-6 M122 20V6l11 14V6 M22 16.7L33 24l11-7.3V9.3L33 2L22 9.3V16.7z M44 16.7L33 9.3l-11 7.4 M22 9.3l11 7.3 l11-7.3 M33 2v7.3 M33 16.7V24 M88 14h6c2.2 0 4-1.8 4-4s-1.8-4-4-4h-6v14 M15 8c-1.3-1.3-3-2-5-2c-4 0-7 3-7 7s3 7 7 7 c2 0 3.7-0.8 5-2 M64 13c0 4-3 7-7 7h-5V6h5C61 6 64 9 64 13z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<h3 id="paragraphs" class="anchor-heading">
|
||
Paragraphs<a href="#paragraphs" aria-label='Direct link to "Paragraphs"'></a>
|
||
</h3>
|
||
<p>Use multiple skeletons and some clever styles to simulate paragraphs.</p>
|
||
|
||
<div class="code-preview">
|
||
<div class="code-preview__preview">
|
||
<div class="skeleton-paragraphs">
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
</div>
|
||
|
||
<style>
|
||
.skeleton-paragraphs sl-skeleton {
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.skeleton-paragraphs sl-skeleton:nth-child(2) {
|
||
width: 95%;
|
||
}
|
||
|
||
.skeleton-paragraphs sl-skeleton:nth-child(4) {
|
||
width: 90%;
|
||
}
|
||
|
||
.skeleton-paragraphs sl-skeleton:last-child {
|
||
width: 50%;
|
||
}
|
||
</style>
|
||
|
||
<div class="code-preview__resizer">
|
||
<sl-icon name="grip-vertical"></sl-icon>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__source-group" id="code-preview-source-group-274">
|
||
<div class="code-preview__source code-preview__source--html" data-flavor="html">
|
||
<pre><code class="language-html" id="code-block-855"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-paragraphs<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
|
||
<span class="token selector">.skeleton-paragraphs sl-skeleton</span> <span class="token punctuation">{</span>
|
||
<span class="token property">margin-bottom</span><span class="token punctuation">:</span> 1rem<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-paragraphs sl-skeleton:nth-child(2)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 95%<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-paragraphs sl-skeleton:nth-child(4)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 90%<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-paragraphs sl-skeleton:last-child</span> <span class="token punctuation">{</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 50%<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-855"></sl-copy-button></pre>
|
||
</div>
|
||
|
||
<div class="code-preview__source code-preview__source--react" data-flavor="react">
|
||
<pre><code class="language-jsx" id="code-block-856"><span class="token keyword">import</span> SlSkeleton <span class="token keyword">from</span> <span class="token string">'@onsonr/nebula/dist/react/skeleton'</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> css <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
||
.skeleton-paragraphs sl-skeleton {
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.skeleton-paragraphs sl-skeleton:nth-child(2) {
|
||
width: 95%;
|
||
}
|
||
|
||
.skeleton-paragraphs sl-skeleton:nth-child(4) {
|
||
width: 90%;
|
||
}
|
||
|
||
.skeleton-paragraphs sl-skeleton:last-child {
|
||
width: 50%;
|
||
}
|
||
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> <span class="token function-variable function">App</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-paragraphs<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">{css}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span></span><span class="token punctuation">></span></span>
|
||
<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-856"></sl-copy-button></pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__buttons">
|
||
<button
|
||
type="button"
|
||
class="code-preview__button code-preview__toggle"
|
||
aria-expanded="false"
|
||
aria-controls="code-preview-source-group-274"
|
||
>
|
||
Source
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<polyline points="6 9 12 15 18 9"></polyline>
|
||
</svg>
|
||
</button>
|
||
|
||
<button type="button" title="Show HTML code" class="code-preview__button code-preview__button--html">
|
||
HTML
|
||
</button>
|
||
|
||
<button type="button" title="Show React code" class="code-preview__button code-preview__button--react">
|
||
React
|
||
</button>
|
||
|
||
<button type="button" class="code-preview__button code-preview__button--codepen" title="Edit on CodePen">
|
||
<svg
|
||
width="138"
|
||
height="26"
|
||
viewBox="0 0 138 26"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2.3"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<path
|
||
d="M80 6h-9v14h9 M114 6h-9 v14h9 M111 13h-6 M77 13h-6 M122 20V6l11 14V6 M22 16.7L33 24l11-7.3V9.3L33 2L22 9.3V16.7z M44 16.7L33 9.3l-11 7.4 M22 9.3l11 7.3 l11-7.3 M33 2v7.3 M33 16.7V24 M88 14h6c2.2 0 4-1.8 4-4s-1.8-4-4-4h-6v14 M15 8c-1.3-1.3-3-2-5-2c-4 0-7 3-7 7s3 7 7 7 c2 0 3.7-0.8 5-2 M64 13c0 4-3 7-7 7h-5V6h5C61 6 64 9 64 13z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<h3 id="avatars" class="anchor-heading">
|
||
Avatars<a href="#avatars" aria-label='Direct link to "Avatars"'></a>
|
||
</h3>
|
||
<p>Set a matching width and height to make a circle, square, or rounded avatar skeleton.</p>
|
||
|
||
<div class="code-preview">
|
||
<div class="code-preview__preview">
|
||
<div class="skeleton-avatars">
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
<sl-skeleton></sl-skeleton>
|
||
</div>
|
||
|
||
<style>
|
||
.skeleton-avatars sl-skeleton {
|
||
display: inline-block;
|
||
width: 3rem;
|
||
height: 3rem;
|
||
margin-right: 0.5rem;
|
||
}
|
||
|
||
.skeleton-avatars sl-skeleton:nth-child(1) {
|
||
--border-radius: 0;
|
||
}
|
||
|
||
.skeleton-avatars sl-skeleton:nth-child(2) {
|
||
--border-radius: var(--sl-border-radius-medium);
|
||
}
|
||
</style>
|
||
|
||
<div class="code-preview__resizer">
|
||
<sl-icon name="grip-vertical"></sl-icon>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__source-group" id="code-preview-source-group-275">
|
||
<div class="code-preview__source code-preview__source--html" data-flavor="html">
|
||
<pre><code class="language-html" id="code-block-857"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-avatars<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
|
||
<span class="token selector">.skeleton-avatars sl-skeleton</span> <span class="token punctuation">{</span>
|
||
<span class="token property">display</span><span class="token punctuation">:</span> inline-block<span class="token punctuation">;</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 3rem<span class="token punctuation">;</span>
|
||
<span class="token property">height</span><span class="token punctuation">:</span> 3rem<span class="token punctuation">;</span>
|
||
<span class="token property">margin-right</span><span class="token punctuation">:</span> 0.5rem<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-avatars sl-skeleton:nth-child(1)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">--border-radius</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-avatars sl-skeleton:nth-child(2)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">--border-radius</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--sl-border-radius-medium<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-857"></sl-copy-button></pre>
|
||
</div>
|
||
|
||
<div class="code-preview__source code-preview__source--react" data-flavor="react">
|
||
<pre><code class="language-jsx" id="code-block-858"><span class="token keyword">import</span> SlSkeleton <span class="token keyword">from</span> <span class="token string">'@onsonr/nebula/dist/react/skeleton'</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> css <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
||
.skeleton-avatars sl-skeleton {
|
||
display: inline-block;
|
||
width: 3rem;
|
||
height: 3rem;
|
||
margin-right: .5rem;
|
||
}
|
||
|
||
.skeleton-avatars sl-skeleton:nth-child(1) {
|
||
--border-radius: 0;
|
||
}
|
||
|
||
.skeleton-avatars sl-skeleton:nth-child(2) {
|
||
--border-radius: var(--sl-border-radius-medium);
|
||
}
|
||
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> <span class="token function-variable function">App</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-avatars<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">{css}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span></span><span class="token punctuation">></span></span>
|
||
<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-858"></sl-copy-button></pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__buttons">
|
||
<button
|
||
type="button"
|
||
class="code-preview__button code-preview__toggle"
|
||
aria-expanded="false"
|
||
aria-controls="code-preview-source-group-275"
|
||
>
|
||
Source
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<polyline points="6 9 12 15 18 9"></polyline>
|
||
</svg>
|
||
</button>
|
||
|
||
<button type="button" title="Show HTML code" class="code-preview__button code-preview__button--html">
|
||
HTML
|
||
</button>
|
||
|
||
<button type="button" title="Show React code" class="code-preview__button code-preview__button--react">
|
||
React
|
||
</button>
|
||
|
||
<button type="button" class="code-preview__button code-preview__button--codepen" title="Edit on CodePen">
|
||
<svg
|
||
width="138"
|
||
height="26"
|
||
viewBox="0 0 138 26"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2.3"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<path
|
||
d="M80 6h-9v14h9 M114 6h-9 v14h9 M111 13h-6 M77 13h-6 M122 20V6l11 14V6 M22 16.7L33 24l11-7.3V9.3L33 2L22 9.3V16.7z M44 16.7L33 9.3l-11 7.4 M22 9.3l11 7.3 l11-7.3 M33 2v7.3 M33 16.7V24 M88 14h6c2.2 0 4-1.8 4-4s-1.8-4-4-4h-6v14 M15 8c-1.3-1.3-3-2-5-2c-4 0-7 3-7 7s3 7 7 7 c2 0 3.7-0.8 5-2 M64 13c0 4-3 7-7 7h-5V6h5C61 6 64 9 64 13z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<h3 id="custom-shapes" class="anchor-heading">
|
||
Custom Shapes<a href="#custom-shapes" aria-label='Direct link to "Custom Shapes"'></a>
|
||
</h3>
|
||
<p>
|
||
Use the <code>--border-radius</code> custom property to make circles, squares, and rectangles. For more
|
||
complex shapes, you can apply <code>clip-path</code> to the <code>indicator</code> part.
|
||
<a href="https://bennettfeely.com/clippy/" class="external-link" rel="noopener noreferrer" target="_blank"
|
||
>Try Clippy</a
|
||
>
|
||
if you need help generating custom shapes.
|
||
</p>
|
||
|
||
<div class="code-preview">
|
||
<div class="code-preview__preview">
|
||
<div class="skeleton-shapes">
|
||
<sl-skeleton class="square"></sl-skeleton>
|
||
<sl-skeleton class="circle"></sl-skeleton>
|
||
<sl-skeleton class="triangle"></sl-skeleton>
|
||
<sl-skeleton class="cross"></sl-skeleton>
|
||
<sl-skeleton class="comment"></sl-skeleton>
|
||
</div>
|
||
|
||
<style>
|
||
.skeleton-shapes sl-skeleton {
|
||
display: inline-flex;
|
||
width: 50px;
|
||
height: 50px;
|
||
}
|
||
|
||
.skeleton-shapes .square::part(indicator) {
|
||
--border-radius: var(--sl-border-radius-medium);
|
||
}
|
||
|
||
.skeleton-shapes .circle::part(indicator) {
|
||
--border-radius: var(--sl-border-radius-circle);
|
||
}
|
||
|
||
.skeleton-shapes .triangle::part(indicator) {
|
||
--border-radius: 0;
|
||
clip-path: polygon(50% 0, 0 100%, 100% 100%);
|
||
}
|
||
|
||
.skeleton-shapes .cross::part(indicator) {
|
||
--border-radius: 0;
|
||
clip-path: polygon(
|
||
20% 0%,
|
||
0% 20%,
|
||
30% 50%,
|
||
0% 80%,
|
||
20% 100%,
|
||
50% 70%,
|
||
80% 100%,
|
||
100% 80%,
|
||
70% 50%,
|
||
100% 20%,
|
||
80% 0%,
|
||
50% 30%
|
||
);
|
||
}
|
||
|
||
.skeleton-shapes .comment::part(indicator) {
|
||
--border-radius: 0;
|
||
clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 75%, 75% 100%, 50% 75%, 0% 75%);
|
||
}
|
||
|
||
.skeleton-shapes sl-skeleton:not(:last-child) {
|
||
margin-right: 0.5rem;
|
||
}
|
||
</style>
|
||
|
||
<div class="code-preview__resizer">
|
||
<sl-icon name="grip-vertical"></sl-icon>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__source-group" id="code-preview-source-group-276">
|
||
<div class="code-preview__source code-preview__source--html" data-flavor="html">
|
||
<pre><code class="language-html" id="code-block-859"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-shapes<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>square<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>circle<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>triangle<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cross<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>comment<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
|
||
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
|
||
<span class="token selector">.skeleton-shapes sl-skeleton</span> <span class="token punctuation">{</span>
|
||
<span class="token property">display</span><span class="token punctuation">:</span> inline-flex<span class="token punctuation">;</span>
|
||
<span class="token property">width</span><span class="token punctuation">:</span> 50px<span class="token punctuation">;</span>
|
||
<span class="token property">height</span><span class="token punctuation">:</span> 50px<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-shapes .square::part(indicator)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">--border-radius</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--sl-border-radius-medium<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-shapes .circle::part(indicator)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">--border-radius</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--sl-border-radius-circle<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-shapes .triangle::part(indicator)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">--border-radius</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span>
|
||
<span class="token property">clip-path</span><span class="token punctuation">:</span> <span class="token function">polygon</span><span class="token punctuation">(</span>50% 0<span class="token punctuation">,</span> 0 100%<span class="token punctuation">,</span> 100% 100%<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-shapes .cross::part(indicator)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">--border-radius</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span>
|
||
<span class="token property">clip-path</span><span class="token punctuation">:</span> <span class="token function">polygon</span><span class="token punctuation">(</span>
|
||
20% 0%<span class="token punctuation">,</span>
|
||
0% 20%<span class="token punctuation">,</span>
|
||
30% 50%<span class="token punctuation">,</span>
|
||
0% 80%<span class="token punctuation">,</span>
|
||
20% 100%<span class="token punctuation">,</span>
|
||
50% 70%<span class="token punctuation">,</span>
|
||
80% 100%<span class="token punctuation">,</span>
|
||
100% 80%<span class="token punctuation">,</span>
|
||
70% 50%<span class="token punctuation">,</span>
|
||
100% 20%<span class="token punctuation">,</span>
|
||
80% 0%<span class="token punctuation">,</span>
|
||
50% 30%
|
||
<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-shapes .comment::part(indicator)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">--border-radius</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span>
|
||
<span class="token property">clip-path</span><span class="token punctuation">:</span> <span class="token function">polygon</span><span class="token punctuation">(</span>0% 0%<span class="token punctuation">,</span> 100% 0%<span class="token punctuation">,</span> 100% 75%<span class="token punctuation">,</span> 75% 75%<span class="token punctuation">,</span> 75% 100%<span class="token punctuation">,</span> 50% 75%<span class="token punctuation">,</span> 0% 75%<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token selector">.skeleton-shapes sl-skeleton:not(:last-child)</span> <span class="token punctuation">{</span>
|
||
<span class="token property">margin-right</span><span class="token punctuation">:</span> 0.5rem<span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-859"></sl-copy-button></pre>
|
||
</div>
|
||
|
||
<div class="code-preview__source code-preview__source--react" data-flavor="react">
|
||
<pre><code class="language-jsx" id="code-block-860"><span class="token keyword">import</span> SlSkeleton <span class="token keyword">from</span> <span class="token string">'@onsonr/nebula/dist/react/skeleton'</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> css <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
||
.skeleton-shapes sl-skeleton {
|
||
display: inline-flex;
|
||
width: 50px;
|
||
height: 50px;
|
||
}
|
||
|
||
.skeleton-shapes .square::part(indicator) {
|
||
--border-radius: var(--sl-border-radius-medium);
|
||
}
|
||
|
||
.skeleton-shapes .circle::part(indicator) {
|
||
--border-radius: var(--sl-border-radius-circle);
|
||
}
|
||
|
||
.skeleton-shapes .triangle::part(indicator) {
|
||
--border-radius: 0;
|
||
clip-path: polygon(50% 0, 0 100%, 100% 100%);
|
||
}
|
||
|
||
.skeleton-shapes .cross::part(indicator) {
|
||
--border-radius: 0;
|
||
clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
|
||
}
|
||
|
||
.skeleton-shapes .comment::part(indicator) {
|
||
--border-radius: 0;
|
||
clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 75%, 75% 100%, 50% 75%, 0% 75%);
|
||
}
|
||
|
||
.skeleton-shapes sl-skeleton:not(:last-child) {
|
||
margin-right: .5rem;
|
||
}
|
||
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> <span class="token function-variable function">App</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>skeleton-shapes<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>square<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>circle<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>triangle<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cross<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>comment<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">{css}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>style</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span></span><span class="token punctuation">></span></span>
|
||
<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-860"></sl-copy-button></pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__buttons">
|
||
<button
|
||
type="button"
|
||
class="code-preview__button code-preview__toggle"
|
||
aria-expanded="false"
|
||
aria-controls="code-preview-source-group-276"
|
||
>
|
||
Source
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<polyline points="6 9 12 15 18 9"></polyline>
|
||
</svg>
|
||
</button>
|
||
|
||
<button type="button" title="Show HTML code" class="code-preview__button code-preview__button--html">
|
||
HTML
|
||
</button>
|
||
|
||
<button type="button" title="Show React code" class="code-preview__button code-preview__button--react">
|
||
React
|
||
</button>
|
||
|
||
<button type="button" class="code-preview__button code-preview__button--codepen" title="Edit on CodePen">
|
||
<svg
|
||
width="138"
|
||
height="26"
|
||
viewBox="0 0 138 26"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2.3"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<path
|
||
d="M80 6h-9v14h9 M114 6h-9 v14h9 M111 13h-6 M77 13h-6 M122 20V6l11 14V6 M22 16.7L33 24l11-7.3V9.3L33 2L22 9.3V16.7z M44 16.7L33 9.3l-11 7.4 M22 9.3l11 7.3 l11-7.3 M33 2v7.3 M33 16.7V24 M88 14h6c2.2 0 4-1.8 4-4s-1.8-4-4-4h-6v14 M15 8c-1.3-1.3-3-2-5-2c-4 0-7 3-7 7s3 7 7 7 c2 0 3.7-0.8 5-2 M64 13c0 4-3 7-7 7h-5V6h5C61 6 64 9 64 13z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<h3 id="custom-colors" class="anchor-heading">
|
||
Custom Colors<a href="#custom-colors" aria-label='Direct link to "Custom Colors"'></a>
|
||
</h3>
|
||
<p>
|
||
Set the <code>--color</code> and <code>--sheen-color</code> custom properties to adjust the skeleton’s
|
||
color.
|
||
</p>
|
||
|
||
<div class="code-preview">
|
||
<div class="code-preview__preview">
|
||
<sl-skeleton effect="sheen" style="--color: tomato; --sheen-color: #ffb094"></sl-skeleton>
|
||
|
||
<div class="code-preview__resizer">
|
||
<sl-icon name="grip-vertical"></sl-icon>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__source-group" id="code-preview-source-group-277">
|
||
<div class="code-preview__source code-preview__source--html" data-flavor="html">
|
||
<pre><code class="language-html" id="code-block-861"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>sl-skeleton</span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sheen<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">--color</span><span class="token punctuation">:</span> tomato<span class="token punctuation">;</span> <span class="token property">--sheen-color</span><span class="token punctuation">:</span> #ffb094<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>sl-skeleton</span><span class="token punctuation">></span></span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-861"></sl-copy-button></pre>
|
||
</div>
|
||
|
||
<div class="code-preview__source code-preview__source--react" data-flavor="react">
|
||
<pre><code class="language-jsx" id="code-block-862"><span class="token keyword">import</span> SlSkeleton <span class="token keyword">from</span> <span class="token string">'@onsonr/nebula/dist/react/skeleton'</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> css <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
||
.skeleton-avatars sl-skeleton {
|
||
display: inline-block;
|
||
width: 3rem;
|
||
height: 3rem;
|
||
margin-right: .5rem;
|
||
}
|
||
|
||
.skeleton-avatars sl-skeleton:nth-child(1) {
|
||
--border-radius: 0;
|
||
}
|
||
|
||
.skeleton-avatars sl-skeleton:nth-child(2) {
|
||
--border-radius: var(--sl-border-radius-medium);
|
||
}
|
||
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
|
||
|
||
<span class="token keyword">const</span> <span class="token function-variable function">App</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SlSkeleton</span></span> <span class="token attr-name">effect</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sheen<span class="token punctuation">"</span></span> <span class="token attr-name">style</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">{</span> <span class="token string-property property">'--color'</span><span class="token operator">:</span> <span class="token string">'tomato'</span><span class="token punctuation">,</span> <span class="token string-property property">'--sheen-color'</span><span class="token operator">:</span> <span class="token string">'#ffb094'</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span>
|
||
</code><sl-copy-button class="copy-code-button" from="code-block-862"></sl-copy-button></pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="code-preview__buttons">
|
||
<button
|
||
type="button"
|
||
class="code-preview__button code-preview__toggle"
|
||
aria-expanded="false"
|
||
aria-controls="code-preview-source-group-277"
|
||
>
|
||
Source
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<polyline points="6 9 12 15 18 9"></polyline>
|
||
</svg>
|
||
</button>
|
||
|
||
<button type="button" title="Show HTML code" class="code-preview__button code-preview__button--html">
|
||
HTML
|
||
</button>
|
||
|
||
<button type="button" title="Show React code" class="code-preview__button code-preview__button--react">
|
||
React
|
||
</button>
|
||
|
||
<button type="button" class="code-preview__button code-preview__button--codepen" title="Edit on CodePen">
|
||
<svg
|
||
width="138"
|
||
height="26"
|
||
viewBox="0 0 138 26"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="2.3"
|
||
stroke-linecap="round"
|
||
stroke-linejoin="round"
|
||
>
|
||
<path
|
||
d="M80 6h-9v14h9 M114 6h-9 v14h9 M111 13h-6 M77 13h-6 M122 20V6l11 14V6 M22 16.7L33 24l11-7.3V9.3L33 2L22 9.3V16.7z M44 16.7L33 9.3l-11 7.4 M22 9.3l11 7.3 l11-7.3 M33 2v7.3 M33 16.7V24 M88 14h6c2.2 0 4-1.8 4-4s-1.8-4-4-4h-6v14 M15 8c-1.3-1.3-3-2-5-2c-4 0-7 3-7 7s3 7 7 7 c2 0 3.7-0.8 5-2 M64 13c0 4-3 7-7 7h-5V6h5C61 6 64 9 64 13z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<h2 id="importing" class="anchor-heading">
|
||
Importing<a href="#importing" aria-label='Direct link to "Importing"'></a>
|
||
</h2>
|
||
<p>
|
||
If you’re using the autoloader or the traditional loader, you can ignore this section. Otherwise, feel free
|
||
to use any of the following snippets to
|
||
<a href="/getting-started/installation#cherry-picking">cherry pick</a> this component.
|
||
</p>
|
||
|
||
<sl-tab-group>
|
||
<sl-tab slot="nav" panel="script">Script</sl-tab>
|
||
<sl-tab slot="nav" panel="import">Import</sl-tab>
|
||
<sl-tab slot="nav" panel="bundler">Bundler</sl-tab>
|
||
<sl-tab slot="nav" panel="react">React</sl-tab>
|
||
|
||
<sl-tab-panel name="script">
|
||
<p>
|
||
To import this component from
|
||
<a
|
||
href="https://www.jsdelivr.com/package/npm/@onsonr/nebula"
|
||
class="external-link"
|
||
rel="noopener noreferrer"
|
||
target="_blank"
|
||
>the CDN</a
|
||
>
|
||
using a script tag:
|
||
</p>
|
||
<pre><code class="language-html" id="code-block-863"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>module<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/@onsonr/nebula@0.0.10/cdn/components/skeleton/skeleton.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></code><sl-copy-button class="copy-code-button" from="code-block-863"></sl-copy-button></pre>
|
||
</sl-tab-panel>
|
||
|
||
<sl-tab-panel name="import">
|
||
<p>
|
||
To import this component from
|
||
<a
|
||
href="https://www.jsdelivr.com/package/npm/@onsonr/nebula"
|
||
class="external-link"
|
||
rel="noopener noreferrer"
|
||
target="_blank"
|
||
>the CDN</a
|
||
>
|
||
using a JavaScript import:
|
||
</p>
|
||
<pre><code class="language-js" id="code-block-864"><span class="token keyword">import</span> <span class="token string">'https://cdn.jsdelivr.net/npm/@onsonr/nebula@0.0.10/cdn/components/skeleton/skeleton.js'</span><span class="token punctuation">;</span></code><sl-copy-button class="copy-code-button" from="code-block-864"></sl-copy-button></pre>
|
||
</sl-tab-panel>
|
||
|
||
<sl-tab-panel name="bundler">
|
||
<p>To import this component using <a href="/getting-started/installation#bundling">a bundler</a>:</p>
|
||
<pre><code class="language-js" id="code-block-865"><span class="token keyword">import</span> <span class="token string">'@onsonr/nebula/dist/components/skeleton/skeleton.js'</span><span class="token punctuation">;</span></code><sl-copy-button class="copy-code-button" from="code-block-865"></sl-copy-button></pre>
|
||
</sl-tab-panel>
|
||
|
||
<sl-tab-panel name="react">
|
||
<p>To import this component as a <a href="/frameworks/react">React component</a>:</p>
|
||
<pre><code class="language-js" id="code-block-866"><span class="token keyword">import</span> SlSkeleton <span class="token keyword">from</span> <span class="token string">'@onsonr/nebula/dist/react/skeleton'</span><span class="token punctuation">;</span></code><sl-copy-button class="copy-code-button" from="code-block-866"></sl-copy-button></pre>
|
||
</sl-tab-panel>
|
||
</sl-tab-group>
|
||
|
||
<h2 id="properties" class="anchor-heading">
|
||
Properties<a href="#properties" aria-label='Direct link to "Properties"'></a>
|
||
</h2>
|
||
|
||
<div class="table-scroll">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th class="table-name">Name</th>
|
||
<th class="table-description">Description</th>
|
||
<th class="table-reflects">Reflects</th>
|
||
<th class="table-type">Type</th>
|
||
<th class="table-default">Default</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<code class="nowrap">effect</code>
|
||
</td>
|
||
<td>Determines which effect the skeleton will use.</td>
|
||
<td style="text-align: center"></td>
|
||
<td>
|
||
<code>'pulse' | 'sheen' | 'none'</code>
|
||
</td>
|
||
<td>
|
||
<code>'none'</code>
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="nowrap"><code>updateComplete</code></td>
|
||
<td>
|
||
A read-only promise that resolves when the component has
|
||
<a href="/getting-started/usage?#component-rendering-and-updating">finished updating</a>.
|
||
</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<p>
|
||
<em
|
||
>Learn more about
|
||
<a href="/getting-started/usage#attributes-and-properties">attributes and properties</a>.</em
|
||
>
|
||
</p>
|
||
|
||
<h2 id="custom-properties" class="anchor-heading">
|
||
Custom Properties<a href="#custom-properties" aria-label='Direct link to "Custom Properties"'></a>
|
||
</h2>
|
||
|
||
<div class="table-scroll">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th class="table-name">Name</th>
|
||
<th class="table-description">Description</th>
|
||
<th class="table-default">Default</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="nowrap"><code>--border-radius</code></td>
|
||
<td>The skeleton’s border radius.</td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="nowrap"><code>--color</code></td>
|
||
<td>The color of the skeleton.</td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="nowrap"><code>--sheen-color</code></td>
|
||
<td>The sheen color when the skeleton is in its loading state.</td>
|
||
<td></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<p>
|
||
<em
|
||
>Learn more about
|
||
<a href="/getting-started/usage#custom-properties">customizing CSS custom properties</a>.</em
|
||
>
|
||
</p>
|
||
|
||
<h2 id="parts" class="anchor-heading">Parts<a href="#parts" aria-label='Direct link to "Parts"'></a></h2>
|
||
|
||
<div class="table-scroll">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th class="table-name">Name</th>
|
||
<th class="table-description">Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="nowrap"><code>base</code></td>
|
||
<td>The component’s base wrapper.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="nowrap"><code>indicator</code></td>
|
||
<td>The skeleton’s indicator which is responsible for its color and animation.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<p>
|
||
<em>Learn more about <a href="/getting-started/customizing/#css-parts">customizing CSS parts</a>.</em>
|
||
</p>
|
||
</div>
|
||
</article>
|
||
</main>
|
||
</body>
|
||
</html>
|