Gerador de CSS para efeito de vidro em alta resolução
(glass3d.dev)- Fornece uma forma de implementar o efeito de vidro em alta resolução com código CSS
- Aplica filtros visuais como blur, brightness e saturate, além de sombras em múltiplas camadas
- Usa pseudo-elements para criar efeitos de camada frontal e traseira e aplicar textura
- Pode ser aplicado e customizado em várias UIs com apenas uma classe CSS concisa
- É vantajoso para introduzir um efeito de vidro em alta resolução de forma rápida e moderna em projetos web
Introdução
Este código CSS é especializado em criar um efeito de vidro em alta resolução em interfaces web. Em comparação com o efeito glassmorphism tradicional, ele permite uma apresentação mais detalhada e com maior sensação de profundidade, e o resultado pode ser visto de forma intuitiva aplicando apenas uma única classe CSS.
Principais pontos
- A classe
.glass3daplica vários efeitos de filtro visual, como blur(32px), brightness(0.85) e saturate(2.5), além de inserir cor e textura de ruído - A composição de box-shadow em múltiplas etapas recria a sensação de vidro com volume realista
- No pseudo-elemento
::before, backdrop-filter, cor e imagem de fundo com ruído são sobrepostos para produzir transparência de fundo e textura tridimensional - No pseudo-elemento
::after, uma sombra interna (inset) é adicionada para dar a impressão de luz refletindo na superfície real do vidro - A separação com z-index organiza as camadas para que os efeitos não entrem em conflito e sejam exibidos corretamente
- Com o seletor
.glass3d > *, o conteúdo dos elementos filhos é mantido sempre no topo
Contexto de uso e vantagens
- Sem bibliotecas ou dependências externas, é possível implementar uma UI moderna e alinhada às tendências com efeito de vidro usando apenas uma única classe CSS
- Pode ser aplicado e expandido facilmente em sistemas de design de UI, cards, pop-ups e botões, sendo muito útil para desenvolvedores front-end web
- Com textura baseada em imagens de padrão real, várias combinações de cores e efeitos de sombra em múltiplas etapas, ele se destaca em profundidade e contraste em relação às técnicas convencionais de glassmorphism
1 comentários
Opiniões no Hacker News
Recomendo conferir uma versão que aplica um efeito real de refração aos elementos da página com JavaScript https://real-glass.vercel.app/
Esse efeito tem a limitação de desfocar apenas os pixels logo atrás da superfície; recomendo o texto do Josh Comeau que explica bem esse fenômeno (https://www.joshwcomeau.com/css/backdrop-filter/#the-issue) e a discussão no Hacker News (https://news.ycombinator.com/item?id=42302907); é uma questão bem importante se o fundo estiver se movendo, mas normalmente não importa tanto se ele estiver fixo
border-radiuscom máscara SVG; funcionou bem em elementos hardcoded, mas ainda estou pensando em como usar isso numa biblioteca inteira de componentes, em que oborder-radiusmuda conforme a marca ou as container queriesParece ter sido muito bem feito, mas sem o efeito de refração do vidro desaparece a forte sensação de separação visual em camadas do Liquid Glass; olhando os recursos de design do Material, eles enfatizam que o app deve ser composto por camadas 3D consistentes e em movimento, mas quando isso é implementado na prática em 2D e todos os elementos acabam se misturando, fica muito difícil distinguir cada camada; muitas vezes as pessoas não conseguem encontrar botões de ação em cantos mais escondidos; o movimento ajuda a separar o chrome do conteúdo, mas visualmente não se destaca muito; acho que a maior vantagem do Liquid Glass é a distorção nas bordas (
edge distortion), porque ela cria um movimento não linear que o olho humano percebe imediatamente quando o conteúdo se move; com movimento, a separação entre camadas fica mais evidente; esse elemento importante de refração está ausente aqui; implementaredge distortioncom filtro SVG não é fácil e, no fim, é um trabalho bastante complexo; dá para ter noção da complexidade pela explicação passo a passo em https://atlaspuplabs.com/blog/liquid-glass-but-in-css/…; também encontrei uma coleção CodePen Spark com várias tentativas de implementar Liquid Glass, e recomendo junto uma referência bem feita com SVG hardcoded https://codepen.io/spark/453 https://codepen.io/lucasromerodb/pen/vEOWpYMedge distortiondo Liquid Glass realmente incrível, então pretendo recriá-la algum dia; meu projeto atual foca em refinar os detalhes, cuidar da compatibilidade entre navegadores e implementar materiais sem usar 3D real; e concordo que o efeito se destaca mais quando as camadas se movem sobre um fundo fixo; o site de demonstração que estou desenvolvendo atualmente já tem esse efeito, embora ainda não esteja pronto; obrigado por compartilhar bons materiaisO efeito em si é legal, mas não me passa muito uma sensação de vidro; a diferença mais imediata é que a luz não reage em nada ao bevel (curvatura da borda); eu esperaria também que a luz refletida no vidro influenciasse a iluminação e as cores; só com efeito de blur isso fica difícil; além disso, o vidro pode criar sombras bem características, especialmente
caustics, e parece que nem a Apple foi tão longe nisso; no momento, a sombra parece mais um simplesdrop shadow, reforçando mais a sensação de cartão plano do que de objeto 3D; isso foge do cerne da tendência recente; esse tipo de efeito é difícil de implementar só com CSS, e talvez faça mais sentido rodar isso como shader na GPUdivcomum; se não for possível colocar efeitos de GPU diretamente em HTML básico, talvez no fim seja melhor criar um novo motor de renderização com algo como um canvas customizado; o HTML já perdeu o sentido e agora só sobra a tag<p>para texto enquanto todo o resto virou anúncio; talvez fosse melhor recomeçar do zero, deixar só o<p>e melhorar a integração com GPUEstou colecionando exemplos desse tipo de design https://github.com/swyxio/spark-joy
Também recomendo alguns materiais relacionados
Acho que a usabilidade no mobile seria muito melhor se houvesse uma opção para esconder ou recolher as caixas; como elas ocupam a tela inteira, fica difícil ver o efeito ao fundo; ainda assim, achei interessante e pretendo testar de novo numa tela maior; adicionar uma opção para esconder as caixas ajudaria bastante
Parece usar uma técnica parecida com a da minha implementação de glass https://news.ycombinator.com/item?id=42225481, especialmente no uso intensivo de
box-shadowFunciona bem como efeito para fundo de página na web
No meu celular, o scroll está bem lento; fiquei na dúvida se há algum outro efeito de scroll propositalmente desacelerado ou se isso é um efeito colateral do glass
Achei muito bem feito; sempre me surpreende como computação gráfica não é “um único truque especial”, mas na prática “cinco camadas de truques”; também imagino que suporte cross-browser seja um grande desafio; você tem alguma ideia de qual parte consome mais recursos? Meu palpite seria o
backdrop-filterbackdrop-filter; quanto maior o valor de blur, mais informações de pixels ao redor precisam ser consultadas na renderização; outra parte que consome recursos é a atualização em tempo real da aparência do glass durante o scroll ou quando o fundo em vídeo muda