דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו מותג
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. רשתות
  4. פיתוח ועיצוב אתרים
  5. Full Stack
  6. צד לקוח
  7. CSS3
  8. מדריכים - CSS3
  9. אנימציות מתקדמות | CSS

אנימציות מתקדמות | CSS

מתוזמן נעוץ נעול הועבר מדריכים - CSS3
1 פוסטים 1 כותבים 303 צפיות 1 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מוטי אורןמ מנותק
    מוטי אורןמ מנותק
    מוטי אורן
    מדריכים
    כתב ב נערך לאחרונה על ידי מוטי אורן
    #1

    מדריך ליצירת אנימציות מתקדמות באמצעות CSS

    --

    במדריך הזה נצטרך להתחיל להשתמש ב – rule חדש. בינתיים הכרנו את ה – rule (הכלל) font-face ואת ה – rule import, כעת נכיר את keyframes@.

    בשביל להגדיר שם לאנימציה בכדי שנוכל לגשת אליה מאלמנט כלשהו ולהשתמש בה, נכתוב לאחר המילה keyframes@ את שם האנימציה, כמו בדוגמה.

    @keyframes my-animation {}
    

    בדוגמה הזאת, האנימציה שנגדיר בתוך הבלוק של הסוגריים המסולסלים, תשמר בשם 'my-animation' ונוכל לגשת אליה מכל אלמנט שנרצה להצמיד אליו את האנימציה.

    בתוך הבלוק של @keyframes אנחנו מגדירים את שלבי האנימציה, כצעד ראשון נגדיר את זה באמצעות שתי מילים פשוטות שהם: 'from' ו – 'to'. כלומר, הקוד שייכנס לבלוק של ה – from יהווה את נקודת ההתחלה של האנימציה, והקוד שייכנס לבלוק של to, יהיה נקודת היציאה מהאנימציה. ניקח לצורך העניין את האלמנט div. נניח ויש ל – div שלנו צבע רקע ירוק ואנחנו רוצים שהצבע ישתנה באיטיות לצהוב, נכתוב זאת כך:

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    

    כמובן שבשביל שה – div שלנו יכיר את האנימציה, נצטרך לקשר אותו אליה. ואת זה נעשה באמצעות התכונה animation-name.

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    div {
      animation-name: my-animation;
      background-color: green;
    }
    

    כמובן שנצטרך להגדיר את הזמן של השהיית האנימציה. את זה נבצע עם תכונת animation-duration.

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    div {
      animation-name: my-animation;
      animation-duration: 3s;
      background-color: green;
    }
    

    שימו לב שאם לא נכתבה התכונה דלעיל לא תתבצע שום אנימציה, משום שערך ברירת המחדל עבור התכונה הזאת הינו 0.

    ניתן לעכב את תחילת פעולת האנימציה באמצעות התכונה animation-delay.

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    div {
      animation-name: my-animation;
      animation-duration: 3s;
      background-color: green;
      animation-delay: 2s;
    }
    

    נוכל לקבוע את מספר הפעמים שהאנימציה תתבצע, באמצעות animation-iteration-count. בדוגמה שלהלן היא תתבצע 5 פעמים.

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    div {
      animation-name: my-animation;
      animation-duration: 3s;
      animation-iteration-count: 5;
      background-color: green;
    }
    

    ניתן לתת את הערך infinite (אין סוף) בכדי שהאנימציה לא תפסיק להתבצע.

    נחזור רגע ל – keyframes. במידה ונרצה לתת קצת יותר מנקודת כניסה ונקודת יציאה בלבד, נוכל להשתמש באחוזים, כך:

    @keyframes my-animation {
      0% { background-color: green; }
      25% { background-color: yellow; }
      50% { background-color: red; }
      75% { background-color: blue; }
      100% { background-color: pink; }
    }
    

    ניתן להפעיל את האנימציה בכיוון ההפוך מהכיוון שנקבע ב – keyframes על ידי התכונה animation-direction:

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    div {
      animation-name: my-animation;
      animation-duration: 3s;
      animation-direction: reverse;
      background-color: green;
    }
    

    ערך ברירת המחדל לתכונה זאת הינו הערך normal, וקיימים עוד שני ערכים שניתן להשתמש בהם לקביעת סדר האנימציה.

    • alternate

    • alternate-reverse

    הערך alternate משמעותו היא שהאנימציה תתבצע פעמיים. פעם ראשונה בסדר הקבוע מראש, ופעם שניה בסדר הפוך.

    הערך alternate-reverse קובע, שהאנימציה תתבצע פעמיים, פעם ראשונה בסדר הפוך, ופעם שניה בסדר המקורי.

    בטח כבר שמתם לב לכך שאחרי ביצוע האנימציה, המצב חוזר לקדמותו למצב שהיה לפני האנימציה. ניתן לשנות זאת באמצעות התכונה animation-fill-mode.

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    div {
      animation-name: my-animation;
      animation-duration: 3s;
      animation-fill-mode: forwards;
      background-color: green;
    }
    

    בדוגמה הזאת, נתתי את הערך forwards, שאומר שהמצב יישאר כמו מה שנקבע לנקודת היציאה מהאנימציה.

    ניתן לכתוב את כל זה בקיצור על ידי התכונה animation:

    @keyframes my-animation {
      from { background-color: green; }
      to { background-color: yellow; }
    }
    div {
      /* animation-name, animation-duration, animation-delay, animation-iteration-count, animation-direction */
      animation: my-animation 3s 2s 5 reverse;
    }
    

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

    HTML:

    <div>
      <h1>I am learning CSS!</h1>
    </div>
    

    CSS:

    div {
      width: 300px;
      height: 200px;
      background-color: lightblue;
      animation: my-animation 5s 2s 1 forwards;
    }
    
    @keyframes my-animation {
      0% {
        transform: translate(0, 0) rotate(0deg);
        background-color: lightblue;
      }
      10% {
        transform: translate(0, 0) rotate(15deg);
        background-color: lightgreen;
      }
      30% {
        transform: translate(500px, 20px) rotate(50deg);
        background-color: lightpink;
      }
      50% {
        transform: translate(500px, 20px) rotate(150deg);
        background-color: lightsalmon;
      }
      100% {
        transform: translate(0, 0) rotate(0deg);
      }
    }
    

    אפשר לראות את התוצאה של הקוד, בקישור הזה.

    תגובה 1 תגובה אחרונה
    11
    • אלישיא אלישי העביר נושא זה מ-CSS3 ב-
    • אלישיא אלישי העביר נושא זה מ-עזרה הדדית - CSS ב-

    • התחברות

    • אין לך חשבון עדיין? הרשמה

    • התחברו או הירשמו כדי לחפש.
    • פוסט ראשון
      פוסט אחרון
    0
    • חוקי הפורום
    • לא נפתר
    • משתמשים
    • חיפוש גוגל בפורום
    • צור קשר