[HTML, CSS, JS] Como fiz um efeito para "enxergar" através de uma <div> | Efeito lanterna
Sei que o título é estranho, mas vamos lá...
Decidi começar estudar programação recentemente e para treinar eu penso em algumas tarefas, efeitos ou qualquer coisa do tipo e tento "construir" efetivamente essa minha "mini ideia".
Ideia
Sobrepor duas "camadas" e conseguir enxergar a camada que está por baixo, porém, somente na região onde o mouse estiver.
Código
HTML
<div id="fundo">
FUNDO
</div>
<div id="frente">
FRENTE
</div>
CSS
*{
margin: 0;
padding: 0;
font: bold 80pt arial;
}
div{
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
width: 100vw;
cursor: none;
}
#fundo{
background-color: rgb(207, 207, 50);
color: rgb(29, 29, 29);
}
#frente{
background-color: rgb(29, 29, 29);
color: white;
position: absolute;
top: 0;
left: 0;
}
JavaScript
let frente = document.getElementById("frente")
document.addEventListener('mousemove', (event) =>{
let x = event.pageX + "px";
let y = event.pageY + "px";
frente.style.webkitMaskImage = `radial-gradient(circle at ${x} ${y}, transparent 100px, black 0%)`;
})
Resultado
Efeito lanterna
Vendo o resultado tive a sensação de estar olhando para um feixe de luz de uma lanterna, então fiz o seguinte exemplo: Neste exemplo a diferença foi que deixei a camada da frente com o alfa em 0,95 (rgba(0, 0, 0, 0.95)) e o radial gradient um pouco mais "esfumaçado" com branco.
Conclusão
Sei que talvez seja algo muito básico para alguns ou então que exista algo pronto para executar isso, mas é muito gratificante pegar algo que "saiu" da tua cabeça e conseguir executar.
E aí, sabe outra forma de conseguir o mesmo resultado ?
Abraço!!
Dá pra fazer um joguinho com isso. Coloca um contador de tempo Coloca um objeto pequeno, aleatoreamente no espaço para ser clicado. Pronto!
Ficou top cara, um código simples que pose ser implementado em alguns projetos. Basta a criatividade
Muito interessante. Será que daria para fazer o mesmo efeito utilizando, ao inves de dois elementos diferentes, uma div e aplicando ao seu after e before? Talvez deixe o cod mais complexo, mas tudo estaria em só um lugar
Muito bom, pensei em muitas utilidades, parabéns!
Parabéns mano, ficou muito legal, já me vejo usando nos próximos projetos web.
Caramba genial, dá pra adaptar pra outras coisas
Geralmente as criações mais simples são as mais espetaculares. Adorei esse efeito, e vou favoritar pra quando precisar de algo diferente e criativo pra usar 🤩
Cara, ficou show de bola. Parabéns.
Não liga para o comentário maldoso que colocaram. A pessoa que fez isso é um coitado que não sabe reconhecer o trabalho dos outros.
Ficou muito bom mesmo. Você vai longe!
Caramba que top isso, parabens!! Já vou salvar aqui pra usar em projetos futuro.
muito maneiro, ficou excelente!
Sensacional. Parabéns!
Código bem simples, muito bom. Parabéns
Muito interessante!
Parabéns!!! ficou show !!!
Isso ficou uma merdakkkkkk pra quem fazer isso coloca max-blend: exclusion