1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

حرکت اشیا با CSS3

شروع موضوع توسط minaaa ‏29/10/11 در انجمن CSS

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    [​IMG]
    با استفاده از ویژگی animation در ، میتونید هر عنصر موجود در صفحه رو در زمان دلخواه حرکت بدید یا هر تغییری تو CSS اون عنصر به وجود بیارید. درواقع با کدهای میخوایم یه خط زمانی ( Time Line ) ایجاد کنیم [​IMG]

    این قابلیت فعلا فقط تو مرورگرهای Webkit

    برای شروع، یه div درست میکنیم:
    HTML:










    1
    <div class=\div1\></div>

    CSS:










    1
    .div1{width:300px; height:100px; background:#1B86F1;}

    300پیکسل طول ، 100پیکسل ارتفاع و رنگ آبی.

    حالا باید یه اسم برای این انیمیشن انتخاب کنیم. مثلا anime1:










    1
    .div1{width:300px; height:100px; background:#1B86F1;






    2
    -webkit-animation-name:anime1;}

    زمان انیمیشن رو تعیین میکنیم. من 5ثانیه درنظر میگیرم:










    1
    .div1{width:300px; height:100px; background:#1B86F1;






    2
    -webkit-animation-name:anime1;






    3
    -webkit-animation-duration:5s;}

    *همین کد رو میشه به صورت خلاصه هم نوشت:










    1
    .div1{width:300px; height:100px; background:#1B86F1;






    2
    -webkit-animation:anime1 5s;}

    حالا مرحله دوم، ساخت تایم لاین!










    1
    @-webkit-keyframes anime1{}

    *دقت کنید که anime1 همون اسم انیمیشنه.

    حالا میخوایم با لود شدن صفحه ، طول div1 در 5 ثانیه،از 50پیکسل به 300پیکسل تغییر کنه؛
    پس این کد رو به @-webkit-keyframes اضافه میکنیم:










    1
    @-webkit-keyframes anime1{






    2
    from {width:50px;}






    3
    to {width:300px;}






    4
    }

    آماده شد! حالا یه div داریم که وقتی صفحه لود میشه ، از 50 پیکسل به 300 پیکسل تغییر سایز میده [​IMG]

    [​IMG]
    حالا میخوایم یکم پیشرفته تر کار کنیم؛
    میتونیم با یه تایم لاین بهتر، روی کل مدت زمان انیمیشن ، تسلط داشته باشیم:

    به جای استفاده از from و to ، به این صورت عمل میکنیم:










    1
    @-webkit-keyframes anime1{






    2
    0%{width:50px;}






    3
    100%{width:300px;}






    4
    }

    هنوز همون حالت تکرار میشه، اما میتونیم چندتا keyframe به این تایم لاین اضافه کنیم:










    1
    @-webkit-keyframes anime1{






    2
    0%{width:50px;}






    3
    20%{width:30px;}






    4
    55%{width:200px;}






    5
    90%{width:180px;}






    6
    100%{width:300px;}






    7
    }

    * تو هر کدوم از keyframe ها ، به جای width میتونید هر خاصیت CSS مربوط به div1 رو تغییر بدین.

    برای کلاس .div1 میتونیم چند خاصیت اختیاری هم برای انیمیشن قرار بدیم:
    [*]میزان تکرار انیمیشن









    1
    -webkit-animation-iteration-count:1;

    مقدار پیشفرض این خاصیت 1 هست. برای تکرار شدن بی‌نهایت ، از کلمه infinite استفاده می‌کنیم:










    1
    -webkit-animation-iteration-count: infinite;
    [*]جهت تکرار انیمیشن
    وقتی با استفاده از -webkit-animation-iteration-count بیشتر از یک بار انیمیشن تکرار میشه، میتونیم با استفاده از -webkit-animation-direction مشخص کنیم که آیا هر بار به همون صورت عادی نمایش داده بشه ، یا keyframe های تایم لاین از آخر به اول ، به صورت معکوس نمایش داده بشه!
    به زبان ساده:










    1
    -webkit-animation-direction:normal;

    به صورت عادی تکرار بشه










    1
    -webkit-animation-direction:alternate;

    وقتی یک بار تایم لاین به آخر رسید، دور بعد، انیمیشن از آخر به اول انجام بشه
    [*]زمان شروع انیمیشن









    1
    -webkit-animation-delay:3s;

    یعنی انیمیشن با 3 ثانیه تاخیر شروع بشه.
    [*]وضعیت اجرا









    1
    -webkit-animation-play-state:running;

    حالت پیشفرض running هست ، به این معنی که با لود شدن صفحه اجرا بشه.
    مقدار paused باعث میشه انیمیشن در ابتدا pause