0% Loading frames…
Scrollytelling

เลื่อนหน้าจอ
คือการเล่าเรื่อง

เทคนิคที่เปลี่ยนทุก Scroll เป็นภาพเคลื่อนไหวที่มีชีวิต
ผู้ใช้คือผู้กำกับจังหวะของเรื่องราวด้วยตัวเอง

Claude Code × GSAP × Canvas

โค้ดซับซ้อน
สร้างได้ใน
ไม่กี่นาที

ใช้ AI เป็นผู้ช่วยเขียน Logic
คุณแค่บอกจังหวะ — Claude Code จัดการให้

เริ่มสร้างวันนี้

คุณก็ทำได้
เหมือนกัน

ไม่ต้องเป็น Developer ระดับ Senior
แค่รู้จักวิธีสั่ง AI ให้ถูกต้อง

SCROLL
0
เฟรมภาพ

Image Sequence ที่โหลดล่วงหน้าทั้งหมด

0 FPS
Frame Rate

ความลื่นไหลของ Canvas Animation

0 VH
Scroll Height

พื้นที่ Scroll ของ Scrollytelling Section

บทที่ 01

Scrollytelling
คืออะไร?

คำว่า Scrollytelling มาจาก Scroll + Storytelling — เทคนิคการออกแบบที่เนื้อหา แอนิเมชัน และการเปลี่ยนฉาก ถูกขับเคลื่อนด้วยการเลื่อนหน้าจอของผู้ใช้งาน ทำให้รู้สึกเหมือนเป็นคนควบคุมจังหวะการเล่าเรื่องด้วยตัวเอง

📄

เว็บไซต์ทั่วไป

  • ข้อความยาว อ่านน่าเบื่อ
  • วิดีโอเล่นตามเวลา (Time-based)
  • ผู้ใช้ตาม content ฝ่ายเดียว
  • ไม่มี Engagement
VS

Scrollytelling

  • แอนิเมชันตอบสนองนิ้วมือ
  • เล่นเมื่อ Scroll เท่านั้น (Scroll-based)
  • ผู้ใช้คือผู้กำกับจังหวะ
  • High Engagement & Premium Feel

เหมาะกับ

🚀 Product Launch
📊 Interactive Report
💡 SaaS & Tech Startup
🎨 Creative Portfolio
บทที่ 02

ทำไมต้องใช้
Claude Code?

01

ย่นเวลาจาก "หลายวัน"
เหลือ "ไม่กี่ชั่วโมง"

Claude Code เข้าใจโครงสร้างโฟลเดอร์และ Logic โค้ดซับซ้อนได้อย่างยอดเยี่ยม จัดการ Boilerplate ให้อัตโนมัติ

02

คุณเป็นแค่
Art Director

บอก AI ว่าต้องการจังหวะไหน หน้าตาเป็นอย่างไร แล้วให้ Claude Code จัดการ Logic การคำนวณเฟรม Memory และการซิงค์ Scroll

03

ไม่ต้องเป็น
Senior Dev

แค่รู้จักวิธีสั่งงาน AI ให้ถูกต้อง ด้วย Prompt ที่ดี คุณสร้างเว็บระดับ Apple ได้ในวันเดียว

เหมาะกับใคร?

Use Case
ที่น่าสนใจ

เทคนิคนี้ไม่ได้เหมาะกับทุกเว็บไซต์ แต่จะ ทรงพลังมาก เมื่อใช้กับโปรเจกต์ประเภทนี้

🚀

Product Launch Page

หน้า Landing Page เปิดตัวสินค้านวัตกรรม เช่น สมาร์ทโฟน รถยนต์ EV หรือเครื่องใช้ไฟฟ้าไฮเอนด์ ที่ต้องการโชว์รายละเอียดผ่านภาพเคลื่อนไหว

📰

Interactive Report / Documentary

เว็บไซต์แคมเปญพิเศษ รายงานประจำปี หรืองานนำเสนอข่าวเชิงลึก สไตล์ที่ New York Times และ The Guardian ใช้บอกเล่าเรื่องราวซับซ้อน

💡

SaaS & Tech Startup

หน้าอธิบายฟีเจอร์ซอฟต์แวร์ที่ต้องการโชว์ความล้ำสมัย ดึงดูดนักลงทุนและผู้ใช้งานด้วย Visual ระดับ Enterprise

🎨

Creative Portfolio

เว็บไซต์เอเจนซี่ หรือนักออกแบบที่ต้องการโชว์ของ สร้างความประทับใจแรกที่ทำให้ลูกค้าจำได้ไม่รู้ลืม

ตัวอย่างจริง

Showcase

ตัวอย่างการนำ Scrollytelling ไปใช้งานจริงกับ Product Launch Page ที่โหลดเร็ว ลื่นไหล และสร้างความประทับใจตั้งแต่วินาทีแรก

