'property: 0' atau 'property: 0px' di CSS?

88

Saya telah melihat notasi ini banyak digunakan, dan saya bertanya-tanya, apakah ada perbedaan mencolok antara kedua notasi ini?

element#id
{
  property: 0;
}

dan

element#id
{
  property: 0px;
}

Saya menggunakan property: 0px;sepanjang waktu, karena menurut saya tampilannya lebih bersih, tetapi saya tidak begitu yakin apakah penafsiran browser 0pxberbeda dari 0.

Adakah yang tahu mana yang lebih baik atau benar?

Blender
sumber
1
Pertanyaan bagus, dan lebih awal dari kemungkinan duplikat ini: stackoverflow.com/q/5359222/292060 , tetapi pertanyaan itu memiliki jawaban yang lebih baik, mengutip spesifikasi.
goodeye
1
Apa pun yang Anda gunakan, pastikan untuk tetap konsisten selama keseluruhan proyek.
PBwebD

Jawaban:

56

Pengidentifikasi Unit yang opsional , tetapi tidak ada peningkatan kinerja kondang (meskipun Anda sedang menabung dua karakter).

CSS2 - Dari W3C CSS 2.1 Spesifikasi Sintaks dan tipe data dasar :

Format nilai panjang (dilambangkan dengan <length> dalam spesifikasi ini) adalah <number> (dengan atau tanpa titik desimal) yang segera diikuti oleh pengenal unit (misalnya, px, em, dll.). Setelah panjang nol, pengenal unit bersifat opsional.

(Penekanan saya)

CSS3 - Dari Nilai dan Unit CSS W3C Modul Level 3 (Saat ini dalam Rekomendasi Kandidat pada saat penulisan ini)

Untuk panjang nol , pengenal satuan adalah opsional (yaitu dapat direpresentasikan secara sintaksis sebagai 0).

Chris Bier
sumber
1
Ragu Anda benar-benar menghemat 2 byte saat kompresi GZIP aktif. Ini soal apa yang membuatmu nyaman, bagiku. Beberapa CSS Linters mungkin tidak menyukai 0px.
Manuel Arwed Schmidt
34

Sementara unit adalah opsional ketika nilainya 0, saya cenderung membiarkannya, karena saya kemudian dapat mengubah nilainya dengan Alat Pengembang Chrome dengan mengklik nilai dan menekan tombol panah atas / bawah. Tanpa unit, itu tidak mungkin.

Juga, CSS minifier menghapus unit dari 0nilai, jadi itu tidak akan menjadi masalah pada akhirnya.

Blender
sumber
1 untuk mengamati bahwa penambang tahu tentang ini, dan bahwa ada fungsionalitas yang bisa didapat dengan menyertakan mereka.
Graham P Heath
9
Alat Pengembang Chrome default ke px jika Anda menekan tombol panah atas / bawah pada 0 tanpa pengenal. Juga, di Alat Pengembang Chrome, jika Anda panah ke bawah ke 0, itu menjaga px.
PBwebD
1
@ testing123: Saya kira tidak terjadi pada saat saya menulis jawaban ini, tapi itu bagus untuk diketahui.
Blender
akankah ada masalah waktu eksekusi dengan 0 dan 0px jika mereka digunakan di banyak tempat dalam aplikasi?
Kurkula
16

Mereka sama. Browser menafsirkan keduanya sebagai 0, jadi gunakan apa pun yang lebih mudah dibaca untuk Anda.

Sebastian Patane Masuelli
sumber
Apakah ada pilihan yang 'benar' atau sesuai standar? Saya tahu Anda tidak dapat menulis border: 3 solid, karena tidak ada unit, tetapi apakah ada standar web yang nol?
Blender
1
Seperti yang saya sebutkan dalam jawaban saya, itu karena semuanya identik: nol kali semuanya masih nol, baik Anda mengalikannya dengan ukuran piksel, em, ex, atau persentase.
AgentConundrum
Tidak yakin apa yang Anda maksud dengan standar web tetapi "margin: 10px 0 0 10px" berfungsi dengan baik, seperti halnya "border: 0" yang berarti Anda dapat menggunakan nol sebagai padanan dari "tidak ada".
Tom
1
@blender Periksa jawaban saya di bawah ini untuk standar web dengan link ke dokumentasi.
Chris Bier
3
-1 untuk jawaban dengan konten yang bisa diperdebatkan tanpa referensi, tautan, atau alasan apa pun. tolong cadangkan pendapat Anda dengan data atau nyatakan dengan jelas itu hanya pendapat Anda, bukan informasi faktual.
11

