→ לכל המאגר

G69 · חשיפת פיקסלים בגלילה

GSAP GSAP · ScrollTrigger · stagger תמונות וגלריותטעינה ופידבקהירו ופתיחה ממתין

רשת ריבועים שמכסה את התמונה ונעלמת בגלילה בסדר אקראי, כמו תמונה שנטענת בחיבור איטי. התמונה מתגלה חתיכה אחרי חתיכה.

מתי משתמשים: חשיפת מוצר, פתיחת סקשן עבודות, מעבר בין פרקים. אפקט חשיפה שמרגיש דיגיטלי ולא קולנועי, ומתאים למותגי טק ומוצר.

הדמו כאן עיצובי-ניטרלי בכוונה. כשהמהלך נכנס לפרויקט, מיובאת רק ההתנהגות: הצבעים, הרדיוסים, הפונטים והצללים יורשים את העיצוב של אותו פרויקט.

הדמו

גלול. הריבועים נעלמים בסדר אקראי.

הרשת נבנית ב-JS ולא ב-HTML, כי מאה עשרים ושישה ריבועים בקוד הם קובץ בלתי קריא, ובגלל שמספר העמודות והשורות הוא מספר אחד שאפשר לכייל. `from:"random"` הוא ההבדל בין חשיפה שמרגישה כמו טעינה לבין מחיקה שמרגישה כמו מגב. הריבועים בצבע הרקע ולא שקופים, ולכן זה עובד מעל כל תמונה. שים לב ש-`each` קטן מאוד: עם מאה ועשרים ריבועים גם שתי מאיות שנייה מצטברות לזמן ארוך, וה-scrub פורש את הכל על מסלול הגלילה ממילא.

קוד להדבקה

הקוד כאן עומד בפני עצמו. כל טוקן עיצוב נושא ברירת מחדל, מחלקות העזר של המאגר מוטמעות בו, ותגי הסקריפט מסודרים לפי הסדר הנכון. פרויקט שמגדיר --accent או --line משלו יורש אותם אוטומטית. הרכיב הזה מסתמך על dir="rtl".

פתח קובץ עצמאי ↗
הצג את הקוד כאן

CSS

/* מחלקות עזר של המאגר שהרכיב הזה משתמש בהן */
.ph{display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;border-radius:var(--r, 14px)}
.ph-c{background:linear-gradient(160deg,#0b7285,#3bc9db)}

/* G69 · חשיפת פיקסלים בגלילה */
.px{height:280vh;position:relative}
.px-stage{position:sticky;top:0;height:100vh;display:grid;place-items:center;overflow:hidden}
.px-frame{position:relative;width:min(880px,92vw);aspect-ratio:16/10;border-radius:18px;overflow:hidden}
.px-img{position:absolute;inset:0;border-radius:0;font-size:0}
.px-grid{position:absolute;inset:0;display:grid}
.px-cell{background:var(--bg, #f7f7fa);will-change:opacity}
.px-cap{position:absolute;bottom:8vh;inset-inline:0;text-align:center;color:var(--muted, #6a6d85);font-size:15px}

HTML

<div class="px"><div class="px-stage">
  <div class="px-frame">
    <div class="ph px-img ph-c"></div>
    <div class="px-grid"></div>
  </div>
  <p class="px-cap">גלול. הריבועים נעלמים בסדר אקראי.</p>
</div></div>

JS

gsap.registerPlugin(ScrollTrigger);

(function(){
  const COLS=14, ROWS=9;
  const grid=document.querySelector(".px-grid");
  grid.style.gridTemplateColumns="repeat("+COLS+",1fr)";
  grid.style.gridTemplateRows="repeat("+ROWS+",1fr)";
  const cells=[];
  for(let i=0;i<COLS*ROWS;i++){
    const d=document.createElement("div");d.className="px-cell";grid.appendChild(d);cells.push(d);
  }
  const reduce=matchMedia("(prefers-reduced-motion: reduce)").matches;
  if(reduce){gsap.set(cells,{opacity:0});return;}
  gsap.to(cells,{opacity:0,ease:"none",
    // stagger אקראי עם from:"random" הוא מה שמונע תחושת מחיקה מסודרת
    stagger:{each:.012,from:"random"},
    scrollTrigger:{trigger:".px",start:"top top",end:"bottom bottom",scrub:.4}});
})();