Scroll to explore
Tech Stack
HTML5 CSS3 JavaScript GSAP 3 ScrollTrigger HTML Canvas Claude Code WebP / AVIF Promise.all Kanit Font HTML5 CSS3 JavaScript GSAP 3 ScrollTrigger HTML Canvas Claude Code WebP / AVIF Promise.all Kanit Font
เครื่องมือที่จำเป็น

Tech Stack
เบื้องหลัง

🏗️
HTML / CSS
Structure & Layout

ขึ้นโครงสร้างหน้าเว็บและจัดการ Layout รวมถึงการตรึงหน้าจอด้วย position: sticky ซึ่งเป็นหัวใจสำคัญของ Scrollytelling

⚙️
JavaScript (Vanilla)
Logic & Control

เขียน Logic ควบคุมการทำงานทั้งหมด ตั้งแต่การโหลดภาพ การคำนวณเฟรม ไปจนถึงการวาดภาพลง Canvas แบบ Real-time

GSAP 3
Animation Platform

GreenSock Animation Platform — ไลบรารี Animation ระดับโลกที่ใช้ใน Production ของเว็บไซต์ชั้นนำ มีประสิทธิภาพสูงและ API เรียบง่าย

🖱️
GSAP ScrollTrigger
Scroll Plugin

Plugin ของ GSAP สำหรับจับการเลื่อนเมาส์แล้วผูกเข้ากับ Animation ใดก็ได้ รองรับ scrub, pin, และ snap ในตัว

🖼️
HTML Canvas
Rendering Surface

พื้นที่วาดรูปแบบ Bitmap ด้วย JavaScript โดยตรง ทำให้แสดงผลภาพ Sequence ได้ลื่นไหลโดยไม่ต้องพึ่ง DOM หรือ CSS Animation

🤖
Claude Code
AI Coding Assistant

AI Agent ที่ทำงานบน Command Line เข้าใจโครงสร้างโฟลเดอร์และ Logic ซับซ้อน ช่วยให้คุณเขียนโค้ดทั้งหมดด้านบนได้ในไม่กี่ชั่วโมง

ก่อนเริ่มเขียนโค้ด

เตรียม Assets
ให้พร้อมก่อน

หัวใจสำคัญของเทคนิคนี้คือ Image Sequence — ภาพนิ่งที่เรนเดอร์ออกมาจากวิดีโอหรือโปรแกรม 3D จำนวนหลายร้อยเฟรม

ตั้งชื่อไฟล์เรียงลำดับ เช่น frame_0001.webp ถึง frame_0150.webp
ใช้นามสกุล .webp หรือ .avif ขนาดไฟล์เล็กกว่า .jpg/.png มาก ช่วยให้โหลดเร็ว
เก็บไว้ในโฟลเดอร์เดียวกัน แนะนำ assets/sequence/
ควบคุมขนาดรวมไม่เกิน 15–20 MB ถ้าหนักเกินจะกระทบ Speed Score และเปลือง Data มือถือ

มีวิดีโออยู่แล้ว? สั่ง Claude Code แตกเฟรมให้เลย

Prompt สำหรับ Claude Code
ช่วยเขียน python script โดยใช้ ffmpeg
เพื่อดึงเฟรมจากวิดีโอชื่อ video.mp4
ออกมาเป็นรูปภาพนามสกุล .webp ที่ 30 fps
ตั้งชื่อไฟล์เรียงลำดับ เช่น frame_0001.webp
และเก็บไว้ในโฟลเดอร์ assets/sequence/
และรันสคริปต์ให้ด้วย
บทที่ 03

5 ขั้นตอนสร้าง
ด้วย Claude Code

01

โครงสร้าง HTML/CSS

สร้าง Section ความสูง 400vh พร้อม Sticky Container และ Canvas พื้นหลังดำสไตล์พรีเมียม

Layout & Structure
Prompt สำหรับ Claude Code
สร้างโปรเจกต์เว็บไซต์ประกอบด้วยไฟล์ index.html, style.css และ app.js
ในไฟล์ HTML ให้ดึง CDN ของ GSAP และ ScrollTrigger เข้ามา
สร้างโครงสร้างหน้าเว็บดังนี้:
- สร้าง <section id="scroll-sequence"> ให้มีความสูง 400vh
- ข้างใน ให้สร้าง div.sticky-container ที่มี CSS
  position: sticky, top: 0, ความสูง 100vh และ overflow: hidden
- ภายใน .sticky-container ให้ใส่ <canvas id="hero-canvas">
  ให้ canvas อยู่ตรงกลางจอ กว้าง 100% สูง 100vh
กำหนดพื้นหลังเป็นสีดำเพื่อให้แอนิเมชันดูโดดเด่นสไตล์พรีเมียม
02

