Como esconder elementos HTML usando CSS
Aprenda a como ocultar trechos de um código sem afetar a acessibilidade ou SEO do seu site.
Atualizado em
Um dos grandes segredos no desenvolvimento de sites é saber como e quando exibir o conteúdo para promover uma boa experiência para o usuário. E, às vezes, em que situação é ideal escondê-lo. As razões podem ser diversas, como um projeto que exija ocultar a publicidade para assinantes e exibir apenas para visitantes não cadastrados. Ou que usuários de um navegador específico (Errr… estou falando de você que usar o Microsoft Edge no Linux!) vejam uma mensagem.
As formas de esconder elementos em um site também são variadas, mas cada uma tem seus prós e contras. No tutorial abaixo, vou listar três truques com CSS para ocultar qualquer coisa em uma página HTML e explicar em que ocasião é melhor usá-los.
1. Propriedade display
Essa é a alternativa mais popular quando se está tentando esconder um elemento HTML — e também a mais drástica de todas. A propriedade display
, quando configurada para none
, no CSS, além de ocultar o elemento principal e seus elementos secundários, previne que os mesmos sejam renderizados pelo navegador. O código-fonte ainda exibe o trecho referente ao elemento, mas, visualmente, é como se ele não existisse.
O layout da página não é afetado pela ocultação do elemento e leitores de tela, usados por pessoas com deficiência visual, não detectarão o seu conteúdo e o texto do atributo alt
nas imagens.
No código abaixo, veja um exemplo de como esconder um elemento com a propriedade display
.
@-moz-document url-prefix() {
.esconder {
display: none;
}
}
Depois de adicionar o código acima no seu CSS, basta adicionar a classe esconder
ao elemento que deseja ocultar.
2. Propriedade visibility
A propriedade visibility
pode parecer bastante com o display: none
, de início, mas são bastante diferentes. Ao configurar a visibilidade para hidden
, o elemento é ocultado da página, mas os atributos de dimensões e espaçamento (width, height, margin, border, padding e content) ainda são respeitados pelo navegador — consequentemente, deixando um “buraco” vazio no layout.
Apesar do elemento estar apenas invisível, as pseudo-classes, como hover
e focus
, e o conteúdo do atributo alt
de imagens são afetados pela propriedade visibility
da mesma forma que com a propriedade display
.
Em tabelas, é possível também configurar elementos para visibility: collapse
e ele se comportará da mesma forma que display: none
. As outras colunas, linhas e células da tabela são redimensionadas automaticamente para ocupar o espaço do elemento ocultado.
3. Propriedade opacity
Outra forma de esconder um elemento em uma página é mudar a sua opacidade. Configurando a propriedade opacity
para 0
, o elemento some por completamente — usando os valores de 0.1 a 1, é possível mudar a opacidade para 10% a 100%, respectivamente. Assim como acontece com a propriedade visibility
, um espaço vazio será deixado no seu lugar.
A diferença de opacity: 0
para display: none
e visibility: hidden
é que, mesmo com o elemento ocultado, ainda é possível interagir com o mesmo, como clicar ou exibir o conteúdo do atributo title
ao repousar o cursor do mouse sobre o espaço vazio.
Leitores de tela também podem detectar o conteúdo do atributo alt
de imagens dentro de um elemento configurando com opacity: 0
.