Loading...
Loading...
Pin một section lại khi cuộn tới, rồi chuyển cuộn dọc thành cuộn ngang qua GSAP ScrollTrigger (pin + scrub + tween xPercent của track). Gọi khi user nói "gsap scrolltrigger", "pin section", "cuộn ngang", "horizontal scroll section", "scroll-driven horizontal", "pinned horizontal scroll", hoặc /gsap-scrolltrigger-pin. KHÁC `scroll-effects` (7 hiệu ứng nhẹ vanilla, không dependency, không pin) và `lenis-smooth-scroll` (làm mượt cuộn TOÀN TRANG, không pin/không đổi hướng cuộn) — skill này CẦN GSAP và chỉ áp dụng cho MỘT section pin cụ thể.
npx skill4agent add rheinmir/setup gsap-scrolltrigger-pinRheinmir/uiux-assetscroll-effectslenis-smooth-scroll[data-hp-section] > .hp-pin (pin) > [data-hp-track] (tween xPercent, scrub) > [data-hp-slide] × Nendtrack.scrollWidthrefresh()matchMedia| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | nội dung slide của section | có | case study / portfolio / sản phẩm |
| In | quyền kéo lib ngoài (GSAP) | có | không được kéo lib → dùng bản rút gọn |
| In | | không | có thì đổi token màu theo nó |
| Out | section pin + track ngang trong dự án | có | copy nguyên file gốc (giữ comment ghi công) hoặc adapt |
| Out | bằng chứng verify | có | pin đúng lúc, không overflow ngang, sống sót resize |
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>.../ScrollTrigger.min.jsnpm install gsapimport gsap from "gsap"; import { ScrollTrigger } from "gsap/ScrollTrigger"; gsap.registerPlugin(ScrollTrigger);prefers-reduced-motion: reduce.hp-pinoverflow-x: autoscroll-snap-type: x mandatoryxPercentxxPercentplaywright-verifyScrollTrigger.refresh()design.mdscroll-effectslenis-smooth-scrollfile://| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | judgment | yêu cầu | Xác nhận cần pin + cuộn ngang (không phải | chọn skill | không cần pin → chuyển skill khác |
| W02 | effect | bảng Pen gốc | Mở link chạy, copy nguyên file | file gốc trong dự án | không được kéo lib ngoài → B01 |
| W03 | effect | file + | Chỉ sửa nội dung/ảnh/màu | section đã adapt | — |
| W04 | deterministic | trang chạy qua HTTP | Verify RULE-04 bằng | assert xanh | đỏ → sửa, lặp W04 |
| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | conditional_required | dự án KHÔNG được kéo lib ngoài (bản gốc) | dùng bản rút gọn vanilla | vẫn cần GSAP (RULE-01) | W04 |
| B02 | conditional_required | | không init GSAP, CSS cuộn ngang thường (RULE-02) | — | W04 |
horizontal-scroll-section-with-gsap-and-locomotive-scroll.htmlRheinmir/uiux-assetx: -2000xPercentxPercent: -100 * (slideCount - 1)Rheinmir/uiux-asset.html_assets/file://git clone --depth 1 https://github.com/Rheinmir/uiux-asset| Pen gốc — tác giả | Link |
|---|---|
| Horizontal Scroll Section with GSAP and Locomotive Scroll — cameronknight | chạy · code |
| Smooth Scroll Stacking Accordion — supah | chạy · code |
| Infinite Horizontal Scroll with Progress Tracking — haptichash | chạy · code |
| Pinned Split-Screen Mask Reveal — gridmorphic | chạy · code |
| Scroll-Driven SVG Map Editorial Gallery — knyttneve | chạy · code |
assets/assets/demo.htmlassets/gsap-scrolltrigger-pin.cssassets/gsap-scrolltrigger-pin.jsdesign.mddemo.html[data-hp-section] > .hp-pin > [data-hp-track] > [data-hp-slide] × Nflex: 0 0 100vwScrollTrigger.hp-pinpin: truestart: "top top"scrub: 1gsap.to(track, { xPercent: -100 * (slideCount - 1) })slideCounttrack.querySelectorAll('[data-hp-slide]').lengthend() => "+=" + (track.scrollWidth - window.innerWidth)ScrollTrigger.refresh()track.scrollWidthScrollTrigger.matchMedia()prefers-reduced-motionwindow.addEventListener('load', () => ScrollTrigger.refresh())scrollWidthRheinmir/uiux-asset/scroll-effects/assets/