loading...
طراحی وب- برنامه نویسی
برنامه نویس بازدید : 31 سه شنبه 25 تیر 1398 نظرات (0)

 

خصوصیت object-fit در css مشخص می کند که عناصر <img> و <video> چطور در هنگام نیاز تغییر اندازه دهند تا عنصر نگهدارنده شان را کاملا پُر کنند. جدول زیر پشتیبانی مرورگرهای مختلف را از این خصوصیت نشان می دهد:

حصوصیت کروم Edge فایرفاکس سافاری اپرا
object-fit 31.0 16.0 36.0 7.1 19.0

در واقع خصوصیت object-fit به عنصر ما می گوید که چطور تغییر سایز دهد تا تمام فضای عنصر نگهدارنده اش را بگیرد؛ به طور مثال آیا نسبت طول و عرض را حفظ کند یا بدون توجه به این نسبت آنقدر کشیده شود که تمام فضا را پر کند؟

تصویر زیر توسط یک عکاس در پاریس گرفته شده و ابعاد 400×300 پیکسلی دارد:

تصویر پاریس

اما اگر این تصویر را با ابعاد 200×400 پیکسلی در صفحه ی خود قرار دهیم به این شکل در می آید:

 

پاریس به صورت 200x400پاریس به صورت 200×400

 

به کد آن نگاه کنید:

مشاهده ی خروجی در JSBin

همانطور که می بینید این تصویر فشرده شده (بدون توجه به نسبت طول و عرض) تا تمام فضای 400 در 300 پیکسلی را پُر کند. اما اگر از ;object-fit: cover استفاده کنیم، به جای آنکه تصویر فشرده شود گوشه های تصویر قطع می شود تا نسبت طول و عرض تصویر حفظ شود:

مشاهده ی خروجی در JSBin

مثالی دیگر

دو تصویر دیگر را در نظر بگیرید. می خواهیم دو تصویر را طوری کنار هم قرار دهیم که هر کدام 50 درصد از عرض صفحه و 100 درصد ارتفاع را بگیرند. در مثال زیر ابتدا از object-fit استفاده نمی کنیم بنابراین سعی کنید پنجره ی مرورگرتان را کوچک کنید تا ببینید که نسبت طول و عرض تصویر کاملا بهم میریزد:

مشاهده ی خروجی در JSBin

حالا اگر این کد را با object-fit: cover بنویسید و پنجره ی مرورگر را کوچک کنید، میبینید که نسبت طول و عرض تصویر بهم نخواهد ریخت:

مشاهده ی خروجی در JSBin

خصوصیت object-fit در css می تواند مقادیر زیر را بپذرید:

  • fill : این مقدار پیش فرض است. این گزینه تحت هر شرایطی تصویر را به اندازه ی عنصر نگهدارنده اش در می‌آورد و به نسبت طول و عرض توجه نمی کند.
  • contain : این مقدار تصویر را آنقدر بزرگ یا کوچک می کند که درون عنصر نگهدارنده اش جا شود و در عین حال نسبت طول و عرض را نیز حفظ می کند.
  • cover : این مقدار تصویر را آنقدر بزرگ یا کوچک می کند که تمام فضای عنصر نگهدارنده اش را پُر کند و در عین حال نسبت طول عرض را نیز حفظ کند.
  • none : تصویر هیچ تغییری نمی کند.
  • scale-down : تصویر، یا به طور کلی محتوا، به صورتی تنظیم می شود که انگار none یا contain مشخص شده اند.

در مثال زیر تمام این مقادیر را تست کرده ایم تا تفاوتشان را به صورت عملی درک کنید:

مشاهده ی خروجی در JSBin

خصوصیات resize و outline-offset

حالا به 2 خصوصیت دیگر در زبان CSS میرسیم:

  • resize
  • outline-offset

جدول زیر وضعیت پشتیبانی مرورگر های مختلف از این دو خصوصیت را نشان می دهد:

خصوصیت کروم edge فایرفاکس سافاری اپرا
resize 4.0 15.0 5.0
4.0 -moz-
4.0 15.0
outline-offset 4.0 15.0 5.0
4.0 -moz-
4.0 9.5

ابتدا باید resize را بررسی کنیم.

resize

خصوصیت resize به مرورگر می گوید که آیا اندازه ی فلان عنصر به دست کاربر قابل تغییر باشد یا خیر. واضح است که Internet Explorer از این خصوصیت پشتیبانی نمی کند. در مثال زیر یک <div> داریم که به شما اجازه می دهد عرض اش (نه ارتفاع) را تغییر دهید:

مشاهده ی خروجی در JSBin

در قسمت پایین و راست این <div> خطی وجود دارد که با گرفتن و کشیدن آن می توانید اندازه اش را تغییر دهید.

در مثال بعدی همین <div> را آورده ایم که تنها به شما اجازه ی تغییر ارتفاع (و نه عرض و ارتفاع) را می دهد:

مشاهده ی خروجی در JSBin

اما مثال زیر به شما اجازه ی تغییر عرض و ارتفاع را می دهد:

مشاهده ی خروجی در JSBin

در اکثر مرورگرهای اینترنتی اندازه ی عنصر <textarea> به طور پیش فرض قابل تغییر است بنابراین اگر خواستید اینطور نباشد باید از خصوصیت resize استفاده کنید:

مشاهده ی خروجی در JSBin

outline-offset

خصوصیت outline-offset خطی بین حاشیه ی عنصر و outline آن می کشد. توجه داشته باشید که outline با حاشیه (border) تفاوت دارد. outline ها بیرون از حاشیه کشیده می شوند و ممکن است با محتوا و تگ های دیگر برخورد داشته باشند. از طرفی هم outline جزئی از ابعاد عنصر ما نیست؛ یعنی outline بر مجموع طول و عرض عنصر بی تاثیر است. مثال زیر outline-offset را به خوبی نشان می دهد:

مشاهده ی خروجی در JSBin

منبع: روکسو
 
ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 346
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 0
  • آی پی امروز : 10
  • آی پی دیروز : 17
  • بازدید امروز : 40
  • باردید دیروز : 21
  • گوگل امروز : 2
  • گوگل دیروز : 5
  • بازدید هفته : 114
  • بازدید ماه : 479
  • بازدید سال : 6,988
  • بازدید کلی : 35,223