'property: 0' หรือ 'property: 0px' ใน CSS?


88

ฉันเคยเห็นสัญกรณ์นี้ใช้กันมากและฉันก็สงสัยว่ามีความแตกต่างที่น่าสังเกตระหว่างสัญลักษณ์ทั้งสองนี้หรือไม่?

element#id
{
  property: 0;
}

และ

element#id
{
  property: 0px;
}

ฉันใช้property: 0px;ตลอดเวลาเพราะฉันพบว่ามันดูสะอาดขึ้น แต่ฉันไม่แน่ใจจริงๆว่าเบราว์เซอร์ตีความ0pxแตกต่างจาก0.

ไม่มีใครรู้ว่าอันไหนดีกว่าหรือถูกต้อง


1
คำถามที่ดีและก่อนหน้านี้ที่น่าจะซ้ำกัน: stackoverflow.com/q/5359222/292060แต่คำถามนั้นมีคำตอบที่ดีกว่าโดยอ้างถึงข้อมูลจำเพาะ
goodeye

1
ไม่ว่าคุณจะใช้แบบใดตรวจสอบให้แน่ใจว่าสอดคล้องกันตลอดทั้งโครงการ
PBwebD

คำตอบ:


56

ตัวระบุหน่วยเป็นทางเลือกแต่ไม่มีการเพิ่มประสิทธิภาพที่ระบุไว้ (แม้ว่าคุณจะบันทึกอักขระสองตัว)

CSS2 -จากข้อกำหนด W3C CSS 2.1 สำหรับไวยากรณ์และชนิดข้อมูลพื้นฐาน :

รูปแบบของค่าความยาว (แสดงโดย <length> ในข้อกำหนดนี้) คือ <number> (มีหรือไม่มีจุดทศนิยม) ตามด้วยตัวระบุหน่วย (เช่น px, em ฯลฯ ) หลังจากความยาวเป็นศูนย์ตัวระบุหน่วยเป็นทางเลือก

(เน้นของฉัน)

CSS3 -จากค่า CSS ของ W3C และโมดูลหน่วยระดับ 3 (ปัจจุบันอยู่ในคำแนะนำของผู้สมัครในขณะที่เขียนนี้)

สำหรับความยาวเป็นศูนย์ตัวระบุหน่วยเป็นทางเลือก (เช่นสามารถแทนค่าทางไวยากรณ์เป็น 0)


1
สงสัยคุณประหยัด 2 ไบต์จริงๆเมื่อการบีบอัด GZIP ทำงานอยู่ มันเป็นเรื่องของสิ่งที่คุณรู้สึกสบายใจสำหรับฉัน อย่างไรก็ตาม CSS Linters บางตัวอาจไม่ชอบ 0px
Manuel Arwed Schmidt

34

แม้ว่าหน่วยจะเป็นทางเลือกเมื่อมีค่า0แต่ฉันมักจะปล่อยไว้เนื่องจากฉันสามารถปรับแต่งค่าด้วยเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome ได้โดยคลิกที่ค่าและกดแป้นลูกศรขึ้น / ลง หากไม่มีหน่วยนั่นเป็นไปไม่ได้จริงๆ

นอกจากนี้ตัวย่อ CSS จะดึงหน่วยออกจาก0ค่าใด ๆ ดังนั้นในท้ายที่สุดมันจะไม่สำคัญ


+1 สำหรับการสังเกตว่า minifiers รู้เกี่ยวกับสิ่งนี้และมีฟังก์ชันการทำงานที่จะมีโดยการรวมไว้ด้วย
Graham P Heath

9
เครื่องมือสำหรับนักพัฒนาของ Chrome จะมีค่าเริ่มต้นเป็น px หากคุณกดแป้นลูกศรขึ้น / ลงบน 0 โดยไม่มีตัวระบุ นอกจากนี้ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome หากคุณลูกศรลงไปที่ 0 มันจะยังคงพิกเซลไว้
PBwebD

1
@ testing123: ฉันไม่คิดว่าตอนนั้นจะเขียนคำตอบนี้ แต่ก็น่ารู้
Blender

จะมีปัญหาเวลาดำเนินการกับ 0 และ 0px หรือไม่หากมีการใช้งานหลายที่ในแอปพลิเคชัน
Kurkula

16

พวกเขาก็เหมือน ๆ กัน. เบราว์เซอร์แปลว่าทั้งคู่เป็น 0 ดังนั้นเลือกอะไรก็ได้ที่อ่านง่าย


มีทางเลือกที่ 'ถูกต้อง' หรือเป็นไปตามมาตรฐานหรือไม่? ฉันรู้ว่าคุณไม่สามารถเขียนได้border: 3 solidเนื่องจากไม่มีหน่วย แต่มีมาตรฐานเว็บใดบ้างที่เป็นศูนย์
Blender