Preload & Canvas Render

โหลดภาพทั้ง 150 เฟรมล่วงหน้าด้วย Promise.all และวาดลง Canvas พร้อมคำนวณ Aspect Ratio อัตโนมัติ

JavaScript Logic
Prompt สำหรับ Claude Code
ไปที่ไฟล์ app.js — ฉันมี Image Sequence ในโฟลเดอร์ assets/sequence/
ชื่อ frame_0001.webp ถึง frame_0150.webp
ช่วยเขียน JavaScript เพื่อทำสิ่งต่อไปนี้:
1. กำหนดขนาด Canvas ให้เป็น 1920x1080
2. เขียนฟังก์ชัน Preload รูปภาพทั้งหมดด้วย Promise.all
3. เมื่อภาพโหลดเสร็จ ให้ drawImage วาดเฟรมแรก (index 0)
4. สร้างฟังก์ชัน render(frameIndex)
*สำคัญ: คำนวณ Aspect Ratio ให้ภาพเต็ม Canvas โดยไม่บิดเบี้ยว
03

GSAP ScrollTrigger

ผูก Scroll กับ Frame Index ด้วย scrub: 0.5 ภาพขยับตามนิ้วมือแบบลื่นไหล 100%

Animation
Prompt สำหรับ Claude Code
ยังอยู่ใน app.js ช่วยเขียนโค้ด GSAP ScrollTrigger:
1. สร้าง Object → const seq = { frame: 0 };
2. ใช้ gsap.to() อนิเมต seq.frame จาก 0 → 149
3. ผูกกับ ScrollTrigger โดยใช้ #scroll-sequence เป็น trigger
4. กำหนด start: "top top" และ end: "bottom bottom"
5. ตั้งค่า scrub: 0.5 เพื่อความสมูท
6. ปัดค่าเฟรมให้เป็นจำนวนเต็มเสมอ
7. ใน onUpdate ให้เรียก render(seq.frame)
04

Scrollytelling Text

เพิ่มข้อความ 3 กลุ่มที่เฟดอิน/เอาท์ตามจังหวะภาพ ด้วย GSAP Timeline เดียวกัน

UI / Storytelling
Prompt สำหรับ Claude Code
กลับไปที่ index.html เพิ่ม Text Elements 3 กลุ่มใน .sticky-container
ให้อยู่ทับบน Canvas (position: absolute และ z-index สูงๆ)
จากนั้นใน app.js สร้าง GSAP Timeline ผูกกับ ScrollTrigger เดิม:
- กลุ่มที่ 1 → เฟดอิน 10%-30% แล้วเฟดเอาท์
- กลุ่มที่ 2 → เฟดอิน 40%-60% แล้วเฟดเอาท์
- กลุ่มที่ 3 → เฟดอิน 70%-90%
จัดจังหวะให้สัมพันธ์กับ Image Sequence ที่กำลังเล่น
05

Responsive & Fallback

รองรับทุกหน้าจอด้วย Resize Event และ Mobile Fallback ที่ประหยัดแบตและเน็ต

Production Ready
Prompt สำหรับ Claude Code
เพิ่มโค้ดใน app.js เพื่อทำให้โปรเจกต์สมบูรณ์:
1. Resize Event → เมื่อ resize ให้คำนวณ Canvas ใหม่
   และ render() ภาพปัจจุบันทันที
2. Mobile Fallback → ถ้าหน้าจอกว้างน้อยกว่า 768px
   ให้โหลดแค่ภาพนิ่งภาพเดียว ไม่ต้องโหลด 150 รูป
   และไม่ต้องเรียก GSAP ScrollTrigger ของ Canvas เลย
Pro Tips

เคล็ดลับก่อน
ขึ้น Production

Performance First

อย่าวาง Image Sequence ไว้บนสุดของเว็บ ให้ใส่ไว้ส่วนล่างเพื่อให้เบราว์เซอร์มีเวลาดาวน์โหลดก่อนผู้ใช้เลื่อนถึง

🖱️

No Scroll Jacking

ปล่อยให้ Scroll เป็นธรรมชาติ GSAP แค่รอรับค่าแล้วเปลี่ยนภาพ ห้ามเขียนโค้ดไปฝืน Scroll ของเมาส์เด็ดขาด

🗜️

Image Optimization

บีบอัดภาพให้เล็กสุด ถ้า 150 รูปหนักเกิน 15–20 MB จะกระทบ Speed Score และเปลือง Data มือถืออย่างมาก

พร้อมแล้วหรือยัง?

เริ่มสร้าง
Scrollytelling
ของคุณวันนี้

ด้วย Claude Code + GSAP + HTML Canvas
คุณสร้างได้ในไม่กี่ชั่วโมง

Claude Code× GSAP× Canvas