Display e Visibility CSS
A propriedade display é uma das mais importantes propriedades CSS, controlando como os elementos são renderizados e dispostos na página.
Referência Rápida da Propriedade Display
| Valor | Comportamento | Largura/Altura | Elementos Típicos |
|---|---|---|---|
block |
Nova linha, largura total | Aceita | div, p, h1-h6 |
inline |
Mesma linha, largura do conteúdo | Ignora | span, a, em |
inline-block |
Mesma linha, aceita dimensões | Aceita | button, input |
flex |
Contêiner flex | — | Contêineres de layout |
grid |
Contêiner grid | — | Contêineres de layout |
none |
Completamente oculto | — | Qualquer elemento |
Valores de Display
block
Elementos de bloco ocupam uma linha inteira, empilhando verticalmente:
Exemplo
HTML
<style>
.block {
display: block;
width: 200px;
background: #e3f2fd;
padding: 10px;
margin: 5px 0;
}
</style>
<div class="block">Elemento de bloco 1</div>
<div class="block">Elemento de bloco 2</div>
inline
Elementos inline permanecem na mesma linha, ocupando apenas largura do conteúdo:
Exemplo
HTML
<style>
.inline {
display: inline;
background: #fce4ec;
padding: 5px;
}
</style>
<span class="inline">Inline 1</span>
<span class="inline">Inline 2</span>
<span class="inline">Inline 3</span>
inline-block
Combina posicionamento inline com dimensões de nível bloco:
Exemplo
HTML
<style>
.inline-block {
display: inline-block;
width: 150px;
height: 80px;
background: #e8f5e9;
margin: 5px;
text-align: center;
line-height: 80px;
}
</style>
<div class="inline-block">Caixa 1</div>
<div class="inline-block">Caixa 2</div>
<div class="inline-block">Caixa 3</div>
Visibility e Opacity
visibility: hidden vs display: none
Exemplo
HTML
<style>
.hidden {
visibility: hidden;
background: #ffebee;
padding: 10px;
}
.none {
display: none;
}
.visible {
background: #e8f5e9;
padding: 10px;
}
</style>
<div class="visible">Elemento visível</div>
<div class="hidden">Oculto mas ainda ocupa espaço</div>
<div class="visible">Este elemento permanece no lugar</div>
opacity
Controla a transparência do elemento (0-1), afetando todo o conteúdo incluindo filhos:
Exemplo
HTML
<style>
.semi-transparent {
opacity: 0.5;
background: #2196f3;
color: white;
padding: 20px;
}
</style>
<div class="semi-transparent">50% transparente (todo o conteúdo afetado)</div>
Comparação de Métodos de Ocultação de Elementos
| Método | Ocupa Espaço | Visível | Interativo | Animação |
|---|---|---|---|---|
display: none |
❌ | ❌ | ❌ | ❌ |
visibility: hidden |
✅ | ❌ | ❌ | ✅ |
opacity: 0 |
✅ | ✅ | ✅ | ✅ |
position: absolute; left: -9999px |
❌ | ❌ | ✅ | ❌ |
❓ Perguntas Frequentes
Q Qual é a diferença entre display: none e visibility: hidden?
R display: none remove o elemento completamente — nenhum espaço ocupado, elementos ao redor preenchem a lacuna. visibility: hidden apenas esconde o visual — o elemento ainda ocupa espaço. Para transições de animação, opacity: 0 com transition é mais suave.
Q Como remover lacunas entre elementos inline-block?
R A lacuna de 4px entre elementos inline-block vem do espaço em branco HTML (quebras de linha e espaços). Soluções: definir `font-size: 0` no pai depois resetar nos filhos, ou escrever tags na mesma linha sem quebras.
Q opacity: 0 vs visibility: hidden — qual tem melhor desempenho?
R Elementos com opacity: 0 ainda podem acionar eventos de clique, visibility: hidden não. Desempenho é similar, mas opacity suporta animações de transição para mostrar/esconder suave, visibility não pode transicionar.
📖 Resumo
displayé a propriedade central de layout- Entender as diferenças entre
block,inline,inline-blockajuda a controlar o arranjo de elementos display: noneevisibility: hiddenambos ocultam elementos, mas um ocupa espaço e o outro não — casos de uso diferentes- Em layouts modernos,
display: flexedisplay: gridsão as ferramentas de layout mais poderosas
📝 Exercícios
- Crie uma página com caixas
block,inlineeinline-blockpara observar diferenças de arranjo e tamanho. - Defina links de navegação como
inline-blockcom largura, altura e preenchimento para criar uma barra de navegação horizontal. - Demonstre a diferença entre
display: noneevisibility: hidden. - Crie um "grupo de botões" usando
display: inline-block, tratando o problema de lacuna de espaço em branco.



