SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.11.2024

Alternativas ao CSS backdrop-filter: Soluções em JS e mais

Resposta Rápida

Para imitar o efeito do backdrop-filter, aplique posicionamento absoluto e o filtro de desfoque blur() a um pseudo-elemento ::before. Defina o fundo do elemento principal como transparente para que o efeito de desfoque seja perceptível.

.effect-behind {
  position: relative;
  background: transparent;
}

.effect-behind::before {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  background: inherit;
  filter: blur(10px);
  z-index: -1;
}

Essa abordagem criará um efeito visual semelhante ao uso de backdrop-filter, permitindo que o conteúdo atrás do elemento com a classe .effect-behind pareça desfocado. Ajustando o parâmetro blur(10px), você pode controlar o grau de desfoque.

Considerando a Compatibilidade entre Navegadores

Essas recomendações são uma ótima solução, mas é essencial considerar as peculiaridades de diferentes navegadores. Aqui estão algumas formas de garantir que sua solução seja robusta para o futuro.

Usando @supports

A sintaxe @supports permite que você escreva estilos altamente adaptáveis. Ela verifica se o navegador pode processar propriedades com valores específicos, permitindo que você ajuste seu código de acordo.

@supports (backdrop-filter: blur(2em)) {
  .effect-behind {
    backdrop-filter: blur(2em);
  }
}
@supports not (backdrop-filter: blur(2em)) {
  /* use estilos alternativos aqui */
}

Habilitando Recursos Experimentais

Para alguns navegadores, incluindo Chrome e Safari, configurações adicionais ou uso de prefixos podem ser necessários:

  • Safari: -webkit-backdrop-filter
  • Chrome: Ative recursos experimentais da plataforma web em chrome://flags/#enable-experimental-web-platform-features.

Fundos Semi-transparentes como Alternativa

Para navegadores que não suportam backdrop-filter, usar um fundo semi-transparente pode ser uma alternativa. Embora isso não crie um efeito de desfoque, suavizará o impacto visual.

.effect-behind {
  background-color: rgba(255, 255, 255, 0.5);
}

Explorando Filtros SVG

Filtros SVG oferecem uma alternativa poderosa para criar efeitos visuais complexos. No entanto, seu uso pode reduzir o desempenho e impor limitações ao trabalhar com conteúdo dinâmico.

O Uso de Pseudo-elementos

Utilize pseudo-elementos para criar um efeito visual desfocado no fundo enquanto gerencia cuidadosamente o valor de z-index.

.effect-faux {
  position: relative;
}

.effect-faux::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: inherit;
  filter: blur(10px);
  z-index: -1;
}

Criando um Efeito de Vidro Fosco

Vamos visualizar isso.

🖼️ Janela Transparente: Um elemento sem nenhum efeito.

🧊 Aplicando backdrop-filter: O conteúdo atrás do elemento parece desfocado, como se visto através de vidro fosco.

🖌️ Método Alternativo: Usar um filme semi-transparente alcança um efeito semelhante.
Antes: [🏞 Visão Clara]
Depois: [🏞🔲🌫️ Efeito de Vidro Fosco]

Dessa forma, você criou um efeito semelhante ao frost sem utilizar a propriedade backdrop-filter.

Estratégias para Otimizar o Desempenho

Vamos tentar adicionar algo novo aos nossos métodos.

Verificação de Suporte Dinâmico ao Navegador

Usando JavaScript, você pode verificar em tempo real o suporte da propriedade backdrop-filter no navegador e aplicar estilos alternativos, se necessário.

Preparando-se para o Futuro

Fique atento às informações de suporte para propriedades na documentação oficial e nas notas de versão dos navegadores. Por exemplo, o suporte ao backdrop-filter foi habilitado por padrão desde o Chrome 76.

Aprendendo com Exemplos Práticos

Explore plataformas como CodePen ou JSFiddle, onde você pode encontrar numerosos exemplos e praticar sua implementação antes de integrá-los em projetos reais.

Recursos Úteis

  1. Can I use... Tabelas de suporte para HTML5, CSS3, etc — Confira o suporte dos navegadores modernos para a propriedade backdrop-filter.
  2. A propriedade CSS backdrop-filter | CSS-Tricks — Uma visão completa da propriedade backdrop-filter e seus polyfills.
  3. HTML - CSS: Solução alternativa para backdrop-filter? - Stack Overflow — Discussão sobre possíveis soluções e alternativas para a propriedade backdrop-filter.
  4. backdrop-filter - CSS: Folhas de Estilo em Cascata | MDN — Documentação oficial sobre backdrop-filter do MDN Docs.
  5. Introduzindo Filtros de Fundo | WebKit — Uma postagem de blog da WebKit apresentando uma visão detalhada da propriedade backdrop-filter.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!