نمایش خبر

image

واحدهای em,rem

در ادامه مباحث آموزش CSS در این مقاله در مورد دو واحد em , rem که بسیار پرکاربرد هستند صحبت می کنیم.این دو واحد اندازه گیری جزو واحدهای نسبی می باشند و باعث بهبود پیاده سازی در طراحی وب می شوند.

EM چیست؟

یک em em یک واحد تایپوگرافی است که برابر با font-size کنونی تعیین شده می باشد.یعنی اگر font-size عنصری را 20پیکسل تعیین کرده باشیم،مقدار em 1 برای این عنصر برابر با 20پیکسل خواهد بود.

h1 { font-size: 20px } /* 1em = 20px */
p { font-size: 16px } /* 1em = 16px */

حال می توانیم از این واحد em برای تعیین مقدار ویژگی های مختلف استفاده کنیم.به عنوان مثال :

p { 
  font-size: 16px; /* 1em = 20px */
  margin-top: 2em; /* 2em = 2*16 = 32px */
}

همانطور که مشاهده می کنید برای دانستن اندازه هر em به ویژگی font-size عناصر رجوع می کنیم،حال اگر ویژگی font-size برای یک عنصر مقداردهی نشده باشد چه اتفاقی می افتد؟

کافی است به ویژگی font-size پدر آن عنصر رجوع کنیم و اگر آن عنصر هم این ویژگی برایش تعیین نشده بود همینطور به بالا حرکت می کنیم تا در اجدادش عنصری پیدا کنیم که ویژگی font-size را دارد و اگر در نهایت عنصری پیدا نشد, به عنصر ریشه که همان html است می رسیم و بصورت پیشفرض font-size برای html برابر با 16px می باشد مگر اینکه کاربر از طریق تنظیمات مرورگر این عدد را تغییر دهد. و یا ما در css اندازه فونت html را تغییر دهیم.

معمولا کار جالبی نیست که اندازه فونت html را تغییر دهیم, چون با این کار یک حالت پیشفرض را برای مرورگر کاربر تغییر می دهیم.

نکته : اگر font-size را برای html تعیین نکنیم مقدار آن 100% می باشد که همان 16 پیکسل مربوط به تنظیمات مرورگر است.

بنابراین به طور خلاصه می توان گفت مقدار 1em برابر با font-size عنصر می باشد و چنانچه مقدار font-size برای عنصر تعیین نشده باشد،مقدار 1em برابر با font-size والد عنصر خواهد بود.

<style>
	Header{
	Font-size:16px;
}
Header h1 {
	Font-size:2em ; /* 2*16 = 32px */
}
</style>
<header>
  <h1>HAVE FUN!</h1>
</header>

REM چیست؟

استفاده از rem کمی ساده تر از em می باشد چرا که این واحد اندازه گیری متولد شده است تا آن محساباتی که در em وجود دارند را نداشته باشید. این واحد تایپوگرافی برابر با font-size عنصر ریشه است یعنی همیشه برابر با اندازه فونتی که برای html تعیین می شود می باشد. به مثال زیر توجه کنید:

<style>
	header{font-size:20px;}
	header h1{
	font-size:2rem;
}
h1 span{
	display:inline-block;
padding: .5rem;
}
</style>
<header>
	<h1>header for<span> rem </span> relative units</h1>
</header>

همانطور که مشاهده می کنید 1rem همیشه 16px است, مهم نیست که کجا استفاده می شود و مهم نیست که در اینجا پدر این عناصر اندازه فونت 18px دارد, بلکه همیشه مقدار font-size عنصر html تعیین کننده خواهد بود, که بصورت پیشفرض این مقدار 16 پیکسل است مگر اینکه تغییرش بدهیم.

همانطور که مشخص است استفاده از واحد rem ساده تر و قابل فهم تر می باشد اما پشتیبانی از em در مرورگرهای بیشتری انجام می شود و می توانیم بدون هیچ نگرانی در تمام مرورگرها از ان استفاده کنیم در حالی که استفاده از rem برای برخی پروژه ها نیاز به تامل دارد.پشتیبانی مرورگرها از واحد rem را مشاهده می کنید.

امیدوارم مطالعه این مقاله برای شما مفید بوده باشد.با ادامه آموزش های css با ما همراه باشید.

کامنی وجود ندارد.