在 CSS3 中,实现导航下划线有多种常见方式,下面按使用频率和效果从简单到高级给你讲几种主流做法。
border-bottom适合:静态下划线
<nav>
<a href="#">首页</a>
<a href="#">文章</a>
<a href="#">关于</a>
</nav>
nav a {
text-decoration: none;
padding: 10px;
border-bottom: 2px solid transparent;
}
nav a:hover {
border-bottom: 2px solid #007bff;
}
✅ 简单
❌ 下划线不能动态动画
::after 伪元素(最推荐)适合:悬停动画、当前选中状态
nav a {
position: relative;
text-decoration: none;
padding: 10px;
}
nav a::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 0;
height: 2px;
background: #007bff;
transition: width 0.3s;
}
nav a:hover::after {
width: 100%;
}
✅ 可动画
✅ 不影响布局
nav a::after {
left: 50%;
transform: translateX(-50%);
width: 0;
}
nav a:hover::after {
width: 100%;
}
nav a.active::after {
width: 100%;
}
<a href="#" class="active">首页</a>
nav {
display: flex;
gap: 20px;
}
下划线逻辑不变,依然用 ::after
适合:类似 Tab 效果(需 JS 配合)
const line = document.querySelector('.line');
document.querySelectorAll('nav a').forEach(a => {
a.onmouseenter = () => {
line.style.left = a.offsetLeft + 'px';
line.style.width = a.offsetWidth + 'px';
}
});
.line {
position: absolute;
bottom: 0;
height: 2px;
background: #007bff;
transition: 0.3s;
}
| 需求 | 推荐方式 |
|---|---|
| 简单静态 | border-bottom |
| 悬停动画 | ::after |
| 当前页高亮 | .active + ::after |
| 跟随动画 | JS + 绝对定位 |
如果你有具体导航样式截图 / 想要某种动画效果,可以直接发我,我帮你写完整代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。