→ לכל המאגר

G96 · סקשן שמתרומם מהשולחן

GSAP GSAP · ScrollTrigger · 3D כרטיסים ממתין

כרטיסים שוכבים שטוחים בפרספקטיבה, כמו על שולחן, ובזמן שהם נכנסים למסך הם מתרוממים לזקוף, אחד אחרי השני. כניסה עם עומק במקום עוד fade-up.

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

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

הדמו

גלול למטה, הדמו מגיע ↓
1

אפיון

שיחה אחת שממפה מי הלקוח ומה מונע ממנו לפנות.

2

קופי ועיצוב

כל משפט עונה על שאלה. כל מסך מוביל לפעולה.

3

עלייה ומדידה

האתר עולה תוך שבועיים, וכל פנייה נספרת.

4

ליווי

חודש של תיקונים ושיפורים לפי הנתונים.

5

הרחבה

דפי נחיתה, מערכות, אוטומציות. כשצריך.

6

תחזוקה

עדכונים, גיבויים ואבטחה, בלי לחשוב על זה.

עוד מסלול גלילה. נסה גם חזרה למעלה ↑
המכל מקבל perspective והכרטיסים rotateX(48) עם transform-origin למטה, וסקראב מחזיר אותם ל-0 עם סטאגר. אין pin, לכן זה זול וזורם. במובייל הזווית ההתחלתית קטנה (28) כי הכרטיסים בעמודה אחת וארוכים.

קוד להדבקה

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

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

CSS

/* מחלקות עזר של המאגר שהרכיב הזה משתמש בהן */
.stage{padding:var(--sec, clamp(120px, 12vw, 260px)) var(--gutter, clamp(24px, 5vw, 96px));position:relative}
.stage.tight{padding-block:clamp(48px,5vw,90px)}
.stage.full{padding-inline:0}
.ph{display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;border-radius:var(--r, 14px)}
.ph-a{background:linear-gradient(160deg,#3b5bdb,#748ffc)}
.ph-b{background:linear-gradient(160deg,#5f3dc4,#9775fa)}
.ph-c{background:linear-gradient(160deg,#0b7285,#3bc9db)}
.ph-d{background:linear-gradient(160deg,#2b8a3e,#69db7c)}
.ph-e{background:linear-gradient(160deg,#e8590c,#ffa94d)}
.ph-l{background:rgba(16,18,43,.72);color:#fff;padding:.18em .7em;border-radius:999px;line-height:1.3;font-size:max(.78em,12px)}

/* G96 · סקשן שמתרומם מהשולחן */
.tb{perspective:1200px;perspective-origin:50% 0%;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap, clamp(16px, 1.6vw, 36px));max-width:1100px;margin-inline:auto;padding-block:10vh 20vh}
.tb-card{background:var(--card, #fff);border:1px solid var(--line, #e4e4ee);border-radius:var(--r, 14px);padding:26px;transform-origin:50% 100%;will-change:transform,opacity;box-shadow:0 20px 50px rgba(0,0,0,.08)}
.tb-card .ph{height:140px;border-radius:12px;margin-bottom:18px;font-size:18px}
.tb-card h3{margin:0 0 6px;font-size:20px}
.tb-card p{margin:0;color:var(--muted, #6a6d85);font-size:15px;line-height:1.6}
@media(max-width:767px){.tb{grid-template-columns:1fr}}

HTML

<div class="stage tight"><div class="tb">
  <article class="tb-card"><div class="ph ph-a"><span class="ph-l">1</span></div><h3>אפיון</h3><p>שיחה אחת שממפה מי הלקוח ומה מונע ממנו לפנות.</p></article>
  <article class="tb-card"><div class="ph ph-b"><span class="ph-l">2</span></div><h3>קופי ועיצוב</h3><p>כל משפט עונה על שאלה. כל מסך מוביל לפעולה.</p></article>
  <article class="tb-card"><div class="ph ph-c"><span class="ph-l">3</span></div><h3>עלייה ומדידה</h3><p>האתר עולה תוך שבועיים, וכל פנייה נספרת.</p></article>
  <article class="tb-card"><div class="ph ph-d"><span class="ph-l">4</span></div><h3>ליווי</h3><p>חודש של תיקונים ושיפורים לפי הנתונים.</p></article>
  <article class="tb-card"><div class="ph ph-e"><span class="ph-l">5</span></div><h3>הרחבה</h3><p>דפי נחיתה, מערכות, אוטומציות. כשצריך.</p></article>
  <article class="tb-card"><div class="ph ph-a"><span class="ph-l">6</span></div><h3>תחזוקה</h3><p>עדכונים, גיבויים ואבטחה, בלי לחשוב על זה.</p></article>
</div></div>

JS

gsap.registerPlugin(ScrollTrigger);

(function(){
  const cards=gsap.utils.toArray(".tb-card");
  if(matchMedia("(prefers-reduced-motion: reduce)").matches)return;
  const ang=matchMedia("(max-width:767px)").matches?28:48;
  gsap.set(cards,{rotateX:ang,y:60,opacity:.35});
  ScrollTrigger.batch(cards,{start:"top 88%",end:"top 45%",scrub:.6,onEnter:b=>{},   // batch כאן רק כדי לקבץ את הכרטיסים לפי שורה
    onEnter:batch=>gsap.to(batch,{rotateX:0,y:0,opacity:1,stagger:.1,duration:.8,ease:"power3.out",overwrite:true}),
    onLeaveBack:batch=>gsap.to(batch,{rotateX:ang,y:60,opacity:.35,stagger:.05,duration:.5,ease:"power3.in",overwrite:true})});
})();