<div class="wrap" id="img">
<img class="prew" src="https://tva1.sinaimg.cn/large/008i3skNgy1gubr2sbyqdj60xa0m6tey02.jpg">
</div>
body{
margin: 0;
height: 100vh;
display: grid;
place-content: center;
}
.prew{
display: block;
width: 800px;
}
.wrap{
position: relative;
}
.wrap::after{
content: '';
position: absolute;
width: 100%;
height: 100%;
background: rgba(0,0,0,.3);
backdrop-filter: blur(5px);
top: 0;
mask: radial-gradient( circle at calc(var(--x, .5) * 100% ) calc(var(--y, .5) * 100% ), transparent 50px, red 51px);
}
img.addEventListener('mousemove', (ev) => {
img.style.setProperty('--x', ev.offsetX / ev.target.offsetWidth);
img.style.setProperty('--y', ev.offsetY / ev.target.offsetHeight);
})
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.