JSFiddle - React, Tailwind, and code Playground
by HDL52
HTML
<div id="bg"></div>
<div id="bg_mask"></div>
<main><h1>Hongda Lin</h1></main>
CSS
@font-face {
font-family: "NeueMontreal-Bold";
src: url("https://raw.githubusercontent.com/Hongda-OSU/PicGo-2.3.1/master/imgNeueMontreal-Bold.otf");
font-display: swap;
}
:root {
--x: 50%;
--y: 50%;
--blur: 0.7vmax;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: black;
overscroll-behavior-x: none;
overscroll-behavior-y: none;
overflow: hidden;
user-select: none;
}
body {
width: 100vw;
height: 100vh;
font-family: "Lexend", serif;
text-align: center;
line-height: 1;
display: flex;
justify-content: center;
align-items: center;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
main {
z-index: 1;
}
h1 {
font-size: max(10vw, 60px);
font-family: "NeueMontreal-Bold", sans-serif;
color: #fff;
text-transform: uppercase;
}
#bg,
#bg_mask {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: calc(var(--blur) * -1);
background: url(https://raw.githubusercontent.com/Hongda-OSU/PicGo-2.3.1/master/imgj1udos782ybmzugwd1ltkozc9zxj3gz.jpg) no-repeat center/cover;
background-size: cover;
image-rendering: -webkit-optimize-contrast;
}
#bg {
filter: blur(var(--blur));
}
#bg_mask {
mask-image: radial-gradient(circle 50vmin at var(--x) var(--y),
black 20vmin,
transparent);
}
JavaScript
"use strict";
console.clear();
const root = document.querySelector(":root");
function spotlight(e) {
root.style.setProperty("--x", e.pageX + "px");
root.style.setProperty("--y", e.pageY + "px");
}
window.addEventListener("pointermove", spotlight);
window.addEventListener("pointerdown", spotlight);