transform

با استفاده از ویژگی transform می توانید شکل, مکان و یا وضعیت یک عنصر را تغییر دهید. این تغییر می تواند دو بعدی و یا سه بعدی باشد.

مقدار این ویژگی می تواند none باشد که به این معنی است که هیچ تغییری انجام نشود. و یا می توان یک و یا تعدادی از توابع زیر را به عنوان مقدار برای این ویژگی تعیین کرد.

 

لیست توابع دو بعدی:

 

لیست توابع سه بعدی:

 

سیستم مختصات

هر عنصری در CSS دارای یک سیستم مختصاتی است که مبدا آن گوشه بالا و سمت چپ هر عنصر می باشد. وقتی که از ویژگی transform استفاده می کنید مبدا عنصر به وسط آن انتقال پیدا می کند زیرا ویژگی transform-origin (کار این ویژگی تعیین مبدا مختصات است) دارای مقدار پیش فرض 50% 50% است.

شکل اول نشان دهنده محور مختصاتی عنصر در وضعیت عادی آن است و شکل دوم زمانی است که ویژگی transform به عنصر داده می شود:

سیستم مختصات در css

فرض کنید همزمان دو تغییر می خواهیم در عنصر ایجاد کنیم, داریم:


.element {    
  transform: rotate(90deg) skew(10deg);
}

نکته خیلی مهم اینکه ترتیب نوشتن توابع برای این ویژگی اهمیت دارد. به این دلیل که هر تغییر بر روی عنصر باعث تغییر سیستم مختصاتی آن می شود. و تغییر بعدی بر اساس سیستم مختصاتی جدید اعمال می شود. در مثال بالا اولین تغییر چرخش عنصر به مقدار 90 درجه می باشد پس باید به این نکته توجه کنید که تغییر بعدی در شرایطی صورت می گیرد که محورهای مختصات 90 درجه چرخیده اند.

تغییر اشکال در دنیای کامپیوتر توسط عملیات ماتریسی صورت می گیرند. مثلا وقتی که در فوتوشاپ در حال بزرگ کردن یک دایره با کشیدن آن هستید این به این معنی است که یک عدد در حال ضرب شدن در ماتریس موجود است. همچنین در دنیای ریاضیات ضرب ماتریس A در ماتریس B با ضرب ماتریس B در ماتریس A نتیجه یکسان ندارند. پس به همین دلیل ترتیب نوشتن توابع برای ویژگی transform اهمیت دارد.

نکته دیگری که باید در مورد این ویژگی بدانید این است که زمانی که شکل, وضعیت و یا مکان یک عنصر تغییر می کند, این تغییر تاثیری بر صفحه آرایی نخواهد داشت. یعنی همان مقداری که عنصر در صفحه فضا اشغال کرده بود هنوز هم همان مقدار را گرفته است. و همینطور این تغییرات تاثیری به عناصر مجاور عنصر نخواهند داشت. یعنی اگر عنصر جابه جا شد عنصر کناری آن تکان نخواهد خورد. بهتر است اینطور در نظر بگیرید که عنصر یک لایه به سمت بیرون آمده است و در لایه ای دیگر در حال تغییر شکل و یا مکان است.

این تغییرات تنها تاثیر بر حالت overflow خواهند داشت. یعنی اگر یک عنصر را با استفاده از transform از صفحه خارج کنیم باعث می شود تا صفحه اسکرول بخورد.

 

پشتیبانی مرورگر ها برای توابع دو بعدی

 

پشتیبانی مرورگر ها برای توابع سه بعدی

12 دیدگاه برای “transform

    1. سلام

      اصلا در کل فلسفه وجود animation و transition همینه که شما میخواین دیگه. تغییرتون رو با transform انجام بدید و delay رو برای transition یا animation بنا به نیاز تعیین کنید.

      اگر دوست داشتید یک دمو توی سایت jsbin,com بسازید و لینکش رو اینجا قرار بدید تا با هم موردتون رو بررسی کنیم.

  1. سلام وقت بخیر
    rotatex و rotatey هم به نظرم جز توابع دو بعدی هستن که در متن پست جز توابع سه بعدی عنوان شده .

  2. سلام خسته نباشید
    من وقتی از این ترنسیشن ها مثل اسکال یا روتیت استفاده می کنم سایر عنصر های صفحه هم به خاطر این تغییرات جابه جا می شن راهکارش چیه که این طوری نشه؟

    1. سلام، آره در حالت عادی خروجی یکسانی دارند ولی اگر در فضای سه بعدی میخواین کار کنید از rotateZ استفاده کنید از نظر ذهنی شاید براتون راحت تر باشه. چون تمرکز شما بر روی محورها هستش و این کدتون رو خواناتر میکنه. همینطور که شاید در آینده نزدیک این دوتا با هم یک فرق هایی داشته باشند.

سوال داری؟ برو به پنل پرسش و پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *