HTML5 tem um novo atributo global hidden
, que pode ser usado para ocultar conteúdo.
<article hidden>
<h2>Article #1</h2>
<p>Lorem ipsum ...</p>
</article>
CSS tem a display:none
regra, que também pode ser usada para ocultar conteúdo.
article { display:none; }
Visualmente, eles são idênticos. Qual é a diferença semanticamente? Computacionalmente?
Que orientações devo considerar sobre quando usar um ou outro?
TIA.
EDITAR : Com base nas respostas de @newtron (abaixo), fiz mais pesquisas. O hidden
atributo foi muito contestado no ano passado e (aparentemente) mal chegou às especificações do HTML5. Alguns argumentaram que era redundante e não tinha propósito. Pelo que posso dizer, a avaliação final é a seguinte: Se estou visando apenas navegadores da web, não há diferença. (Uma página chegou a afirmar que os navegadores da web costumavam display:none
implementar o atributo oculto.) Mas se estou considerando a acessibilidade (por exemplo, talvez eu espere que meu conteúdo seja lido por leitores de tela), então há uma diferença. A regra CSS display:none
pode ocultar meu conteúdo de navegadores da web, mas uma regra ária correspondente (por exemplo,aria-hidden="false"
) pode tentar lê-lo. Assim, agora concordo que a resposta de @newtron está correta, embora talvez (discutivelmente) não tão clara quanto eu gostaria. Obrigado @newtron pela sua ajuda.
hidden
atributo existe, mas certamente uma boa pergunta, pois tê-lo parece violar a separação estrutura / apresentação.