Classes Responsivas do Bootstrap: De visible-xs a Container Queries
Minha resposta no Stack Overflow sobre visible-xs e hidden-md do Bootstrap 3 recebeu 5 votos. Em 2026, utilitarios do Bootstrap 5 e container queries nativas do CSS lidam muito melhor com visibilidade responsiva.
Classes Responsivas do Bootstrap: De visible-xs a Container Queries
La em 2016, respondi uma pergunta no Stack Overflow em Portugues sobre as classes de visibilidade responsiva do Bootstrap 3 — visible-xs, hidden-md e companhia. Recebeu 5 votos, o que fazia sentido porque todo projeto Bootstrap esbarrava nisso em algum momento: voce precisava que um elemento aparecesse no celular mas sumisse no tablet, ou vice-versa, e os nomes das classes eram confusos.
A resposta ajudou as pessoas. Mas o modelo inteiro no qual ela foi construida — utilitarios de mostrar/esconder baseados em viewport — foi substituido por algo fundamentalmente melhor.
O Problema de 2016: Uma Matriz de Classes de Visibilidade
O Bootstrap 3 vinha com uma grade de classes de visibilidade responsiva que tentava cobrir cada combinacao de breakpoint:
<!-- 2016: Visibilidade responsiva do Bootstrap 3 -->
<div class="visible-xs hidden-sm hidden-md visible-lg">
Mostra no celular e desktop, esconde no tablet
</div>
<p class="hidden-xs visible-sm">So mostra em tablets pequenos</p>
A nomenclatura era confusa. visible-xs significava “visivel apenas em telas extra-pequenas”, mas hidden-md significava “escondido em telas medias e nada mais.” Nao dava para combinar intuitivamente. Se voce queria algo visivel em xs e lg mas escondido em sm e md, precisava empilhar varias classes e torcer para acertar a logica.
Piorava com visible-xs-block, visible-xs-inline e visible-xs-inline-block — variantes que controlavam a propriedade display quando o elemento estava visivel. Eram nove classes so para telas extra-pequenas.
O Que Tornava Doloroso
O problema central era que o Bootstrap 3 vinculava visibilidade a breakpoints exatos:
- Logica por breakpoint — Cada classe mirava um breakpoint, entao visibilidade complexa exigia empilhar 3-4 classes
- Sem consciencia do componente — As classes respondiam ao viewport, nao ao container onde o elemento vivia
- Acoplamento de propriedade display — Voce tinha que escolher entre variantes block, inline e inline-block, misturando preocupacoes de layout com visibilidade
- Pesadelo de manutencao — Mudar sua estrategia de breakpoints significava auditar cada classe
visible-*ehidden-*no projeto
Lembro de projetos onde as combinacoes de classes responsivas eram tao convolutas que os devs adicionavam comentarios acima de cada div explicando o que aparecia onde. Isso e um code smell.
A Abordagem de 2026: Classes Utilitarias e Container Queries
O Bootstrap 5 simplificou o modelo, e o CSS nativo foi ainda mais longe.
Utilitarios de Display do Bootstrap 5
<!-- 2026: Bootstrap 5 — utilitarios mais limpos e composiveis -->
<div class="d-none d-md-block">Escondido em telas pequenas, visivel a partir de md</div>
<div class="d-block d-lg-none">Visivel em telas pequenas, escondido a partir de lg</div>
Um padrao consistente: comece com um estado base, depois sobrescreva em breakpoints especificos. Chega de familias separadas visible-* e hidden-*. So d-none e d-{breakpoint}-{valor}. Muito mais facil de raciocinar.
Container Queries Nativas do CSS
Mas a verdadeira virada de jogo e o @container:
/* 2026: Container queries — responde ao pai, nao ao viewport */
.card-container {
container-type: inline-size;
}
@container (min-width: 400px) {
.card-details {
display: block;
}
}
@container (max-width: 399px) {
.card-details {
display: none;
}
}
Isso e o que a gente sempre quis de verdade. Componentes que se adaptam com base no espaco disponivel, nao no viewport. Um card na sidebar pode mostrar detalhes extras quando tem espaco e esconde-los quando nao tem — independente do tamanho da tela.
O Que Mudou
A mudanca e de regras responsivas globais para consciencia local do componente. O Bootstrap 3 perguntava “qual a largura da tela?” O Bootstrap 5 pergunta “em qual breakpoint o comportamento deve mudar?” Container queries perguntam “quanto espaco esse componente realmente tem?”
Aquela resposta no Stack Overflow resolveu o problema imediato. Mas a licao real e que design responsivo funciona melhor quando componentes sao donos da sua propria logica de layout, nao quando um framework global dita isso.
Posts Relacionados
Classes Responsivas do Bootstrap: De visible-xs a Container Queries
Minha resposta no Stack Overflow sobre visible-xs e hidden-md do Bootstrap 3 recebeu 5 votos. Em 2026, utilitarios do Bootstrap 5 e container queries nativas do CSS lidam muito melhor com visibilidade responsiva.
Navbar Responsiva com Bootstrap: Do jQuery Collapse à Navegação Só com CSS
Respondi uma pergunta no Stack Overflow sobre navbars responsivas com Bootstrap 3 em 2017. Hoje você faz a mesma coisa sem nenhum JavaScript.
Centralizar um Modal com CSS: De Hacks com Transform ao Dialog Nativo
De uma resposta de 2016 no Stack Overflow sobre centralizar modais Bootstrap com margens negativas até 2026 — <dialog> nativo, flexbox e o fim dos truques de centralização.