"proprietà: 0" o "proprietà: 0px" in CSS?


88

Ho visto questa notazione usata molto e mi chiedevo, c'è qualche differenza notevole tra queste due notazioni?

element#id
{
  property: 0;
}

e

element#id
{
  property: 0px;
}

Lo uso property: 0px;sempre, poiché lo trovo più pulito, ma non sono sicuro che il browser interpreti in modo 0pxdiverso da 0.

Qualcuno sa qual è il migliore o quello corretto?


1
Bella domanda, e precedente a questo probabile duplicato: stackoverflow.com/q/5359222/292060 , ma quella ha una risposta migliore, citando le specifiche.
goodeye

1
Qualunque cosa tu usi, assicurati di rimanere coerente durante l'intero progetto.
PBwebD

Risposte:


56

Gli identificatori di unità sono facoltativi , ma non si nota alcun aumento delle prestazioni (sebbene si stiano salvando due caratteri).

CSS2 - Da W3C CSS 2.1 Specifiche per sintassi e tipi di dati di base :

Il formato di un valore di lunghezza (indicato da <length> in questa specifica) è un <numero> (con o senza punto decimale) immediatamente seguito da un identificatore di unità (ad es. Px, em, ecc.). Dopo una lunghezza zero, l'identificatore dell'unità è facoltativo.

(Enfasi mia)

CSS3 - From W3C CSS Values ​​and Units Module Level 3 (Attualmente in Candidate Raccomandazione al momento della stesura di questo documento)

Per lunghezze zero l'identificatore di unità è opzionale (cioè può essere sintatticamente rappresentato come 0).


1
Dubito di risparmiare davvero 2 byte quando la compressione GZIP è attiva. Per me è una questione di cosa ti senti a tuo agio. Tuttavia, alcuni CSS Linter potrebbero non gradire 0px.
Manuel Arwed Schmidt

34

Mentre l'unità è opzionale quando il valore è 0, tendo a lasciarlo in, poiché posso quindi modificare i valori con gli strumenti di sviluppo di Chrome facendo clic sul valore e premendo i tasti freccia su / giù. Senza un'unità, non è davvero possibile.

Inoltre, i minificatori CSS eliminano comunque le unità dai 0valori, quindi alla fine non avrà molta importanza.


+1 per aver osservato che i minifiers lo sanno e che ci sono funzionalità da avere includendoli.
Graham P Heath

9
Gli strumenti per sviluppatori di Chrome vengono impostati su px se premi i tasti freccia su / giù su uno 0 senza un identificatore. Inoltre, negli Strumenti per sviluppatori di Chrome, se scorri fino a 0, mantiene il px.
PBwebD

1
@ testing123: Non penso che sia successo nel momento in cui ho scritto questa risposta, ma è buono a sapersi.
Blender

ci saranno problemi di tempo di esecuzione con 0 e 0px se vengono utilizzati in più punti dell'applicazione?
Kurkula

16

Loro sono la stessa cosa. Il browser interpreta entrambi come 0, quindi scegli ciò che è più leggibile per te.


Esiste una scelta "corretta" o conforme agli standard? So che non puoi scrivere border: 3 solid, poiché non ci sono unità, ma ci sono standard web su zero?
Blender

1
Come ho detto nella mia risposta, è perché sono tutti identici: zero volte qualcosa è ancora zero, sia che tu stia moltiplicando per la dimensione di un pixel, un em, un ex o una percentuale.
AgentConundrum

Non sono sicuro di cosa intendi per standard web ma "margin: 10px 0 0 10px" funziona bene, così come "border: 0" significa che puoi usare zero come equivalente di "none".
Tom

1
@blender Controlla la mia risposta di seguito per gli standard web con un collegamento alla documentazione.
Chris Bier

3
-1 per una risposta con contenuto discutibile senza alcun riferimento, collegamento o motivazione. si prega di eseguire il backup della propria opinione con i dati o di indicare chiaramente che è solo la propria opinione, non informazioni fattuali.

11

Zero di qualsiasi cosa è zero. 0px= 0%= 0em= 0pt=0

La maggior parte delle persone lascia l'unità spenta perché è semplicemente un disordine inutile.


1
Fanno eccezione le unità di tempo: 0non è una valida alternativa a 0s/0ms
Henrik Christensen

5

Per quanto ne so non c'è differenza tra loro, da allora 0px = 0em = 0ex = 0% = 0. Sta a te, in quanto sviluppatore, decidere cosa ti piace di più (a meno che tu non abbia standard di codifica aziendale che devi seguire, ovviamente).

Dalla maggior parte degli esempi di codice che ho visto, la maggior parte delle persone usa la versione senza unità. A me sembra solo più pulito. Se stai spingendo una quantità significativa di dati (ad esempio, se sei Google), quei due byte possono aggiungere molta larghezza di banda, soprattutto perché è molto probabile che li ripeta più volte nel tuo foglio di stile.


6
Se stai spingendo una quantità significativa di dati (come se fossi Google), faresti meglio a utilizzare strumenti di minificazione che lo fanno per te: p
John Kurlak,

4

Zero pixel è uguale a zero pollici e zero metri e così via. 0é tutto quello di cui hai bisogno.


Per un momento stavo per votare il tuo post perché pensavo che la tua affermazione che 0 pixel fossero uguali a 0 pollici, e così via era falsa. :) Perché nella mia mente stavo pensando come può essere? sono unità diverse.
Web_Designer

2

Personalmente trovo 0più pulito di 0px. Sono due personaggi extra che possono sommarsi. Perché aggiungere byte extra quando non è necessario. Ho visto padding: 0px 0px 0px 0pxche può essere facilmente espresso padding: 0troppo spesso.


1

Puoi usare entrambi: il mio miglior consiglio è di non preoccuparti troppo ma di essere coerente nel farlo in un modo o nell'altro. Personalmente preferisco specificare "0px" per i seguenti motivi:

  • L'uso di 0px rende le cose più coerenti con tutte le altre dimensioni "px" che hai specificato
  • È anche più dettagliato e rende molto chiaro che stai impostando una lunghezza zero piuttosto che un flag "disattiva"
  • È leggermente più facile modificare un valore "0px" per renderlo un altro valore, se necessario

0

Come dicono gli altri, non importa se è 0, anche se scelgo di aggiungere le misurazioni a tutti i miei valori in modo che chiunque altro guardi i miei file CSS possa valutare quali misurazioni è probabile che abbia a che fare altrove.


0

So che non dovrebbe esserci alcuna differenza tra 0pxe 0ma ho scoperto che a volte c'è .

Stavo cercando di centrare un oggetto come questo:

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

Funziona, ma se si sostituisce 0pxcon 0non è così.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.