Marcos N
← Voltar ao blog

Front-end

CSS moderno está diminuindo nossa dependência de JavaScript?

Veja como recursos modernos de CSS e HTML estão resolvendo problemas que antes dependiam de JavaScript, com exemplos de Container Queries, Popover, animações e muito mais.

Marcos N3 min de leitura
CSS moderno está diminuindo nossa dependência de JavaScript?

CSS moderno está diminuindo nossa dependência de JavaScript?

Durante muitos anos uma regra parecia simples:

Precisa de interação? Então provavelmente precisa de JavaScript.

Mas isso está mudando.

CSS e HTML modernos passaram a resolver problemas que antes exigiam listeners, manipulação de DOM e até bibliotecas completas.

Recursos que vamos analisar

  • Container Queries
  • Popover API
  • Scroll-driven Animations
  • field-sizing
  • View Transitions
  • Scroll Markers

Notas:

O objetivo não é dizer que JavaScript está deixando de ser necessário. A ideia é entender quando a própria plataforma web já consegue resolver determinado problema.

Tecnologias Utilizadas

  • HTML
  • CSS
  • JavaScript
  • APIs modernas da plataforma web.

Como Usar

A regra principal é simples:

Se HTML ou CSS resolvem bem o problema, não precisamos adicionar JavaScript apenas por hábito.


Como fazer?

Vamos comparar algumas soluções tradicionais com alternativas modernas.

Passo a Passo

1

Passo 1: Identifique a responsabilidade

Descubra se o comportamento é apenas visual ou se realmente envolve lógica de aplicação.

2

Passo 2: Verifique se existe API nativa

Procure primeiro por recursos modernos de HTML e CSS.

3

Passo 3: Avalie compatibilidade

Verifique suporte antes de remover soluções existentes.

4

Passo 4: Use JavaScript quando necessário

Regras de negócio, estado complexo e integração continuam sendo responsabilidades naturais do JavaScript.

📦 Container Queries

style.css
.card-container {
  container-type: inline-size;
}

@container (min-width: 500px) {
  .card {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
}

O componente passa a responder ao próprio container.

🪟 Popover sem controlar estado manualmente

index.html
<button popovertarget="menu">
  Abrir menu
</button>

<div id="menu" popover>
  Conteúdo do menu
</div>

Para comportamentos simples, isso pode reduzir a necessidade de lógica manual para abrir e fechar o componente.

🎬 Animações ligadas ao scroll

style.css
.progress {
  transform-origin: left;
  animation: progress linear;
  animation-timeline: scroll();
}

@keyframes progress {
  from {
    transform: scaleX(0);
  }

  to {
    transform: scaleX(1);
  }
}

Anteriormente essa implementação poderia exigir:

window.addEventListener("scroll", () => {
  // calcular posição
});

📝 Inputs que crescem com o conteúdo

textarea {
  field-sizing: content;
}

Esse é outro exemplo de algo que costumava depender de cálculo manual com JavaScript.

Quando JavaScript continua sendo necessário?

JavaScript continua essencial para:

  • requisições;
  • estado complexo;
  • autenticação;
  • validações;
  • integração com APIs;
  • regras de negócio;
  • lógica dinâmica.

O CSS não está substituindo JavaScript.

Está assumindo responsabilidades que muitas vezes eram implementadas com JavaScript por falta de alternativas nativas.

✅ Resultado Final

CSS moderno pode reduzir:

  1. Event listeners.
  2. Manipulação manual do DOM.
  3. Dependências externas.
  4. Código de animação simples.
  5. Lógica exclusivamente visual.

🛠️ Considerações Finais

Menos JavaScript não significa melhor automaticamente.

A ideia é utilizar cada tecnologia na responsabilidade correta.

HTML para estrutura.

CSS para apresentação e comportamentos declarativos.

JavaScript para lógica.

Está curtindo nosso conteúdo?

Considere nos apoiar com uma doação!

Na página Sobre você encontra mais informações sobre como contribuir 💖