Seletor CSS :empty
Frequentemente precisamos aplicar estilos a elementos que possuem conteúdo. Mas o que fazer quando um elemento não tem nenhum conteúdo ou filhos? Para isso, podemos utilizar o seletor :empty! 🎨
<div>hey</div>
<!-- NÃO está vazio: contém texto -->
<div> </div>
<!-- NÃO está vazio: contém um espaço em branco -->
<div></div>
<!-- SIM, está vazio: nada dentro -->Estes blocos cinzentos acima foram gerados com o seguinte conjunto HTML e CSS:
<div class="our-div">!</div>
<div class="our-div"></div>.our-div {
margin: 16px 0;
padding: 16px;
background: gainsboro;
}
.our-div:empty {
background: gray;
}O que é considerado vazio?
Um detalhe importante sobre :empty é entender o que ele realmente considera como um elemento vazio. Vamos nos basear na definição fornecida pela MDN:
A pseudo-classe CSS
:emptyrepresenta qualquer elemento que não tenha filhos. Aqui, filhos podem ser outros elementos ou blocos de texto (incluindo espaços em branco). Comentários e instruções de processamento não são considerados ao se determinar se um elemento é vazio.
✅ Considerado vazio
Se um elemento não contém nenhum espaço em branco ou qualquer outro tipo de filho, ele é reconhecido como vazio.
<p></p>Mesmo se houver um comentário dentro do elemento, ele ainda será tratado como vazio, desde que não haja espaços em branco ou quberas de linha:
<p><!-- comentário --></p>❌ Não é vazio
Se houver qualquer espaço em branco dentro do elemento, ele não será considerado vazio. Isso inclui espaços simples ou quebras de linha.
Se o elemento contiver outro elemento dentro dele, ele também não será considerado vazio.
<p> </p>
<p>
<!-- comentário -->
</p>
<p><span></span></p>Exemplos práticos :empty: mensagens de erro
Vamos utilizar o :empty para exibir um ícone de erro em determinado elemento apenas quando o elemento estiver vazio.
<!-- Sem mensagem de erro -->
<div class="our-div-error"></div>
<!-- Com mensagem de erro -->
<div class="our-div-error">E-mail inválido</div>.our-div-error:before {
content: '❌';
}
.our-div-error:empty:before {
content: 'Erro: ';
}Suporte nos navegadores
O seletor :empty é amplamente suportado, funcionando em todos os navegadores modernos, incluindo versões jurássicas 🦕 como o Internet Explorer 9. Espero que este artigo tenha sido útil para você! Ate a próxima ✌️