เมื่อตั้งค่าขนาดของฟอนต์ใน CSS ฉันควรใช้ค่าเปอร์เซ็นต์ ( %
) หรือem
? คุณสามารถอธิบายข้อดีได้หรือไม่?
เมื่อตั้งค่าขนาดของฟอนต์ใน CSS ฉันควรใช้ค่าเปอร์เซ็นต์ ( %
) หรือem
? คุณสามารถอธิบายข้อดีได้หรือไม่?
คำตอบ:
มีบทความที่ดีมากในการพิมพ์บนเว็บเป็นรายการนอกเหนือ
ข้อสรุปของพวกเขา:
การปรับขนาดข้อความและความสูงของบรรทัดใน ems พร้อมเปอร์เซ็นต์ที่ระบุบนเนื้อความ (และข้อแม้เสริมสำหรับ Safari 2) แสดงให้เห็นว่าให้ข้อความที่ถูกต้องและปรับขนาดได้ในทุกเบราว์เซอร์ที่ใช้กันทั่วไปในปัจจุบัน นี่เป็นเทคนิคที่คุณสามารถใส่ในกระเป๋าชุดอุปกรณ์และใช้เป็นแนวทางปฏิบัติที่ดีที่สุดในการปรับขนาดข้อความใน CSS ที่ถูกใจทั้งนักออกแบบและผู้อ่าน
line-heights
จะเขียนได้ดีกว่าโดยไม่มีหน่วยใด ๆ เลย สิ่งนี้ได้รับอนุญาตตามข้อกำหนดนี้และหลีกเลี่ยงem
ความ
1
มีขนาดใหญ่กว่า ตัวอย่างเช่น iPhone 4 มีความกว้างหน้าจอจริง 640px แต่ปรากฏเป็น 320 "CSS" พิกเซล (DPR = 2) ดังนั้นเว็บไซต์จึงไม่เล็กลง!
จากhttp://archivist.incutio.com/viewlist/css-discuss/1408
%: เบราว์เซอร์บางตัวไม่รองรับเปอร์เซ็นต์สำหรับขนาดฟอนต์ แต่ตีความ 150% เป็น 150px (ตัวอย่างเช่น NN4 บางเวอร์ชัน) IE ยังมีปัญหาเกี่ยวกับเปอร์เซ็นต์ขององค์ประกอบที่ซ้อนกัน ดูเหมือนว่า IE ใช้เปอร์เซ็นต์เทียบกับวิวพอร์ตแทนที่จะสัมพันธ์กับองค์ประกอบหลัก ปัญหาอื่น (แม้ว่าจะถูกต้องตามข้อกำหนด W3C) ใน Moz / Ns6 คุณไม่สามารถใช้เปอร์เซ็นต์ที่สัมพันธ์กับองค์ประกอบที่ไม่มีความสูง / ความกว้างที่ระบุได้
em: บางครั้งเบราว์เซอร์ใช้ขนาดอ้างอิงที่ไม่ถูกต้อง แต่หน่วยสัมพัทธ์เป็นขนาดที่มีปัญหาน้อยที่สุด คุณอาจพบว่ามันถูกตีความเป็น px ในบางครั้ง
pt: ความละเอียดแตกต่างกันมากและไม่ควรใช้สำหรับการแสดงผล ค่อนข้างปลอดภัยสำหรับการใช้งานพิมพ์
px: หน่วยสัมบูรณ์เดียวที่เชื่อถือได้บนหน้าจอ มันอาจตีความผิดในการพิมพ์ได้เนื่องจากจุดหนึ่งมักประกอบด้วยหลายพิกเซลและทำให้ทุกอย่างเล็กลงอย่างน่าขัน
ทั้งปรับขนาดตัวอักษรให้สัมพันธ์กับสิ่งที่เป็นอยู่ 1.5em เท่ากับ 150% ข้อได้เปรียบเพียงอย่างเดียวคือความสามารถในการอ่านให้เลือกสิ่งที่คุณพอใจมากที่สุด
ความแตกต่างที่แท้จริงเกิดขึ้นเมื่อคุณไม่ใช้กับขนาดตัวอักษร การตั้งค่าpadding
ของไม่ได้เช่นเดียวกับ1em
จะสัมพันธ์กับขนาดตัวอักษรเสมอ แต่อาจสัมพันธ์กับขนาดตัวอักษรความกว้างความสูงและอาจเป็นเรื่องอื่น ๆ ที่ฉันไม่รู้100%
em
%
เนื่องจากเบราว์เซอร์ทั้งหมด (เกือบ?) ตอนนี้ปรับขนาดหน้าโดยรวมแล้วแทนที่จะเป็นแค่ข้อความปัญหาก่อนหน้านี้เกี่ยวกับpx
เทียบ%
กับem
s ในแง่ของการปรับขนาดแบบอักษรที่สามารถเข้าถึงได้นั้นค่อนข้างจะสงสัย
ดังนั้นคำตอบก็คือมันอาจจะไม่สำคัญ ใช้อะไรก็ได้ที่เหมาะกับคุณ
%
เป็นสิ่งที่ดีเพราะสามารถปรับขนาดสัมพัทธ์ได้
px
เป็นสิ่งที่ดีเพราะมันค่อนข้างง่ายในการจัดการความคาดหวังเมื่อใช้มัน
em
จะมีประโยชน์เมื่อใช้กับองค์ประกอบเค้าโครงเนื่องจากสามารถกำหนดขนาดตามสัดส่วนที่เกี่ยวข้องกับขนาดข้อความได้
em
ตัวอย่างเช่นเมื่อเทียบกับ จากนั้นฉันคิดว่าคำตอบเกี่ยวกับ SO ควรมุ่งมั่นที่จะเป็นอมตะ - มันเป็นฐานความรู้หลังจากทั้งหมด Wikipedia ของการเขียนโปรแกรม :) เนื่องจาก Wikipedia ได้รับการอัปเดตเพื่อสะท้อนข้อเท็จจริงดังนั้นควรตอบในความเห็นที่ต่ำต้อยของฉัน
เกี่ยวกับความแตกต่างระหว่างหน่วย css %
และem
.
เท่าที่ฉันเข้าใจ (อย่างน้อยก็ในทางทฤษฎี / แนวความคิด แต่อาจไม่ใช่วิธีที่สองหน่วยนี้จะถูกนำไปใช้ในเบราว์เซอร์) สองหน่วยนี้เทียบเท่ากันกล่าวคือถ้าคุณคูณem
ค่าของคุณด้วย100
แล้วแทนที่em
ด้วย%
มันควรจะเป็นสิ่งเดียวกันหรือไม่
หากมีความแตกต่างที่แท้จริงระหว่าง em และ% มีใครช่วยอธิบายได้บ้าง (หรือให้ลิงค์ไปยังคำอธิบาย)
(ฉันต้องการเพิ่มความคิดเห็นนี้ของฉันที่มันจะอยู่นั่นคือเยื้องใต้คำตอบโดย"Liam, answered Sep 25 '08 at 11:21"
เนื่องจากฉันอยากรู้ว่าทำไมคำตอบของเขาจึงถูกลดลง แต่ฉันไม่สามารถเข้าใจได้ว่าจะแสดงความคิดเห็นอย่างไรจึงต้องเขียน "กระทู้นี้ทั่วโลก" ตอบกลับ)
ตามที่ชาวกัลเวย์กล่าวถึง px เป็นสิ่งที่น่าเชื่อถือที่สุดสำหรับการพิมพ์บนเว็บเนื่องจากทุกอย่างที่คุณทำบนหน้าเว็บส่วนใหญ่จะอ้างอิงถึงจอภาพคอมพิวเตอร์ ปัญหาเกี่ยวกับขนาดที่แน่นอนคือบางเบราว์เซอร์ (IE) จะไม่ปรับขนาดองค์ประกอบค่าพิกเซลบนหน้าเว็บดังนั้นเมื่อคุณพยายามย่อ / ขยายทุกอย่างจะปรับยกเว้นองค์ประกอบเหล่านั้น
ฉันไม่รู้ว่า IE8 จัดการสิ่งนี้อย่างถูกต้องหรือไม่ แต่ผู้จำหน่ายเบราว์เซอร์รายอื่นทั้งหมดจัดการพิกเซลได้ดีและยังคงเป็นกรณีส่วนน้อยที่ผู้ใช้ต้องการขยาย / ลดขนาดข้อความ (กล่องข้อความนี้ใน SO อาจเป็นข้อยกเว้น) หากคุณต้องการสกปรกจริงๆคุณสามารถเพิ่มฟังก์ชันจาวาสคริปต์เพื่อทำให้ขนาดข้อความของคุณใหญ่ขึ้นและเสนอปุ่ม "เล็ก" / "ใหญ่กว่า" ให้กับผู้ใช้
ไลบรารีส่วนติดต่อผู้ใช้ Yahoo ( http://developer.yahoo.com/yui/ ) มีชุดคลาส css พื้นฐานที่ดีซึ่งใช้ในการ "รีเซ็ต" การตั้งค่าเฉพาะเบราว์เซอร์เพื่อให้พื้นฐานสำหรับการแสดงไซต์นั้นเหมือนกันสำหรับทุกคน (รองรับ) เบราว์เซอร์
ด้วย YUI เราควรใช้เปอร์เซ็นต์