BrunoP.Blog

Efeitos CSS prontos para copiar: glow, border-beam, gradiente animado, texto scramble e mais

Uma galeria viva de efeitos CSS que você clica, vê funcionando e copia o código — sem framework obrigatório. Glow, border-beam, gradiente animado, brilho de hover, texto scramble e aurora. Cada um é um div e um punhado de linhas.

"Qual framework CSS eu uso?" é uma das perguntas que mais chega. A resposta honesta é depende — e quase nunca é uma guerra santa. Um resumo rápido de quando cada um faz sentido:

  • Tailwind CSS — utilitários no HTML. Você vai muito rápido e mantém consistência sem brigar com nomes de classe. É o que uso aqui na bpso. Custo: o HTML fica "verboso".
  • Bootstrap — componentes prontos (grid, modal, navbar). Ótimo pra painel interno, MVP e legado; o preço é todo mundo parecer "site Bootstrap" se você não customizar.
  • Bulma — leve, moderno e sem JS. Bom meio-termo quando você quer componentes sem trazer JavaScript junto.
  • CSS puro + Open Props — controle total com variáveis (design tokens) sem framework. Mais trabalho, máxima identidade. Pra site de marca, costumo ir daqui ou de Tailwind.

Mas escolher o framework é o começo. O que faz uma interface ter alma são os detalhes — os efeitos. Abaixo deixei 6 que uso de verdade, prontos pra copiar e colar (funcionam em qualquer framework, é CSS puro). Cada um tem demo ao vivo e o botão "Copiar". Use com moderação — e sempre respeitando prefers-reduced-motion.

Glow

1 · Glow / neon

.glow {
  color: #fff;
  text-shadow:
    0 0 8px  #8b5cf6,
    0 0 22px #8b5cf6,
    0 0 44px rgba(139,92,246,.6);
}
CTA com border-beam

2 · Border-beam (o do CTA)

@property --beam { syntax: '<angle>'; inherits: false; initial-value: 0deg; }
.beam { position: relative; border-radius: 12px; isolation: isolate; }
.beam::before {
  content: ''; position: absolute; inset: 0; border-radius: inherit; padding: 2px;
  background: conic-gradient(from var(--beam), transparent 0 70%, #38bdf8 85%, #818cf8 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  animation: beam-spin 4s linear infinite;
}
@keyframes beam-spin { to { --beam: 360deg; } }
Gradiente

3 · Texto com gradiente animado

.grad-text {
  background: linear-gradient(90deg,#8b5cf6,#ec4899,#38bdf8,#8b5cf6);
  background-size: 300% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent;
  animation: grad 6s linear infinite;
}
@keyframes grad { to { background-position: 300% 0; } }
Passe o mouse

4 · Shine (brilho varrendo no hover)

.shine { position: relative; overflow: hidden; }
.shine::after {
  content: ''; position: absolute; inset: 0; transform: translateX(-130%);
  background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.5) 50%, transparent 70%);
}
.shine:hover::after { transition: transform .8s ease; transform: translateX(130%); }
bpso.com.br

5 · Scramble / decode (texto)

function scramble(el, text, speed = 38) {
  const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ0123456789!<>-_/*';
  let frame = 0;
  const id = setInterval(() => {
    el.textContent = text.split('').map((c, i) =>
      i < frame / 2 ? c : chars[Math.floor(Math.random() * chars.length)]
    ).join('');
    if (frame / 2 >= text.length) clearInterval(id);
    frame++;
  }, speed);
}
// scramble(el, 'bpso.com.br');

6 · Aurora (fundo gradiente animado)

.aurora {
  background: linear-gradient(125deg,#1e1b4b,#4c1d95,#1e3a8a,#1e1b4b);
  background-size: 300% 300%;
  animation: aurora 12s ease infinite;
}
@keyframes aurora {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

Ver esses efeitos em ação nos projetos