SinglePage 動態語言

打造流暢可互動高效能的品牌頁面

這是 SinglePage Motion Lab 的示範頁,展示滑動、翻面、滾動 Reveal 等效果,全部只靠純 HTML / CSS / JS,即可快速整合到你的主站。

看看效果 製程說明

即時 Motion Mockup

點綴的色塊會緩慢浮動,卡片邊緣帶漸層光暈,模擬互動式作品集的感覺。

Intro Reveal 0.8s ease
Floating Orbit loop
Motion Slider

滑動展示 - 可操作的互動畫面

點擊按鈕或拖曳滑桿,會在不使用框架的情況下推動整列卡片。每張幻燈片都解釋不同的互動手法。

Slide 01

觸發動畫節奏

配合 IntersectionObserver,在進場時加入 .shown 類別,確保動畫只跑一次。

Slide 02

變更 CSS 變數

以 range slider 改寫 root 變數,用單一邏輯控制多個模組的速度或顏色。

Slide 03

視差 + 光暈

多層 radial gradient 與 translate 形成視覺深度,不需額外圖片即可達到霓虹感。

動態模組

流動視覺與互動元素

下方卡片具備 hover 光暈、滾動 reveal,以及半透明背景,適合展示作品、服務、案例亮點。

01

粒子光暈

背景使用多層 radial gradient,營造動態霓虹氛圍,無需額外圖檔。

02

浮動卡片

利用 keyframe 讓卡片緩慢上下飄移,搭配柔和陰影模擬 3D 掛牌。

03

滾動顯示

IntersectionObserver 監聽元素進場,附加 .shown class 即可滑入顯示。

Scroll Blocks

滾動進場的方塊

瀏覽時,每個方塊會由下往上滑入並放大。這種方式快速示範段落進場節奏。

Block A

Gradient Pulse

背景採用多層 gradient,再搭配透明邊框,節省圖像載入成本。

Block B

文本聚焦

內容露出時才啟用陰影,視覺焦點不會與上方卡片互搶。

Block C

按此排列

利用 CSS Grid 的 auto-fit,畫面寬度改變時自動調整列數。

Block D

結合 CTA

進場動畫也可搭配按鈕或圖示,增強召喚動作的存在感。

Interaction Lab

直接在頁面調整互動特效

拖曳滑桿、切換色系或觸發脈衝,即可立刻看到動畫回饋。這個區塊示範如何用無框架的原生 JS 連動 CSS 變數。

互動觸發

效能模式

Live Preview

自訂節奏 & 色彩

現在的浮動週期:8s

使用者可即時切換主題,並以按鈕觸發脈衝動畫,方便在會議上展示特效。

Try me → 調整滑桿 / 切換下拉 / 按下按鈕。
Flip Gallery

翻面卡片 - 另一種資訊展示

每張卡片提供前後兩面。按下按鈕或使用鍵盤 Enter 便可翻面,適合 FAQ 或技術細節。

Front

品牌定位

以關鍵詞、語調與主色勾勒觀眾期待。

Back

後端細節

列出素材來源與 tone;必要時附上 download link。

Front

Motion Blocks

解釋動畫節奏與 easing,讓客戶知道背後邏輯。

Back

實作重點

條列 CSS 變數設計、observer 訂閱、效能最佳化。

Front

Handoff

說明交付內容(程式碼、設計檔、文件)。

Back

客製機會

背面列出擴充方向:多語系、CMS、Lottie、WebGL 等。

Workflow

從概念到實際部署

每一步都搭配輕量動畫提示,確保用戶在瀏覽流程時能自然跟上節奏。

01 / Vision Mapping

根據品牌核心設定色彩節奏,製作 mood board 與動態參考。

02 / Prototype Motion

以 Figma / AfterEffects 模擬動態,並轉成純 CSS 或 Lottie 元件。

03 / Front-end & QA

透過 IntersectionObserver 控制 reveal 時間,實測效能與裝置相容性。

04 / Deployment

部署至 Firebase / Vercel / Cloudflare,並加入監測腳本追蹤互動指標。

Ready?

把你的品牌變成會呼吸的網站

這份示範頁的原始碼就是最佳參考。想要擴充 Parallax、WebGL、3D 模塊,都能在此基礎上加值。

寄信討論 回到頂部
body.motion-lite .glow{display:none;} body.motion-lite .floating-card{animation:none;box-shadow:0 10px 18px rgba(0,0,0,.35);} body.motion-lite .preview-card::before, body.motion-lite .preview-card::after{animation:none;opacity:.35;} body.motion-lite .slider-track{transition:transform .4s ease;} body.motion-lite .scroll-block{transition-duration:.4s;} body.motion-lite .flip-card .flip-inner{transition-duration:.5s;}