Rems, ems และพิกเซล อะไรคือความแตกต่าง?

เผยแพร่แล้ว: 2015-12-30

หากคุณเปิดสไตล์ชีตของเว็บไซต์ขึ้นมา คุณจะพบกับ rem, ems หรือพิกเซล หรือส่วนผสมอื่นๆ ในการจัดรูปแบบ CSS สิ่งเหล่านี้คือหน่วยหลักของการวัดที่ใช้ ไม่ว่าคุณจะออกแบบไซต์ตั้งแต่เริ่มต้น หรือถ้าคุณมี "ไซต์ที่ออกแบบไว้ก่อนหน้านี้" ที่ "สืบทอดมา" ซึ่งคุณต้องรักษาไว้ สิ่งเหล่านี้มีความสำคัญต่อการออกแบบตัวอักษร ระยะห่าง และขนาดอื่นๆ ในการออกแบบภาพ

อะไรทำให้หน่วยวัดหนึ่งดีกว่าหน่วยวัดอื่น ไม่มีคำตอบที่แน่ชัด และขึ้นอยู่กับสถานการณ์ การรู้กรณีการใช้งานและสิ่งที่จะได้ผลดีที่สุดจะช่วยกำหนดการวัดที่ดีที่สุดสำหรับการจัดสไตล์ของคุณ

พิกเซล

ตั้งแต่วันแรกของเว็บ พิกเซลเป็นตัวเลือกที่พบในสไตล์ชีตทุกที่ มีความน่าเชื่อถือ แม่นยำ และเทียบกันไม่ได้ พิกเซลได้รับการสนับสนุนในเบราว์เซอร์ทั้งหมด ซึ่งทำให้ง่ายต่อการใช้งาน

พิกเซล

แม้ว่าพิกเซลจะดีมาก แต่ก็มีข้อจำกัดบางประการ เนื่องจากเป็นการวัดที่ตั้งไว้ ผู้ใช้ไม่สามารถเปลี่ยนขนาดของข้อความเบราว์เซอร์เริ่มต้นในการตั้งค่าเบราว์เซอร์ได้ สิ่งต่าง ๆ ไม่ขยายขนาดเหมือนกับที่ทำกับ ems และ rem ทำให้การเปลี่ยนขนาดยากจากมุมมองการช่วยสำหรับการเข้าถึงสำหรับผู้ใช้ เราสามารถโต้แย้งได้ว่าผู้ใช้เพียงแค่ซูมเข้า แทนที่จะไปที่การตั้งค่าเบราว์เซอร์ ไม่มีคำตอบที่ถูกหรือผิด เป็นเพียงสิ่งที่ควรคำนึงถึง

พวกเขาคืออะไร?

พิกเซลเป็นหน่วยวัดที่ยึดตามขนาดที่ตั้งไว้ เป็นหน่วยวัดขนาดบนหน้าจอและใช้เมื่อต้องการการออกแบบที่แม่นยำ เราพูดเช่น "ความละเอียดพิกเซล" ดังนั้นเราจึงคุ้นเคยกับการวัดนี้

ตัวอย่างจะมีลักษณะดังนี้:

.main-header p {
font-size: 14px;
}

พิกเซลมีการใช้ในการออกแบบเว็บ แต่ในยุคของการออกแบบเว็บแบบไม่เชื่อเรื่องพระเจ้าของอุปกรณ์ การวัดหน้าจอไม่ใช่จุดสนใจหลัก มันคือทั้งหมดที่เกี่ยวกับวิธีทำให้เนื้อหาของเราพอดีกับอุปกรณ์จำนวนนับไม่ถ้วน ดังนั้นจึงมี ems และ rem ที่สามารถช่วยได้

Ems

หน่วยวัดนี้มีประวัติอันยาวนาน ย้อนกลับไปในปี 1996 และมีมาตั้งแต่ยุคแรกๆ ของ CSS พิกเซลถือเป็นแนวทางปฏิบัติที่ดีที่สุด ดังนั้น ems จึงไม่เป็นที่นิยมในช่วงแรกๆ ตั้งแต่นั้นมา พวกเขาได้รับความนิยมเนื่องจากจุดประสงค์ของพวกเขาคือทำหน้าที่เป็นหน่วยที่สัมพันธ์กับขนาดฟอนต์ในเนื้อหาเฉพาะและช่วยให้มีความสม่ำเสมอ

พวกเขาคืออะไร?

หากคุณเป็นใหญ่ในการพิมพ์แบบคลาสสิก คุณอาจรู้จัก “em” เพราะเป็นหน่วยวัดที่มาจากโลกแห่งการพิมพ์ การใช้หน่วยนี้เป็นหน่วยในการพิมพ์ การวัดนี้จะเท่ากับขนาดจุดที่ระบุในปัจจุบัน ตัวอย่างเช่น หนึ่ง em ในแบบอักษร 16 จุดคือ 16 จุด หน่วยนี้จะเหมือนกันสำหรับแบบอักษรทั้งหมดที่มีขนาดจุดที่กำหนด

วิชาการพิมพ์

เราไม่ได้หมายถึงการพิมพ์ในที่นี้ แล้ว ems จะอยู่ในการออกแบบเว็บได้อย่างไร? ขนาดสัมพัทธ์เป็นจุดขายที่สำคัญสำหรับ ems เพราะช่วยควบคุมขนาดขององค์ประกอบตามที่เกี่ยวข้องกับผู้อื่น Ems สามารถทำหน้าที่เป็นตัวสร้างที่ดีให้กับองค์ประกอบของเว็บไซต์ได้ เนื่องจากความจริงที่ว่าค่า em นั้นรวมกัน สิ่งสำคัญคือต้องเข้าใจจริงๆ ว่าการทบต้นนี้ทำงานอย่างไร

ทำความเข้าใจems

ในกรณีส่วนใหญ่ เว้นแต่ตั้งค่าเริ่มต้นของเบราว์เซอร์เป็นอย่างอื่น em คือ 16 px เมื่อคุณเห็น 1.5 em นั่นจะทำให้เป็น 24 พิกเซล มันไม่ง่ายอย่างนั้นเสมอไป จะเกิดอะไรขึ้นเมื่อมีการทำรัง? อาจเป็นได้ทั้งสะดวกและสับสน การรู้ว่าสิ่งต่าง ๆ ทำงานอย่างไรเมื่อทำงานกับ ems จะช่วยไขปริศนาได้อย่างแน่นอน ย่อหน้า "ฉันซ้อนอยู่" ด้านล่างมีขนาดเท่าใด

<div class="one">
<div class="two">
<div class="three">
<p>I’m nested</p>
</div>
</div>
</div>

.one, .two {

font-size: 0.5em;

}

.three {

font-size: 2em;

}

มีสาม divs ที่นี่ และย่อหน้าค่อนข้างซ้อนกัน ด้วยการเรียงซ้อนของ DOM คุณอาจต้องทำงานนักสืบบ้าง สมมติว่าเรากำลังทำงานกับ em ขนาด 16px เนื่องจากเป็นเรื่องปกติมากที่สุด

คลาส . .one จะคูณ 1em ด้วย 0.5 ซึ่งก็คือ 0.5 em หรือ 8 px ด้วยคลาส .two สิ่งนี้จะคูณด้วย 0.5 อีกครั้ง ซึ่งก็คือ .25 em หรือ 4px สิ่งต่าง ๆ เริ่มมีขนาดเล็กลง ดังนั้นคลาสของ . .three จะช่วยได้ เราจะหา .25 em และคูณมันด้วย 2 ผลลัพธ์ที่ได้คือ 0.5 em หรือ 8px

การตั้งค่าประเภทเบราว์เซอร์

สิ่งหนึ่งที่อาจช่วยได้คือการตั้งค่าขนาดบนองค์ประกอบ HTML ลักษณะเช่นนี้จะระบุขนาดชุด แทนที่จะอาศัยชุดข้อความที่ตั้งค่าโดยเบราว์เซอร์ ลองตั้งค่า 1 em เป็น 20px หากใช้กับตัวอย่างข้างต้น จะใช้หลักการเดียวกันกับการซ้อน โปรดจำไว้ว่า เราได้ระบุขนาดพิกเซลไว้ ซึ่งจะส่งผลต่อความสามารถในการปรับขนาดข้อความโดยใช้ตัวเลือกการตั้งค่าเบราว์เซอร์

html {

font-size: 20px;

}

นอกจากพิกเซลแล้ว ขนาดตัวอักษรยังสามารถกำหนดเป็นเปอร์เซ็นต์ได้อีกด้วย ประเด็นก็คือว่า ems สามารถทำงานร่วมกับหน่วยวัดอื่นๆ ได้ คุณจะพบสิ่งนี้อย่างแน่นอน เนื่องจากเป็นเรื่องปกติธรรมดาที่จะตั้งค่าฟอนต์เนื้อหาเป็นเปอร์เซ็นต์เพื่อช่วยตั้งค่าพื้นฐาน สมมติว่าขนาดแบบอักษรเริ่มต้นที่ 62.5% ของขนาดเอ็ม ด้วยขนาด em 16px ขนาดตัวอักษรจะเป็น 10px

body {

font-size:62.5%;

}

เมื่อคุณมีความเข้าใจแล้ว ems อาจเป็นสินทรัพย์ที่ดีต่อโครงการของคุณ การปรับขนาดข้อความขององค์ประกอบย่อยเป็นองค์ประกอบหลักอาจมีประโยชน์อย่างแน่นอน นอกจากนี้ ems ยังช่วยให้ระบุช่องว่างภายในที่ใหญ่กว่าบนคอนเทนเนอร์ข้อความได้ง่ายกว่าที่พบในการเว้นวรรคคำ ทำให้เป็นไปตามกฎการมองเห็นของความใกล้เคียง รายการที่เกี่ยวข้องจะถูกจัดกลุ่มด้วยสายตา และไม่เกะกะ และจัดเลย์เอาต์ที่เป็นระเบียบ

คุณสมบัติที่ยอดเยี่ยมอีกประการของ ems คือข้อดีในการเข้าถึง เนื่องจากสัมพันธ์กับรูทของ DOM ems จึงเหมาะอย่างยิ่งสำหรับการปรับขนาดการออกแบบทั้งหมดตามความต้องการของผู้ใช้ ในการตั้งค่าเบราว์เซอร์ คุณสามารถเปลี่ยนขนาดแบบอักษรเริ่มต้นได้อย่างง่ายดาย ซึ่งจะเปลี่ยนการคำนวณในรูปแบบ ems ไปเป็นทั้งเว็บไซต์

เรมส์

พวกเขาคืออะไร?

Rems เป็นส่วนเสริมล่าสุดของไทม์ไลน์ CSS หน่วยวัดนี้ถูกนำมาใช้กับ CSS3 และแก้ปัญหาบางอย่างเกี่ยวกับพิกเซลและ ems ด้วยชื่อที่คล้ายกับ "ems" คุณอาจสงสัยว่า "r" ย่อมาจากอะไร มาจากคำว่า Root EM

รูทเป็นองค์ประกอบ HTML ขนาดที่ระบุในองค์ประกอบ HTML เป็นพื้นฐานสำหรับการวัดนี้ คุณจะเห็นว่าเราได้ใช้ขนาด em บนองค์ประกอบ HTML; สามารถรวมการวัดทั้งสองแบบเข้าด้วยกันได้

html {
font-size: 1em;
}

.one {
font-size: 1.2rem; /* 1.2 x the value set in html */
}

เบราว์เซอร์สมัยใหม่รองรับ rems แต่อย่าลืมตรวจสอบกับ BrowserStack ว่าคุณต้องรองรับเบราว์เซอร์รุ่นเก่าอะไรก่อนที่จะยอมรับ rem อย่าปล่อยให้เบราว์เซอร์รุ่นเก่ารั้งคุณไว้ คุณสามารถระบุพิกเซลสำรองสำหรับสิ่งที่ต่ำกว่า IE9 ได้ตลอดเวลา เบราว์เซอร์สมัยใหม่ละเว้นพิกเซลเพราะชอบ rems อาจมีลักษณะดังนี้:

.my-text {

font-size: 24px;

font-size: 1.5rem;

}

ทำความเข้าใจ rems

จำคณิตศาสตร์ที่เราต้องทำสำหรับองค์ประกอบที่ซ้อนกันของ ems ได้ไหม นั่นไม่จำเป็นสำหรับ rems ทั้งหมดขึ้นอยู่กับองค์ประกอบรูทนั้น เราไม่จำเป็นต้องกังวลเกี่ยวกับองค์ประกอบหลัก เนื่องจากจะขึ้นอยู่กับรากเสมอ

<div class="one">
<div class="two">
<div class="three">
<p>I’m nested</p>
</div>
</div>
</div>

html {

font-size: 1em;

}

.one, .two {

font-size: 0.52em;

}

.three {

font-size: 2rem;

}

มีสาม divs ที่นี่ และย่อหน้าค่อนข้างซ้อนกันเหมือนที่เราเห็นในตัวอย่าง em อีกครั้ง สมมติว่าเรากำลังทำงานกับขนาด em 16px

คลาส . .one และ .two มีขนาดที่กำหนด แต่มันไม่ได้มีความสำคัญอะไรที่นี่ เพราะการซ้อนไม่ได้รับผลกระทบกับ rems เช่นเดียวกับ ems สิ่งที่สำคัญจริงๆ คือการจัดสไตล์ของ .three ซึ่งก็คือ 2 ems ย่อหน้าจะขึ้นอยู่กับองค์ประกอบ HTML ของ 1em การวัดนี้จะเพิ่มเป็นสองเท่าทำให้เรามี 2 rems หรือ 32 พิกเซล

ต้องการปรับขนาดทุกอย่างให้เท่ากันหรือไม่? เพียงปรับขนาดองค์ประกอบรูท สิ่งนี้ยังมีประโยชน์เมื่อปรับขนาดเริ่มต้นของเบราว์เซอร์ คุณสามารถดูว่า ems อนุญาตได้อย่างไร rems ก็เช่นกัน

มีข้อกังวลน้อยกว่ามากเกี่ยวกับพฤติกรรมการซ้อนที่คาดเดาไม่ได้ด้วย rems เข้าใจได้ง่ายว่าองค์ประกอบรูทเข้ามามีบทบาทอย่างไร และปัจจัยดังกล่าวส่งผลต่อสไตล์ของคุณอย่างไรเมื่อใช้ rems

เมื่อเปรียบเทียบการวัดต่างๆ คุณจะเห็นว่ามีข้อดีและข้อเสีย การเข้าใจจริงๆ ว่าหน่วยวัดทำงานอย่างไร และทำงานอย่างไรกับการตั้งค่าเบราว์เซอร์ จะช่วยให้คุณเลือกหน่วยวัดที่จะทำงานได้ดีที่สุดสำหรับสถานการณ์หรือโครงการ