คุณไม่สามารถรับมิติทางกายภาพที่แท้จริงหรือ DPI จริงได้และแม้ว่าคุณจะทำได้ แต่ก็ไม่สามารถทำอะไรกับมันได้
นี่เป็นเรื่องราวที่ค่อนข้างยาวและซับซ้อนดังนั้นให้อภัยฉันด้วย
เว็บและเบราว์เซอร์ทั้งหมดกำหนด 1px เป็นหน่วยที่เรียกว่าพิกเซล CSS พิกเซล CSS ไม่ใช่พิกเซลจริง แต่เป็นหน่วยที่ถือว่ามีขนาด 1/96 ของนิ้วตามมุมมองของอุปกรณ์ นี้จะถูกระบุเป็นพิกเซลอ้างอิง
พิกเซลอ้างอิงคือมุมมองภาพของหนึ่งพิกเซลบนอุปกรณ์ที่มีความหนาแน่นของพิกเซล 96dpi และระยะห่างจากตัวอ่านความยาวของแขน สำหรับความยาวของแขนเล็กน้อย 28 นิ้วดังนั้นมุมมองภาพจึงอยู่ที่ประมาณ 0.0213 องศา สำหรับการอ่านที่ความยาวของแขน 1px จึงเท่ากับ 0.26 มม. (1/96 นิ้ว)
ในพื้นที่ 0.26 มม. เราอาจมีพิกเซลของอุปกรณ์จริงจำนวนมาก
เบราว์เซอร์ทำสิ่งนี้ด้วยเหตุผลดั้งเดิมเป็นหลัก - จอภาพส่วนใหญ่เป็น 96dpi เมื่อเว็บเกิด - แต่เพื่อความสม่ำเสมอใน "สมัยก่อน" ปุ่ม 22px บนหน้าจอ 15 นิ้วที่ 800x600 จะมีขนาดเป็นสองเท่าของปุ่ม 22px บน จอภาพขนาด 15 นิ้วที่ 1600x1200 ในกรณีนี้ DPI ของหน้าจอคือ 2x (ความละเอียดสองเท่าในแนวนอน แต่อยู่ในพื้นที่ทางกายภาพเดียวกัน) นี่เป็นสถานการณ์ที่ไม่ดีสำหรับเว็บและแอปดังนั้นระบบปฏิบัติการส่วนใหญ่จึงคิดค้นวิธีต่างๆในการกำหนดค่าพิกเซลแบบนามธรรมในหน่วยอิสระของอุปกรณ์ (DIPS บน Android, PT บน iOS และCSS Pixel บนเว็บ )
เบราว์เซอร์ iPhone Safari เป็นตัวแรก (สำหรับความรู้ของฉัน) ที่แนะนำแนวคิดของวิวพอร์ต สิ่งนี้สร้างขึ้นเพื่อเปิดใช้งานแอปพลิเคชันสไตล์เดสก์ท็อปเต็มรูปแบบเพื่อแสดงผลบนหน้าจอขนาดเล็ก วิวพอร์ตถูกกำหนดให้กว้าง 960px โดยพื้นฐานแล้วจะซูมหน้าออกเป็น 3x (เดิมคือ iPhone 320px) ดังนั้น 1 CSS พิกเซลเท่ากับ 1/3 ของพิกเซลจริง เมื่อคุณกำหนดวิวพอร์ตแม้ว่าคุณจะทำให้อุปกรณ์นี้จับคู่พิกเซล 1 CSS = 1 พิกเซลจริงที่ 163dpi
ด้วยการใช้วิวพอร์ตที่มีความกว้างเป็น "ความกว้างของอุปกรณ์" ช่วยให้คุณไม่ต้องตั้งค่าความกว้างของวิวพอร์ตในแต่ละอุปกรณ์ให้มีขนาดพิกเซล CSS ที่เหมาะสมที่สุดเบราว์เซอร์ก็ทำเพื่อคุณ
ด้วยการเปิดตัวอุปกรณ์ DPI สองเท่าผู้ผลิตโทรศัพท์มือถือไม่ต้องการให้หน้าเว็บบนมือถือมีขนาดเล็กลง 50% ดังนั้นพวกเขาจึงนำแนวคิดที่เรียกว่า devicePixelRatio (ฉันเชื่อว่าเป็นครั้งแรกใน webkit บนอุปกรณ์เคลื่อนที่) ซึ่งจะช่วยให้พวกเขาสามารถเก็บพิกเซล CSS 1 พิกเซลไว้ได้ประมาณ 1 / 96 นิ้ว แต่ขอให้คุณเข้าใจว่าเนื้อหาของคุณเช่นรูปภาพอาจต้องมีขนาดเป็นสองเท่า หากคุณดูซีรีส์ iPhone อุปกรณ์ทั้งหมดของพวกเขาบอกว่าความกว้างของหน้าจอในพิกเซล CSS คือ 320pxแม้ว่าเราจะรู้ว่าไม่เป็นความจริงก็ตาม
ดังนั้นหากคุณสร้างปุ่มให้มีขนาด 22px ในพื้นที่ CSS การแสดงบนหน้าจอจริงจะเป็นอัตราส่วนพิกเซลอุปกรณ์ 22 * ที่จริงฉันพูดแบบนี้มันไม่ได้เป็นเช่นนี้เพราะอัตราส่วนพิกเซลของอุปกรณ์ไม่เคยแน่นอนเช่นกันผู้ผลิตโทรศัพท์ตั้งค่าเป็นตัวเลขที่ดีเช่น 2.0, 3.0 แทนที่จะเป็น 2.1329857289918
โดยสรุปพิกเซล CSS เป็นอุปกรณ์ที่ไม่ขึ้นกับอุปกรณ์และทำให้เราไม่ต้องกังวลกับขนาดทางกายภาพของหน้าจอและความหนาแน่นของการแสดงผลเป็นต้น
คุณธรรมของเรื่องนี้คือ: อย่ากังวลเกี่ยวกับการทำความเข้าใจขนาดพิกเซลทางกายภาพของหน้าจอ คุณไม่จำเป็นต้องใช้มัน 50px ควรมีลักษณะใกล้เคียงกันในทุกอุปกรณ์มือถือซึ่งอาจแตกต่างกันเล็กน้อย แต่ CSS Pixel เป็นวิธีที่ไม่ขึ้นกับอุปกรณ์ของเราในการสร้างเอกสารและ UI ที่สอดคล้องกัน
แหล่งข้อมูล: