SnippetUI

Card com Brilho Neon

Este é um componente de interface de usuário de cartão interativo em que a borda do cartão acende como uma luz neon quando você passa o mouse e o holofote se move dependendo da posição do mouse.

HTMLCSSJavaScript

Visualização

Três cartas se destacam contra um fundo escuro e, quando pairadas, um brilho neon e um efeito de holofote são ativados.

Lightning Fast

Carregue instantaneamente com cache de borda.

🛡️

Secure by Design

Seguro com segurança de confiança zero.

📊

Deep Analytics

Informações em tempo real.

Casos de uso e recursos

  • Jogos/Dashboards/Produtos Digitais: Adequado para sites de tema escuro.

  • Variáveis ​​CSS mais JavaScript: Uma implementação simples para atualizar variáveis ​​--mx / --my com JavaScript.

  • Controle a cor de cada cartão com variáveis ​​CSS: Altere facilmente a cor emissora com a variável --glow.

Pontos de design e UX

  1. Controle a posição do radial-gradient com a posição do mouse: Obtenha a direcionalidade do destaque especificando a posição com uma variável CSS em vez de background-position.

  2. opacity: 0 → 0.6 transição: O brilho desaparece, então o foco é natural e suave.

  3. translateY(-8px) lift-up: O efeito de fazer os cartões parecerem flutuantes enfatiza a interatividade.

Como personalizar

Para alterar a cor do brilho, basta substituir a variável --glow:


/* sotaque rosa */

.neon-card { --glow: #ec4899; }



/* sotaque ciano */

.neon-card { --glow: #06b6d4; }

Código de implementação

<div class="neon-cards-grid">

<div class="neon-card neon-card-1">

  <div class="neon-card-content">

    <div class="neon-card-icon">⚡</div>

    <h3 class="neon-card-title">Lightning Fast</h3>

    <p class="neon-card-desc">Carregue instantaneamente com cache de borda.</p>

  </div>

</div>

<!-- Estrutura semelhante para outros cartões -->

</div>



<style>
/* Os detalhes são iguais aos do CSS na visualização */

.neon-cards-grid {

display: grid;

grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));

gap: 2rem;

}



.neon-card {

--glow: #6366f1;

position: relative;

background: #111;

border-radius: 16px;

padding: 2px;

cursor: pointer;

transition: transform 0.3s ease;

overflow: hidden;

}



.neon-card::before {

content: "";

position: absolute;

inset: 0;

background: radial-gradient(600px circle at var(--mx, 50%) var(--my, 50%), var(--glow), transparent 40%);

opacity: 0;

transition: opacity 0.3s ease;

}



.neon-card:hover {

transform: translateY(-8px);

}

.neon-card:hover::before {

opacity: 0.6;

}



.neon-card-content {

position: relative;

background: #111;

border-radius: 14px;

padding: 2rem;

height: 100%;

z-index: 1;

}



.neon-card-1 { --glow: #ec4899; }

.neon-card-2 { --glow: #06b6d4; }

.neon-card-3 { --glow: #8b5cf6; }
</style>



<script>

(function() {

document.querySelectorAll('.neon-card').forEach(function(card) {

  card.addEventListener('mousemove', function(e) {

    var rect = card.getBoundingClientRect();

    card.style.setProperty('--mx', ((e.clientX-rect.left)/rect.width*100)+'%');

    card.style.setProperty('--my', ((e.clientY-rect.top)/rect.height*100)+'%');

  });

});

})();

</script>

Status de compatibilidade do navegador

| Navegador | Estado de compatibilidade |

|-------|-------|

| Cromo 49+ | ✅ Totalmente compatível |

| Firefox 31+ | ✅ Totalmente compatível |

| Safári 9.1+ | ✅ Compatível |

| Borda 79+ | ✅ Totalmente compatível |