1
ดังที่ฉันพูดถึงในคำตอบของฉันมันเป็นเพราะมันเหมือนกันทั้งหมด: ศูนย์คูณอะไรก็ยังคงเป็นศูนย์ไม่ว่าคุณจะคูณด้วยขนาดของพิกเซล, em, ex หรือตามเปอร์เซ็นต์
AgentConundrum

ไม่แน่ใจว่าคุณหมายถึงอะไรตามมาตรฐานเว็บ แต่ "margin: 10px 0 0 10px" ใช้งานได้ดีเช่นเดียวกับ "border: 0" หมายความว่าคุณสามารถใช้ศูนย์เท่ากับ "none" ได้
ทอม

1
@blender ตรวจสอบคำตอบของฉันด้านล่างสำหรับมาตรฐานเว็บพร้อมลิงก์ไปยังเอกสาร
Chris Bier

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

11

ศูนย์ของทุกสิ่งเป็นศูนย์ 0px= 0%= 0em= 0pt=0

คนส่วนใหญ่ออกจากหน่วยเพราะเป็นเพียงความยุ่งเหยิงที่ไม่จำเป็น


1
ข้อยกเว้นคือหน่วยเวลา: 0ไม่ใช่ทางเลือกที่ถูกต้องสำหรับ0s/0ms
Henrik Christensen

5

0px = 0em = 0ex = 0% = 0เท่าที่ผมทราบมีความแตกต่างระหว่างพวกเขาไม่ได้เนื่องจาก ขึ้นอยู่กับคุณในฐานะนักพัฒนาที่จะตัดสินใจเลือกสิ่งที่คุณชอบที่สุด (เว้นแต่คุณจะมีมาตรฐานการเข้ารหัสขององค์กรที่คุณต้องปฏิบัติตาม)

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


6
ฉันกำลังส่งข้อมูลจำนวนมาก (เช่นถ้าคุณเป็น Google) คุณควรใช้เครื่องมือลดขนาดที่ทำเพื่อคุณ: p
John Kurlak

4

ศูนย์พิกเซลเท่ากับศูนย์นิ้วและศูนย์เมตรเป็นต้น 0คือทั้งหมดที่คุณต้องการ


ครู่หนึ่งฉันจะโหวตโพสต์ของคุณเพราะฉันคิดว่าข้อความของคุณเกี่ยวกับ 0 พิกเซลเท่ากับ 0 นิ้วและอื่น ๆ เป็นเท็จ :) เพราะในใจกำลังคิดว่าจะเป็นไปได้อย่างไร? เป็นหน่วยงานที่แตกต่างกัน
Web_Designer

2

ผมเองพบว่าสะอาดกว่า0 0pxนั่นคืออักขระพิเศษสองตัวที่สามารถเพิ่มได้ ทำไมต้องเพิ่มไบต์พิเศษในเมื่อคุณไม่ต้องการ ฉันได้เห็นpadding: 0px 0px 0px 0pxสิ่งที่สามารถแสดงออกได้ง่ายว่าpadding: 0บ่อยเกินไป


1

คุณสามารถใช้ได้อย่างใดอย่างหนึ่ง - คำแนะนำที่ดีที่สุดของฉันคืออย่ากังวลมากเกินไป แต่ต้องทำอย่างสม่ำเสมอไม่ว่าจะด้วยวิธีใดวิธีหนึ่ง โดยส่วนตัวแล้วฉันชอบที่จะระบุ "0px" ด้วยเหตุผลดังต่อไปนี้:

  • การใช้ 0px ทำให้สิ่งต่างๆสอดคล้องกับขนาด "px" อื่น ๆ ทั้งหมดที่คุณระบุไว้
  • นอกจากนี้ยังมีรายละเอียดมากกว่าและทำให้ชัดเจนมากว่าคุณกำลังตั้งค่าความยาวเป็นศูนย์แทนที่จะตั้งค่าสถานะ "ปิดสิ่งนี้"
  • ง่ายกว่าเล็กน้อยในการปรับแต่งค่า '0px' เพื่อทำให้เป็นค่าอื่นหากจำเป็น

0

อย่างที่คนอื่น ๆ พูดมันไม่สำคัญหรอกว่ามันจะเป็น 0 หรือไม่แม้ว่าฉันจะเลือกที่จะเพิ่มการวัดให้กับค่าทั้งหมดของฉันดังนั้นใครก็ตามที่ดูไฟล์ CSS ของฉันจะสามารถวัดได้ว่าการวัดใดที่พวกเขาน่าจะจัดการกับที่อื่น


0

ฉันรู้ว่าไม่ควรมีความแตกต่างระหว่าง0pxและ0แต่ฉันพบว่าบางครั้งก็มีบางครั้งมี

ฉันพยายามจัดวัตถุให้อยู่กึ่งกลางเช่นนี้:

position: absolute;
left: max(0px, calc((100vw - 400px)/2));
max-width: 400px;   

มันทำงานได้ แต่ถ้าคุณแทน0pxกับ0มันไม่ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.