وقتی صحبت از واحدهای اندازه گیری در CSS به میان می آید، ما انتخاب های خوبی داریم. در دنیای امروزی طراحیهای واکنشگرا، واحدهای نسبی مانند واحدهای em یا rem سازگاری و انعطافپذیری بیشتری را به ما میدهند که اجازه میدهد اندازهها بر اساس اندازه فونت (های) تعریف شده در قسمت های بالاتر یا والد باشد.
احتمالاً مدتی است که از واحدهای em و rem استفاده میکنید، اما ممکن است در مورد تفاوت دقیق بین این دو و اینکه کدام واحد برای موارد استفاده شما مناسب تر است، فکر کنید. بیایید تا حد امکان به طور خلاصه آن را تجزیه کنیم.
نکته : واحدهای em برای ویژگی font-size نسبت به اندازه فونت عنصر والد خواهند بود. اندازه واحدهای rem همیشه نسبت به اندازه فونت عنصر ریشه یعنی html خواهد بود.
واحد em
em از دنیای typography گرفته شده است و واحدی است که امکان تنظیم اندازه قلم یک عنصر را نسبت به اندازه فونت والد آن فراهم می کند.
بیایید این مثال ساده را در نظر بگیریم:
.parent {
font-size: 18px;
}
.child {
font-size: 1.5em;
}
با این مثال، اندازه فونت عنصری با کلاس child ، 27 پیکسل (1.5 * 18 پیکسل = 27 پیکسل) خواهد بود.
اگر عنصر والد مقداری را برای اندازه فونت تعیین نکند، مقداری سطوح بالاتر از عناصر DOM جستجو میشود. اگر اندازه فونت تا عنصر ریشه (<html>) مشخص نشده باشد، از پیش فرض مرورگر 16 پیکسل استفاده می شود.
واحدهای em را می توان برای مواردی بیشتر علاوه بر اندازه فونت استفاده کرد، می توان تقریباً در همه جاهایی که این واحدهای اندازه گیری مورد انتظار است استفاده کرد (padding, margin, width, height, max-width) و اندازه آنها نسبت به اندازه قلم عنصروالد تعیین میشود.
به مثال زیر توجه نمایید :
.parent {
font-size: 18px;
}
.child {
font-size: 1.5em;
padding: 2em 1em;
}
واحد اندازه گیری rem :
واحد rem که مخفف root em است یک واحد نسبی است که همیشه بر اساس مقدار اندازه فونت عنصر ریشه که <html> است تعیین میشود. و اگر عنصر <html> اندازه فونت مشخصی نداشته باشد، ازاندازه پیش فرض مرورگر ، 16 پیکسل استفاده می شود.
به این معنی که با استفاده از واحد rem، مقادیر عناصر والد نادیده گرفته شده و فقط مقدار ریشه <html> در نظر گرفته می شود.
با توجه به مثال زیر:
.html {
font-size: 16px;
}
.parent {
font-size: 2rem;
}
<div class="parent">
I'm 32Px
</div>
em & rem ، کدام بهتر است؟
واقعاً واحد بهتری وجود ندارد و همه چیز به شما بستگی دارد. برخی از افراد دوست دارند همه چیز را در واحدهای rem طراحی کنند، در حالی که برخی دیگر دوست دارند از واحدهای em استفاده کنند .