let html = '';
for (var i = 0; i < 30; i++) {
let x = 25 + Math.random()*(innerWidth - 100);
let y = 25 + Math.random()*(innerHeight - 100);
html += `<div class="elem" style="transform:translate(${x}px,${y}px)"></div>`
}
document.body.innerHTML += html;
let elements = document.querySelectorAll('.elem')
addEventListener('mousemove', e => elements.forEach(el => checkElement(e, el)));
function checkElement(p, el) {
let rect = el.getBoundingClientRect();
let dx = Math.max(rect.x - p.x, 0, p.x - rect.x - rect.width);
let dy = Math.max(rect.y - p.y, 0, p.y - rect.y - rect.height);
el.classList.toggle('hover', Math.sqrt(dx*dx + dy*dy) < 50);
}
笔画宽度可以通过 CSS 控制
一种外观与此类似的变体https://ru.stackoverflow.com/a/1103404/188366,但角落的处理方式仍然不同......
这是一个小代码示例。您可以在此处阅读有关元素坐标和鼠标的更多信息。