Qual dos dois métodos está em conformidade com os padrões W3C? Ambos se comportam conforme o esperado nos navegadores?
borda: nenhuma;
borda: 0;
Qual dos dois métodos está em conformidade com os padrões W3C? Ambos se comportam conforme o esperado nos navegadores?
borda: nenhuma;
borda: 0;
Respostas:
Ambos são válidos. É a sua escolha.
Eu prefiro border:0
porque é mais curto; Acho isso mais fácil de ler. Você pode achar none
mais legível. Como vivemos em um mundo de pós-processadores CSS muito capazes, recomendo que você use o que preferir e execute-o através de um "compressor". Não há guerra santa que valha a pena lutar aqui.
Dito isto, se você estiver escrevendo manualmente todo o seu CSS de produção, eu mantenho - apesar das queixas nos comentários - não faz mal ter consciência da largura de banda. Usando border:0
vai economizar uma quantidade infinitesimal de largura de banda. Por si só, isso conta muito pouco, mas se você fizer com que cada byte conte , você tornará seu site mais rápido.
As especificações do CSS2 estão aqui . Eles são estendidos no CSS3, mas não são relevantes para isso.
'border'
Value: [ <border-width> || <border-style> || <'border-top-color'> ] | inherit
Initial: see individual properties
Applies to: all elements
Inherited: no
Percentages: N/A
Media: visual
Computed value: see individual properties
Você pode usar qualquer combinação de largura, estilo e cor.
Aqui, 0
define a largura, none
o estilo. Eles têm o mesmo resultado de renderização: nada é mostrado.
border:none
seja de alguma forma melhor, mas usar isso como seu raciocínio está com defeito.
Eles têm efeito equivalente , apontando para diferentes atalhos :
border: 0;
//short for..
border-width: 0;
E o outro..
border: none;
//short for...
border-style: none;
Ambos funcionam, basta escolher um e seguir em frente :)
border: 0;
é válido.
border: 0
NÃO é o atalho para border-width: 0
. Em vez disso, a versão curta sempre define todas as três propriedades: border-color
, border-style
e border-width
.
Como outros já disseram, ambos são válidos e farão o truque. Não estou 100% convencido de que eles sejam idênticos. Se você tem algum estilo em cascata, eles podem, em teoria, produzir resultados diferentes, uma vez que substituem efetivamente valores diferentes.
Por exemplo. Se você definir "border: none;" e, posteriormente, como dois estilos diferentes substituem a largura e o estilo da borda, um faz algo e o outro não.
No exemplo a seguir, no IE e no Firefox, as duas primeiras divs de teste são exibidas sem borda. Os dois segundos, no entanto, são diferentes, com a primeira div no segundo bloco sendo plana e a segunda div no segundo bloco com uma borda tracejada de largura média.
Portanto, embora ambos sejam válidos, talvez você precise ficar de olho em seus estilos, se eles fizerem muito em cascata e coisas como eu acho.
<html>
<head>
<style>
div {border: 1px solid black; margin: 1em;}
.zerotest div {border: 0;}
.nonetest div {border: none;}
div.setwidth {border-width: 3px;}
div.setstyle {border-style: dashed;}
</style>
</head>
<body>
<div class="zerotest">
<div class="setwidth">
"Border: 0" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: 0" and "border-style: dashed"
</div>
</div>
<div class="nonetest">
<div class="setwidth">
"Border: none" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: none" and "border-style: dashed"
</div>
</div>
</body>
</html>
border: none
vez de border: 0
.
(nota: esta resposta foi atualizada em 01/08/2014 para torná-la mais detalhada, precisa e adicionar uma demonstração ao vivo )
De acordo com a especificação CSS2.1 do W3C ( “Valores omitidos são definidos com seus valores iniciais” ), as seguintes propriedades são equivalentes:
border: hidden; border-style: hidden;
border-width: medium;
border-color: <the same as 'color' property>
border: none; border-style: none;
border-width: medium;
border-color: <the same as 'color' property>
border: 0; border-style: none;
border-width: 0;
border-color: <the same as 'color' property>
Se essas regras forem as mais específicas aplicadas às bordas de um elemento, as bordas não serão mostradas, por causa da largura zero ou por hidden
/none
style. Portanto, à primeira vista, essas três regras parecem equivalentes. No entanto, eles se comportam de maneiras diferentes quando combinados com outras regras.
Quando uma tabela é renderizada border-collapse: collapse
, cada borda renderizada é compartilhada entre vários elementos (as bordas internas são compartilhadas como células vizinhas; as bordas externas são compartilhadas entre células e a própria tabela; mas também linhas, grupos de linhas, colunas e grupos de colunas compartilham bordas ) A especificação define algumas regras para a resolução de conflitos de fronteira :
Fronteiras com a
border-style
dehidden
ter precedência sobre todas as outras fronteiras conflitantes. [...]As fronteiras com um estilo de
none
têm a menor prioridade. [...]Se nenhum dos estilos for
hidden
e pelo menos um deles não fornone
, as bordas estreitas serão descartadas em favor de outras mais amplas. [...]Se os estilos de borda diferem apenas em cores, […]
Portanto, em um contexto de tabela, border: hidden
(ou border-style: hidden
) terá a maior prioridade e ocultará a borda compartilhada, não importa o quê.
No outro extremo das prioridades, border: none
(ou border-style: none
) tem a prioridade mais baixa, seguida pela borda com largura zero (porque é a borda mais estreita). Isso significa que um valor calculado de border-style: none
e um valor calculado deborder-width: 0
são essencialmente os mesmos.
Como none
e 0
afetam diferentes propriedades ( border-style
e border-width
), elas se comportarão de maneira diferente quando uma regra mais específica definir apenas o estilo ou apenas a largura. Veja a resposta de Chris para um exemplo.
Deseja ver todos esses casos em uma única página? Abra a demonstração ao vivo !
Usando
border: none;
não funciona em algumas versões do IE. O IE9 é bom, mas nas versões anteriores ele exibe a borda mesmo quando o estilo é "nenhum". Eu experimentei isso ao usar uma folha de estilo de impressão onde não queria bordas nas caixas de entrada.
border: 0;
parece funcionar bem em todos os navegadores.
Você pode simplesmente usar os dois conforme a especificação gentilmente fornecida pela Oli.
Eu sempre uso border:0 none;
.
Embora não haja mal algum em especificá-los separadamente e alguns navegadores analisarão o CSS mais rapidamente se você usar as chamadas de propriedade CSS1 herdadas.
Embora border:0;
normalmente o padrão seja o estilo da borda none
, notei, no entanto, alguns navegadores aplicando o estilo da borda padrão, que pode sobrescrever estranhamente border:0;
.
Eu uso:
border: 0;
A partir da 8.5.4 no CSS 2.1 :
'fronteira'
Valor: [<largura da borda> || <border-style> || <'border-top-color'>] | herdar
Portanto, qualquer um dos seus métodos parece bem.
Bem, para ver com precisão a diferença entre border: 0
e border: none
podemos fazer algumas experiências.
Vamos criar três divs, primeiro um cuja borda só pode ser desativada definindo sua largura como zero, o segundo que só pode ser desativado definindo seu estilo como nenhum e um terceiro com uma borda que só pode ser "desativada" definindo sua largura. cor para transparente. Então vamos tentar o efeito de:
border: 0;
border: none;
border: transparent
estilo de borda: sólido! importante; cor da borda: vermelho! importante; largura da borda: 2px! important; cor da borda: vermelho! importante; largura da borda: 2px! important; estilo de borda: sólido! importante;
Meus resultados foram os mesmos no firefox e no chrome:
border: 0;
Parece definir a largura da 0
borda e o estilo da borda none
, mas não alterar a cor da borda;
border: none;
Parece alterar apenas o estilo da borda (para none
);
border: transparent;
Parece alterar a cor da transparent
borda e o estilo da borda para none
;
Embora os resultados provavelmente sejam os mesmos (sem borda), o 0 e nenhum estão tecnicamente abordando coisas diferentes.
0 endereça a largura da borda e nenhum endereça o estilo da borda. Obviamente, uma borda com largura 0 é inexistente, portanto, não terá estilo.
No entanto, se mais tarde na sua folha de estilo você pretender substituí-lo, naturalmente abordará especificamente um ou outro. Se agora eu quisesse uma borda 3px, essa seria a substituição direta da borda: 0 em relação à largura. Se agora eu quisesse uma borda pontilhada, isso seria diretamente superior à borda: nenhuma em relação ao estilo.
A maneira mais fácil de remover bordas com css
border: 0;
DEVEMOS USAR FRONTEIRA 0
De acordo com minha opinião e experiência, sugiro que use Border: 0; Há uma razão válida e muito boa, porque sempre que usamos borda: nenhuma, eu entendo que funcione, mas pense que estamos usando uma borda, 1px, 2px, 3px etc. Quero dizer, estamos dando o valor de nossa borda ... px / em / rem right então precisamos usar border: 0; para remover o valor da borda porque, como sabemos, quando usamos background: none; significa que estamos removendo o plano de fundo de um plano de fundo que não é um valor que é outra coisa.
obrigado