Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

ความแตกต่างระหว่างหน่วย PX, EM และ Percent ใน CSS

CSS มีหน่วยวัดหลายแบบ สำคัญ 3 แบบคือ px (absolute), em (relative to font-size), และ % (relative to parent context)

1. PX (Pixels) - หน่วยคงที่

กำหนดขนาดคงที่ในหน่วยพิกเซลของหน้าจอ ไม่เปลี่ยนแปลงตาม context

div { padding: 40px; }

2. EM - หน่วยสัมพัทธ์กับ font-size

1em = font-size ของ element นั้นๆ (หรือสืบทอดมาจาก parent) หาก font-size = 16px แล้ว 1em = 16px, 2em = 32px

p { letter-spacing: 4em; }  /* ห่าง 4 เท่าของ font-size ปัจจุบัน */

ข้อควรระวัง: em สะสม (compound) ได้ หาก parent มี font-size: 1.2em และ child ก็มี 1.2em จะได้ 1.44 เท่าของ root

3. Percent (%) - หน่วยสัมพัทธ์กับ parent

คำนวณจากค่าของ parent element (ขึ้นอยู่กับคุณสมบัติ: width/height คำนวณจาก parent's width/height, font-size คำนวณจาก parent's font-size, margin/padding คำนวณจาก parent's width)

p { font-size: 14pt; line-height: 80%; }  /* line-height = 80% ของ 14pt = 11.2pt */

ตารางเปรียบเทียบ

หน่วยประเภทอ้างอิงจากเหมาะสำหรับ
pxAbsoluteหน้าจอBorder, shadow, fixed-size elements, media queries
emRelativefont-size ของ element ตัวเอง/parentTypography, spacing ที่ควร scale กับ font, media queries (accessible)
%RelativeParent element (context ขึ้นกับ property)Layout (width/height), responsive design, fluid grids
remRelativeRoot font-size (html element)Typography system, spacing system ที่ consistent ทั้งเว็บ

แนวทางปฏิบัติสมัยใหม่: ใช้ rem สำหรับ font-size และ spacing ทั่วไป ใช้ % สำหรับ layout width ใช้ px สำหรับรายละเอียดเล็กๆ (border, box-shadow) หลีกเลี่ยง em สำหรับ spacing เพราะ compounding effect