Magnetic Nav Items
カーソルに吸い寄せられるナビゲーションリンク。
HTML
<nav class="mag-nav"> <a href="javascript:void(0)" class="mag-item">Home</a> <a href="javascript:void(0)" class="mag-item">Work</a> <a href="javascript:void(0)" class="mag-item">Contact</a> </nav>
CSS
.mag-nav {
display: flex;
gap: 1.5rem;
}
.mag-item {
font-size: 15px;
font-weight: 500;
color: #666;
text-decoration: none;
padding: 8px 4px;
transition: color .2s, transform .2s cubic-bezier(.2,1,.3,1);
}
.mag-item:hover { color: #1a1a1a; }
JavaScript
document.querySelectorAll('.mag-item').forEach(item => {
item.addEventListener('mousemove', e => {
const rect = item.getBoundingClientRect();
const x = e.clientX - rect.left - rect.width / 2;
const y = e.clientY - rect.top - rect.height / 2;
item.style.transform = `translate(${x * 0.25}px, ${y * 0.4}px)`;
});
item.addEventListener('mouseleave', () => {
item.style.transform = 'translate(0, 0)';
});
});