em, rem, %, vh, vw bir-biridan nimasi bilan farq qiladi?
JuniorCSS #css #units
Savol
CSS'dagi em, rem, %, vh, vw o'lchov birliklari bir-biridan nimasi bilan farq qiladi?
Qisqa javob
Ularning barchasi nisbiy, ammo turli narsalarga nisbatan: em — ota shriftining o'lchamiga (yoki font-size bo'lmagan xususiyatlar uchun elementning o'ziniki), rem — root <html> elementining shrift o'lchamiga, % — otaning o'lchamiga (har bir xususiyat uchun o'ziniki), vh/vw — ko'rish oynasi (viewport)ning balandligi/kengligiga.
Batafsil javob
em—font-sizexususiyati uchun eng yaqin otaningfont-sizeiga yokipadding,margin,widthva h.k. uchun elementning o'ziga nisbatan. Shu sababliemto'planib boradi: agarfont-size: 1.5emga ega elementlarni bir-birining ichiga joylashtirsak, o'lcham kaskadli tarzda o'sib boradi.rem("root em") — joylashuvidan qat'i nazar, har doim<html>elementiningfont-sizeiga (standart holda16px) nisbatan. Shu sabablirememdan ko'ra bashorat qilinadigan bo'lib, odatda otstuplar va shrift o'lchamlari uchun afzal ko'riladi.%— otaning tegishli xususiyatiga nisbatan:width: 50%— ota kengligining yarmi,line-height: 150%— elementning o'zining shrift o'lchamining bir yarim baravari va h.k. "Ota"ning qiymati aniq CSS-xususiyatiga bog'liq.vh/vw— mos ravishda viewport (brauzer oynasining ko'rinadigan hududi) balandligi/kengligining 1%i.100vh— ota konteynerlardan qat'i nazar, ekranning to'liq balandligi. Mobil brauzerlarda bir nuance bor: manzil satri haqiqiy balandlikni o'zgartirishi mumkin (shu sababli zamonaviy CSS'dadvh/svh/lvhpaydo bo'lgan).
Misol
html { font-size: 16px; }
.parent {
font-size: 20px;
}
.child {
font-size: 1.5em; /* 20px * 1.5 = 30px, otaga bog'liq */
padding: 1.5rem; /* 16px * 1.5 = 24px, doim html'dan */
width: 50%; /* .parent kengligining yarmi */
}
.hero {
height: 100vh; /* ekranning to'liq balandligi */
width: 100vw; /* ekranning to'liq kengligi */
}
Qo'shimcha savollar
- Nega ichma-ich joylashgan
emshriftning kutilmagan "o'sib ketishi"ga olib kelishi mumkin? vhbilan yangidvh/svh/lvho'rtasida qanday farq bor?- Moslashuvchan vyorstka uchun qachon
%, qachonremishlatish kerak?