Nol dari apapun adalah nol. 0px= 0%= 0em= 0pt=0

Kebanyakan orang membiarkan unit mati karena itu hanya kekacauan yang tidak perlu.

Membuang
sumber
1
Pengecualian adalah unit waktu: 0bukan merupakan alternatif yang valid untuk 0s/0ms
Henrik Christensen
5

Sejauh yang saya tahu tidak ada perbedaan di antara mereka, sejak itu 0px = 0em = 0ex = 0% = 0. Terserah Anda, sebagai pengembang, untuk memutuskan apa yang paling Anda sukai (kecuali Anda memiliki standar pengkodean perusahaan yang perlu Anda ikuti, tentu saja).

Dari sebagian besar contoh kode yang pernah saya lihat, kebanyakan orang menggunakan versi tanpa unit. Bagi saya, itu terlihat lebih bersih. Jika Anda mendorong sejumlah besar data (katakanlah, jika Anda Google), kedua byte tersebut dapat menambah banyak bandwidth, terutama karena Anda kemungkinan besar akan mengulanginya beberapa kali di stylesheet Anda.

AgentConundrum
sumber
6
Jika Anda mendorong sejumlah besar data (seperti jika Anda Google), sebaiknya Anda menggunakan alat minifikasi yang melakukan ini untuk Anda: p
John Kurlak
4

Nol piksel sama dengan nol inci dan nol meter dan lain sebagainya. 0adalah semua yang Anda butuhkan.

meder omuraliev
sumber
Untuk sesaat di sana saya akan memilih posting Anda karena saya berpikir pernyataan Anda tentang 0 piksel sama dengan 0 inci, dan seterusnya salah. :) Karena dalam benak saya, saya berpikir bagaimana bisa? mereka adalah unit yang berbeda.
Web_Designer
2

Saya pribadi menemukan 0lebih bersih dari 0px. Itu dua karakter tambahan yang bisa bertambah. Mengapa menambahkan byte ekstra saat Anda tidak perlu. Saya telah melihat padding: 0px 0px 0px 0pxmana yang dapat dengan mudah diungkapkan padding: 0terlalu sering.

Amir Raminfar
sumber
1

Anda dapat menggunakan salah satunya - saran terbaik saya adalah jangan terlalu khawatir tetapi konsisten dalam melakukannya dengan satu atau lain cara. Saya pribadi lebih suka menentukan '0px' karena alasan berikut:

  • Menggunakan 0px membuat segalanya lebih konsisten dengan semua ukuran 'px' lain yang telah Anda tentukan
  • Ini juga lebih bertele-tele dan membuatnya sangat jelas bahwa Anda menetapkan panjang nol daripada bendera 'matikan ini'
  • Sedikit lebih mudah untuk mengubah nilai '0px' untuk menjadikannya nilai lain jika diperlukan
Chris Halcrow
sumber
0

Seperti yang dikatakan orang lain, tidak masalah jika itu 0, meskipun saya memilih untuk menambahkan pengukuran ke semua nilai saya sehingga orang lain yang melihat file CSS saya dapat mengukur pengukuran apa yang kemungkinan besar akan mereka tangani di tempat lain.

danjah
sumber
0

Saya tahu bahwa seharusnya tidak ada perbedaan antara 0pxdan 0tetapi saya telah menemukan bahwa terkadang ada .

Saya mencoba memusatkan objek seperti ini:

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

Itu berhasil tetapi jika Anda menggantinya 0pxdengan 0itu tidak.

Davide Zanin
sumber