是一种在前端开发中常见的技术,用于为导航菜单添加动态的下划线效果。这种动画效果可以提升用户体验,并帮助用户更好地导航网站。
具体实现方式如下:
<ul>
和列表项 <li>
来构建。<ul class="nav-menu">
<li><a href="#">首页</a></li>
<li><a href="#">产品</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">关于我们</a></li>
</ul>
.nav-menu {
list-style: none;
display: flex;
justify-content: space-between;
}
.nav-menu li {
position: relative;
}
.nav-menu li a {
text-decoration: none;
color: #000;
transition: color 0.3s ease-in-out;
}
.nav-menu li a:hover {
color: #ff0000;
}
.nav-menu li::after {
content: '';
position: absolute;
bottom: -5px;
left: 0;
width: 0;
height: 2px;
background-color: #ff0000;
transition: width 0.3s ease-in-out;
}
.nav-menu li:hover::after,
.nav-menu li.active::after {
width: 100%;
}
const navItems = document.querySelectorAll('.nav-menu li');
const underline = document.createElement('span');
underline.classList.add('underline');
navItems.forEach(item => {
item.addEventListener('mouseenter', () => {
const link = item.querySelector('a');
const linkWidth = link.offsetWidth;
const linkLeft = link.offsetLeft;
underline.style.width = `${linkWidth}px`;
underline.style.transform = `translateX(${linkLeft}px)`;
});
item.addEventListener('mouseleave', () => {
underline.style.width = '0';
underline.style.transform = 'translateX(0)';
});
});
document.querySelector('.nav-menu').appendChild(underline);
通过上述代码,我们可以实现当鼠标悬停在导航菜单项上时,下划线的宽度会自动适应当前菜单项的宽度,并以动画效果从左到右扩展;鼠标移出时,下划线会收缩回初始状态。
推荐的腾讯云产品:无特定产品与该技术直接关联。
请注意,上述答案仅供参考,实际开发中可能会根据具体需求和框架选择不同的实现方式和技术工具。
领取专属 10元无门槛券
手把手带您无忧上云