- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Attachment
- Avatar
- Badge
- Breadcrumb
- Bubble
- Button
- Button Group
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Context Menu
- Data Table
- Date Picker
- Dialog
- Direction
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Input OTP
- Item
- Kbd
- Label
- Marker
- Menubar
- Message
- Message Scroller
- Native Select
- Navigation Menu
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Resizable
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Toggle Group
- Tooltip
- Typography
Generating response…
export function ShimmerDemo() {
return (
<p className="shimmer text-sm text-muted-foreground">インストール#
npx shadcn@latest init でプロジェクトを設定している場合は、すでに shimmer を利用できます。shadcn パッケージに含まれており、CLI がグローバル CSS ファイルにインポートします。
それ以外の場合は、shadcn パッケージをインストールします。
pnpm add shadcn
次に、共有ユーティリティをグローバル CSS ファイルにインポートします。
@import "tailwindcss";
@import "shadcn/tailwind.css";使い方#
| Class | Styles |
|---|---|
shimmer | background-clip: text; animation: tw-shimmer var(--shimmer-duration, 2s) linear infinite; |
shimmer-once | animation-iteration-count: 1; |
shimmer-reverse | animation-direction: reverse; |
shimmer-none | --shimmer-image: none; --shimmer-text-fill: currentColor; |
shimmer-color-<color> | --shimmer-color: <color>; |
shimmer-color-[<value>] | --shimmer-color: <value>; |
shimmer-color-<color>/<pct> | --shimmer-color: color-mix(in oklch, <color> <pct>, transparent); |
shimmer-duration-<number> | --shimmer-duration: calc(<number> * 1ms); |
shimmer-spread-<number> | --shimmer-spread: calc(var(--spacing) * <number>); |
shimmer-spread-[<value>] | --shimmer-spread: <value>; |
shimmer-angle-<number> | --shimmer-angle: calc(<number> * 1deg); |
shimmer をテキスト要素に追加します。
<p className="shimmer text-muted-foreground">Generating response…</p>シマーは currentColor に基づいて構築されるため、次の要素に適応します。
- ハイライトはテキストの色から派生し、構成は必要ありません。
text-muted-foregroundからブランドカラーまで、あらゆる色に対応します。- ダーク モードでは、ハイライトが自動的に明るくなり、視認性が維持されます。
効果は純粋な CSS で実現されています。テキストは background-clip: text で描画され、ハイライトが継ぎ目なくループして横切ります。
マーカー付き#
シマーはテキストを描画する任意のコンポーネントと組み合わせられます。よくあるパターンは、アシスタントの処理中にライブ状態を表示する Marker です。
import { Marker, MarkerContent, MarkerIcon } from "@/components/ui/base/marker"
import { Spinner } from "@/components/ui/base/spinner"
<Marker role="status">
<MarkerIcon>
<Spinner />
</MarkerIcon>
<MarkerContent className="shimmer">Thinking…</MarkerContent>
</Marker>カラー#
shimmer-color-<color> を使うとハイライト色を明示的に設定できます。任意の不透明度修飾子付きテーマ色や、任意の色の値を受け取ります。
Generating response…
Generating response…
export function ShimmerColor() {
return (
<div className="flex flex-col items-center gap-2 text-sm text-muted-foreground"><p className="shimmer shimmer-color-blue-500/60">Generating response…</p>
<p className="shimmer shimmer-color-[#378ADD]">Generating response…</p>期間#
shimmer-duration-<number> を使用して、1 回のスイープにかかる時間をミリ秒単位で設定します。デフォルトは 2000(つまり 2s)です。
Generating response…
shimmer
Generating response…
shimmer-duration-1000
export function ShimmerDuration() {
return (
<div className="mx-auto grid w-full max-w-lg gap-6 text-center text-sm text-muted-foreground sm:grid-cols-2"><p className="shimmer shimmer-duration-1000">Generating response…</p>広がり#
shimmer-spread-<number> を使用して、間隔スケールに基づきハイライト バンドの幅を設定します。デフォルトは calc(3ch + 40px) で、固定のベース値に、フォント サイズに応じて拡大縮小する 3ch 分の項を加えたものです。
Generating response…
shimmer-spread-4
Generating response…
shimmer-spread-24
export function ShimmerSpread() {
return (
<div className="mx-auto grid w-full max-w-lg gap-6 text-center text-sm text-muted-foreground sm:grid-cols-2"><p className="shimmer shimmer-spread-24">Generating response…</p>一度だけ使う値には、任意の長さまたはパーセンテージを指定します。
<p className="shimmer shimmer-spread-[5rem]">Generating response…</p>角度#
shimmer-angle-<number> を使用して、ハイライト バンドの傾きを度単位で設定します。デフォルトは 20 です。
Generating response…
shimmer
Generating response…
shimmer-angle-45
export function ShimmerAngle() {
return (
<div className="mx-auto grid w-full max-w-lg gap-6 text-center text-sm text-muted-foreground sm:grid-cols-2"><p className="shimmer shimmer-angle-45">Generating response…</p>反転#
shimmer-reverse を使用して、ハイライトを反対方向にスイープします。 RTL レイアウトでは、スイープはすでに読み取り方向に従います。 RTL を参照してください。
<p className="shimmer shimmer-reverse">Generating response…</p>1 回だけ再生する#
shimmer-once を使用すると、ループの代わりに単一のスイープを再生できます。これは、ストリーミング完了時のリビールとして役立ちます。 shimmer-duration-<number> と組み合わせて、スイープにかかる時間を制御します。
Generating response…
"use client"
import * as React from "react"<p className="shimmer shimmer-duration-1100 shimmer-once">
Response generated.
</p>シマーを無効にする#
shimmer-none を使うと効果を無効にし、テキストを通常どおり描画します。クラスの順序に関係なく動作するため、レスポンシブまたは状態に応じた使い方ができます。
Generating response…
shimmer md:shimmer-none
export function ShimmerNone() {
return (
<div className="flex flex-col items-center gap-3 text-sm text-muted-foreground"><p className="shimmer md:shimmer-none">Generating response…</p>フォールバック#
シマーは、現在のすべてのブラウザで利用できる最新のカラー機能、相対カラー構文 および color-mix() に基づいて構築されています。サポートされていない古いブラウザでは、ハイライトのグラデーションが削除され、テキストが透明になる可能性があります。古いブラウザを対象とする場合は、supports-* バリアントを使用して shimmer を条件付きで適用します。
<p className="supports-[color:oklch(from_white_l_c_h)]:shimmer">
Generating response…
</p>視覚効果を減らす#
ユーザーが動きを減らしたい場合、アニメーションは自動的に無効になり、テキストは通常どおり表示されます。設定するものは何もありません。
RTL#
shadcn/ui で RTL サポートを有効にするには、RTL 構成ガイドを参照してください。
スイープは読み取り方向 (LTR では左から右、RTL では右から左) に従います。追加のクラスはありません。方向を手動で反転するには、shimmer-reverse を使用します。
Generating response…
dir="ltr"
جارٍ إنشاء الرد…
dir="rtl"
export function ShimmerRtl() {
return (
<div className="mx-auto grid w-full max-w-lg gap-6 text-center text-sm text-muted-foreground sm:grid-cols-2">