פסקה שמופיעה אות אחרי אות בקצב הגלילה, עם סמן שמסמן איפה הכתיבה נמצאת. גוללים לאט, קוראים לאט. חוזרים למעלה, הטקסט נמחק.
מתי משתמשים: משפט מפתח או פסקת מניפסט שרוצים שייקראו עד הסוף. עד 220 תווים, פעם אחת בעמוד.
הדמו כאן עיצובי-ניטרלי בכוונה. כשהמהלך נכנס לפרויקט, מיובאת רק ההתנהגות: הצבעים, הרדיוסים, הפונטים והצללים יורשים את העיצוב של אותו פרויקט.
הקוד כאן עומד בפני עצמו. כל טוקן עיצוב נושא ברירת מחדל, מחלקות העזר של המאגר מוטמעות בו, ותגי הסקריפט מסודרים לפי הסדר הנכון. פרויקט שמגדיר --accent או --line משלו יורש אותם אוטומטית. הרכיב הזה מסתמך על dir="rtl".
/* G110 · טקסט שנכתב עם הגלילה */
.tw2{position:relative;height:220vh}
.tw2-pin{position:sticky;top:0;height:100vh;display:grid;place-items:center;padding-inline:var(--gutter, clamp(24px, 5vw, 96px))}
.tw2 p{max-width:30ch;margin:0;font-size:clamp(24px,3.2vw,46px);font-weight:600;line-height:1.5;text-align:center}
.tw2 p span{opacity:.12}
.tw2 p span.on{opacity:1}
.tw2 p i{display:inline-block;width:.08em;height:1em;background:var(--accent, #4a3aff);vertical-align:-.15em;margin-inline-start:.04em;animation:tw2-b 1s steps(1) infinite}
@keyframes tw2-b{50%{opacity:0}}
@media (prefers-reduced-motion: reduce){.tw2 p span{opacity:1}.tw2 p i{display:none}}
<div class="tw2"><div class="tw2-pin"><p data-text="אנחנו לא מוכרים אתר. אנחנו מוכרים את הרגע שבו מישהו קורא, מבין, ומרים טלפון."></p></div></div>
gsap.registerPlugin(ScrollTrigger);
(function(){
const p=document.querySelector(".tw2 p"),text=p.dataset.text;
const spans=[...text].map(ch=>{const s=document.createElement("span");s.textContent=ch;p.appendChild(s);return s;});
const car=document.createElement("i");p.appendChild(car);
if(matchMedia("(prefers-reduced-motion: reduce)").matches)return;
const o={n:0};
gsap.to(o,{n:spans.length,ease:"none",scrollTrigger:{trigger:".tw2",start:"top top",end:"bottom bottom",scrub:.4},
onUpdate(){const k=Math.round(o.n);spans.forEach((s,i)=>s.classList.toggle("on",i<k));
// הסמן זז אחרי האות האחרונה הגלויה
const last=spans[Math.max(0,k-1)];if(k>0)last.after(car);else p.prepend(car);}});
})();