در GSAP، وقتی چندین انیمیشن دارید که باید با زمانبندی دقیق و قابل کنترل پشت سر هم اجرا شوند، به جای زنجیرهکردن ()gsap.to های جداگانه از Timeline استفاده میکنیم.
🟢 ساخت یک Timeline
const tl = gsap.timeline();
- 
میتوانید گزینههایی مثل repeat,yoyo,defaultsهنگام ساخت بدهید:
const tl = gsap.timeline({
  repeat: 1,         // تعداد تکرار (−1 = بینهایت)
  yoyo: true,        // برگشت به حالت اول بعد از هر بار
  defaults: { ease: "power1.out", duration: 1 } // مقادیر پیشفرض
});
🟡 افزودن انیمیشن به Timeline
متدهای to(), from(), ()fromTo مستقیم روی تایملاین استفاده میشوند:
tl.to(".box1", { x: 200 })
  .to(".box2", { y: 100 })
  .from(".title", { opacity: 0 });
- 
این انیمیشنها به ترتیب اجرا میشوند. 
🟠 همپوشانی و زمان شروع سفارشی
میتوانید شروع هر مرحله را دقیق کنترل کنید:
tl.to(".box1", { x: 200, duration: 1 })
  .to(".box2", { y: 100, duration: 1 }, "-=0.5") // 0.5 ثانیه زودتر
  .to(".box3", { rotation: 360, duration: 1 }, "+=1"); // 1 ثانیه بعد
- 
" -=0.5 "یعنی نیم ثانیه قبل از پایان انیمیشن قبلی آغاز شود.
- 
" +=1 "یعنی 1 ثانیه بعد از پایان قبلی شروع شود.
🟣 کنترل پخش
یک متغیر نگه دارید تا بعداً کنترل کنید:
tl.pause();         // توقف
tl.play();          // ادامه
tl.reverse();       // پخش برعکس
tl.restart();       // از اول
tl.seek(1.5);       // رفتن به ثانیه مشخص
tl.progress(0.5);   // رفتن به 50٪ انیمیشن
tl.timeScale(2);    // دو برابر سریعتر
🟤 برچسب (Label)
برچسبها کار زمانبندی را ساده میکنند:
tl.addLabel("startBoxes")
  .to(".box1", { x: 200 })
  .to(".box2", { y: 100 }, "startBoxes+=0.3"); // 0.3 ثانیه بعد از برچسب
حالا میتوانید با tl.play("startBoxes") مستقیماً از آن نقطه پخش کنید.
🟡 تو در تو (Nested Timelines)
میتوانید تایملاینهای کوچک را داخل تایملاین اصلی قرار دهید:
const sub = gsap.timeline();
sub.to(".circle", { scale: 1.5 }).to(".circle", { scale: 1 });
tl.to(".box", { x: 100 })
  .add(sub, "+=0.5"); // سابتایملاین 0.5 ثانیه بعد
⚡ نمونه کامل
const tl = gsap.timeline({ defaults: { duration: 1, ease: "power2.out" } });
tl.from(".header", { y: -50, opacity: 0 })
  .to(".box1", { x: 200 })
  .to(".box2", { y: 100 }, "-=0.5")
  .fromTo(".footer", { opacity: 0 }, { opacity: 1, duration: 0.5 }, "+=0.5");
// کنترل
document.querySelector("#pauseBtn").addEventListener("click", () => tl.pause());
document.querySelector("#playBtn").addEventListener("click", () => tl.play());
✅ نکات کلیدی
- 
Timeline ترتیب و هماهنگی انیمیشنها را بسیار ساده میکند. 
- 
میتوانید برای همهی انیمیشنهای داخل آن defaults تعریف کنید. 
- 
کنترلهایی مثل pause,reverse,seek,timeScaleقدرت زیادی برای تعامل به شما میدهند.
- 
از Label برای نامگذاری نقاط مهم و پرش به آنها استفاده کنید. 
- 
امکان ساخت Timeline تو در تو برای سازماندهی پروژههای بزرگ وجود دارد. 
با Timeline میتوانید سناریوهای پیچیده مثل ورود چند المان، اسکرول انیمیشن و توالیهای طولانی را دقیق و تمیز مدیریت کنید.
 CSS3
          CSS3
        
                
           HTML
          HTML
        
                
           Tailwind Css
          Tailwind Css
        
                
           Bootstrap 5
          Bootstrap 5
        
                
           Java script
          Java script
        
                
           ++C
          ++C
        
                
           Python
          Python
        
                
           Three.js
          Three.js
        
                
           Gsap
          Gsap
        
                
           Sass
          Sass
        
                
           SQL
          SQL
        
                
           React
          React