滾動效果

滾動變形斑點

隨滾動進度在多個有機形狀間變形的漸層斑點。

這是 WebberUI Pro 元件

下方的安裝指令需要授權才能執行,未授權時會回 401。

怎麼安裝 Pro 元件 →查看方案 →

以 useScroll 追蹤滾動進度,透過 useTransform 在多組結構一致的 SVG 路徑之間插值,斑點會如液體般在有機形狀間變形,同時交叉淡化多層漸層完成轉色,適合作為長頁面或滾動敘事的裝飾背景。

把這個效果裝進你的專案

在專案資料夾執行指令,CLI 會加入原始碼與依賴套件,再依下方使用範例引用元件。

npx webberui@latest add "https://webberui.com/r/scroll-morph-blob.json?t=<安裝 token>"

還沒有專案,或安裝遇到問題?看快速開始 →

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

280
60
編輯中的呼叫預設屬性
<ScrollMorphBlob/>

完整範例包含預覽的排版與資料。先安裝元件,再把範例檔貼入你的專案。

安裝

npx webberui@latest add "https://webberui.com/r/scroll-morph-blob.json?t=<安裝 token>"

或在 components.json 設定 registries 後,改用 @webberui/scroll-morph-blob 安裝。

使用

import * as React from "react";
import { ScrollMorphBlob } from "@/components/ui/scroll-morph-blob";

function ScrollStory() {
  const containerRef = React.useRef<HTMLDivElement>(null);

  return (
    <div ref={containerRef} className="relative h-[400px] overflow-y-auto">
      <div className="pointer-events-none sticky top-0 flex h-[400px] items-center justify-center">
        <ScrollMorphBlob containerRef={containerRef} size={240} />
      </div>
      <div className="relative -mt-[400px]">{/* 滾動內容分段… */}</div>
    </div>
  );
}

未提供 containerRef 時,斑點會改為追蹤整頁(viewport)的滾動進度。

Props

Prop型別預設值說明
containerRefReact.RefObject<HTMLElement | null>—滾動容器的 ref;未提供時追蹤整頁滾動進度
pathsstring[]內建 4 組blob 路徑序列(至少 2 組,SVG 指令結構必須一致才能插值)
colorsArray<[string, string]>內建 4 組每個形狀階段的漸層雙色,數量不足時循環使用
sizenumber280斑點邊長(px),SVG 以 200×200 viewBox 等比縮放
rotatenumber60捲動全程的累積旋轉角度(度),設 0 停用旋轉
glowbooleantrue是否在斑點後方疊加高斯模糊光暈
classNamestring—透傳到外層容器

可及性

  • 斑點為純裝飾元素,外層容器標記 aria-hidden,輔助科技會完全略過
  • 使用者系統開啟「減少動態效果」時,改為渲染第一組形狀與漸層的靜態斑點,不做變形、旋轉或縮放
  • 動畫完全由滾動進度驅動,沒有自動播放的動態,畫面變化與使用者輸入同步
  • pointer-events-none 確保斑點不會攔截點擊或滾動操作