Qual é a diferença entre o atributo oculto (HTML5) e a exibição: nenhuma regra (CSS)?
HTML5 tem um novo atributo global,hidden
, que pode ser usado para ocultar o conteúd
<article hidden>
<h2>Article #1</h2>
<p>Lorem ipsum ...</p>
</article>
CSS tem odisplay:none
rule, que também pode ser usada para ocultar o conteúd
article { display:none; }
Visualmente, eles são idênticos. Qual é a diferença semanticamente? Computacionalmente?
Quais diretrizes devo considerar quando usar um ou outro?
TIA.
EDITA: Com base nas respostas do @ newtron (abaixo), fiz mais pesquisas. Ohidden
atributo @ foi muito disputado no ano passado e (aparentemente) mal chegou à especificação do HTML5. Alguns argumentaram que era redundante e não tinha propósito. Pelo que sei, a avaliação final é a seguinte: se estou segmentando apenas navegadores da Web, não há diferença. (Uma página chegou a afirmar que os navegadores da Web usavamdisplay:none
para implementar o atributo oculto.) Mas se estou pensando em acessibilidade (por exemplo, talvez eu espere que meu conteúdo seja lido pelos leitores de tela), então há uma diferença. A regra CSSdisplay:none
pode ocultar meu conteúdo dos navegadores da web, mas uma regra de ária correspondente (por exemplo,aria-hidden="false"
) pode tentar lê-lo. Portanto, agora eu concordo que a resposta da newtron está correta, embora talvez (sem dúvida) não seja tão clara quanto eu gostaria. Obrigado @ newtron por sua ajuda.