'propriedade: 0' ou 'propriedade: 0px' em CSS?

86

Eu vi essa notação ser muito usada e estava me perguntando: há alguma diferença notável entre essas duas notações?

element#id
{
  property: 0;
}

e

element#id
{
  property: 0px;
}

Eu uso property: 0px;o tempo todo, pois acho que parece mais limpo, mas não tenho certeza se o navegador faz uma interpretação 0pxdiferente de 0.

Alguém sabe qual é o melhor ou o correto?

Liquidificador
fonte
1
Boa pergunta, e antes dessa provável duplicata: stackoverflow.com/q/5359222/292060 , mas essa tem uma resposta melhor, citando a especificação.
goodeye
1
Qualquer que seja o uso, certifique-se de permanecer consistente durante todo o projeto.
PBwebD

Respostas:

56

Os identificadores de unidade são opcionais , mas não há aumento de desempenho observado (embora você esteja salvando dois caracteres).

CSS2 - De W3C CSS 2.1 Especificação para sintaxe e tipos de dados básicos :

O formato de um valor de comprimento (denotado por <length> nesta especificação) é um <number> (com ou sem um ponto decimal) imediatamente seguido por um identificador de unidade (por exemplo, px, em, etc.). Após um comprimento zero, o identificador da unidade é opcional.

(Ênfase minha)

CSS3 - do módulo de valores e unidades CSS do W3C nível 3 (atualmente na recomendação candidata no momento em que este artigo foi escrito)

Para comprimentos de zero, o identificador de unidade é opcional (ou seja, pode ser sintaticamente representado como 0).

Chris Bier
fonte
1
Duvido que você realmente economize 2 bytes quando a compressão GZIP está ativa. É uma questão de como você se sente confortável para mim. Alguns CSS Linters podem não gostar de 0px, no entanto.
Manuel Arwed Schmidt
34

Embora a unidade seja opcional quando o valor for 0 , eu tendo a deixá-la, já que posso ajustar os valores com as Ferramentas de desenvolvedor do Chrome clicando no valor e pressionando as teclas de seta para cima / para baixo. Sem uma unidade, isso não é realmente possível.

Além disso, os minificadores de CSS retiram as unidades dos 0valores de qualquer maneira, então isso realmente não importa no final.

Liquidificador
fonte
+1 para observar que os minificadores sabem disso e que há funcionalidade a ser obtida ao incluí-los.
Graham P Heath
9
O padrão das Ferramentas do desenvolvedor do Chrome é px se você pressionar as teclas de seta para cima / para baixo em um 0 sem um identificador. Além disso, nas Ferramentas do desenvolvedor do Chrome, se você descer a seta para 0, mantém o px.
PBwebD
1
@ testing123: Acho que não no momento em que escrevi esta resposta, mas é bom saber.
Blender
Haverá problemas de tempo de execução com 0 e 0 px se eles forem usados ​​em vários lugares no aplicativo?
Kurkula
15

Eles são os mesmos. O navegador interpreta ambos como 0, então escolha o que for mais legível para você.

Sebastian Patane Masuelli
fonte
Existe uma escolha 'correta' ou compatível com os padrões? Eu sei que você não pode escrever border: 3 solid, porque não há unidades, mas há algum padrão da web em zero?
Blender
1
Como mencionei na minha resposta, é porque eles são todos idênticos: zero vezes qualquer coisa ainda é zero, quer você esteja multiplicando pelo tamanho de um pixel, um em, um ex ou por porcentagem.
AgentConundrum
Não tenho certeza do que você quer dizer com padrões da web, mas "margin: 10px 0 0 10px" funciona bem, assim como "border: 0", o que significa que você pode usar zero como equivalente a "nenhum".
Tom
1
@blender Verifique minha resposta abaixo para os padrões da web com um link para a documentação.
Chris Bier
3
-1 para uma resposta com conteúdo discutível sem qualquer referência, links ou justificativa. por favor, respalde sua opinião com dados ou declare claramente que é apenas sua opinião, não informações factuais.
11

Zero de qualquer coisa é zero. 0px= 0%= 0em= 0pt=0

A maioria das pessoas deixa a unidade desligada porque é simplesmente uma desordem desnecessária.

Mandril
fonte
1
Uma exceção são as unidades de tempo: 0não é uma alternativa válida para 0s/0ms
Henrik Christensen
5

Tanto quanto eu sei, não há diferença entre eles, desde então 0px = 0em = 0ex = 0% = 0. Depende puramente de você, como desenvolvedor, decidir o que você mais gosta (a menos que você tenha padrões de codificação corporativos que precise seguir, é claro).

Na maioria dos exemplos de código que vi, a maioria das pessoas usa a versão sem unidade. Para mim, parece mais limpo. Se você estiver enviando uma quantidade significativa de dados (digamos, se você for o Google), esses dois bytes podem adicionar muita largura de banda, especialmente porque é muito provável que você os repita várias vezes em sua folha de estilo.

AgentConundrum
fonte
6
Se você estiver enviando uma quantidade significativa de dados (como se você fosse o Google), é melhor usar ferramentas de minificação que fazem isso para você: p
John Kurlak
4

Zero pixels é igual a zero polegadas e zero metros e assim por diante. 0é tudo o que você precisa.

Meder Omuraliev
fonte
Por um momento, eu iria votar em sua postagem porque estava pensando que sua afirmação de que 0 pixels são iguais a 0 polegadas e assim por diante era falsa. :) Porque na minha mente eu estava pensando como pode ser isso? eles são unidades diferentes.
Web_Designer
2

Eu pessoalmente acho 0mais limpo do que 0px. São dois personagens extras que podem se somar. Por que adicionar bytes extras quando você não precisa. Eu vi o padding: 0px 0px 0px 0pxque pode ser facilmente expresso com padding: 0muita frequência.

Amir Raminfar
fonte
1

Você pode usar qualquer um - meu melhor conselho é não se preocupar muito, mas ser consistente ao fazê-lo de uma forma ou de outra. Eu pessoalmente prefiro especificar '0px' pelas seguintes razões:

  • Usar 0px torna as coisas mais consistentes com todos os outros tamanhos de 'px' que você especificou
  • Também é mais detalhado e deixa bem claro que você está definindo um comprimento zero em vez de um sinalizador de 'desligar'
  • É um pouco mais fácil ajustar um valor '0px' para torná-lo outro valor, se necessário
Chris Halcrow
fonte
0

Como os outros dizem, realmente não importa se é 0, embora eu opte por adicionar as medidas a todos os meus valores para que qualquer outra pessoa que esteja olhando meus arquivos CSS possa avaliar com quais medidas eles provavelmente lidarão em outro lugar.

danjah
fonte