新闻中心

如何用css实现导航栏下划线动画

2025-10-26
浏览次数:
返回列表
答案:通过CSS伪元素::after结合transform和transition实现导航栏下划线动画,1. 使用flex布局构建横向导航;2. 设置a标签相对定位;3. 利用::after创建初始宽度为0的下划线;4. hover时宽度变为100%,配合transition实现滑动效果;5. 通过left和transform控制展开方向,如居中展开需设置left:50%和translateX(-50%)。

如何用css实现导航栏下划线动画

实现导航栏下划线动画,可以通过 CSS 的伪元素(如 ::after::before)结合 transformtransition 来完成。点击或悬停时,下划线从一侧滑动出现,视觉效果流畅自然。

1. 基本 HTML 结构

假设导航栏由一个无序列表构成:

<n*>
  <ul class="n*-list">
    <li><a href="#">首页</a></li>
    <li><a href="#">关于</a></li>
    <li><a href="#">服务</a></li>
    <li><a href="#">联系</a></li>
  </ul>
</n*>

2. 基础样式设置

先给导航基本样式,隐藏默认列表符号,横向排列:

.n*-list {
  list-style: none;
  display: flex;
  gap: 40px;
  padding: 20px;
  background: #f8f8f8;
}

.n*-list a {
  text-decoration: none;
  color: #333;
  font-size: 16px;
  position: relative;
  padding: 10px 0;
}

3. 添加下划线动画效果

使用 ::after 伪元素创建下划线,初始状态隐藏,悬停时滑出:

.n*-list a::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 5px;
  width: 0;
  height: 2px;
  background-color: #007acc;
  transition: width 0.3s ease, left 0.3s ease;
}

.n*-list a:hover::after {
  width: 100%;
}

这样,鼠标移到链接上时,下划线会从左向右伸展。

Mureka Mureka

Mureka是昆仑万维最新推出的一款AI音乐创作工具,输入歌词即可生成完整专属歌曲。

Mureka 1091 查看详情 Mureka

4. 进阶:居中向两边展开

如果想让下划线从中部向左右两侧展开,调整伪元素的起点和 transform:

.n*-list a::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 5px;
  width: 0;
  height: 2px;
  background-color: #007acc;
  transition: width 0.3s ease, left 0.3s ease;
  transform: translateX(-50%);
}

.n*-list a:hover::after {
  width: 100%;
  left: 0;
}

利用 transform: translateX(-50%) 将下划线中心对齐,悬停时宽度撑满,视觉上就是从中向两边展开。

基本上就这些。通过控制伪元素的宽、位置和过渡效果,就能做出各种风格的下划线动画,不复杂但容易忽略细节。比如确保父元素是相对定位,伪元素才能准确定位。

以上就是如何用css实现导航栏下划线动画的详细内容,更多请关注其它相关文章!


# 鼠标  # seo粤语读西还是hi  # 律师推广网站怎么做最好  # 江门租房网站建设  # 品牌营销推广系统招商  # 网络推广营销新模式  # 绿茶营销推广方案设计图  # 淘宝单品关键词排名  # 网站投放推广方案怎么写  # 快速推广本地营销计划  # 快捷的抖音营销推广方法  # 可以通过  # 相关文章  # 就能  # css  # 选择器  # 两种类型  # 进阶  # 中不  # 如何用  # 下划线  # 相对定位  # a标签  # 排列  # flex布局  # 伪元素  # html  # 导航栏下划线 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  响应式CSS Grid布局:优化网格项在小屏幕下的堆叠与宽度适配  谷歌google账号注册详细步骤 谷歌账号注册官方教程  J*aScript 字符串标签转换:使用正则表达式高效替换  如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  AO3同人作品网入口 AO3搜索引擎官网永久地址  J*a应用程序首次运行自动创建文件与目录的最佳实践  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  抖音极速版最新版本 抖音极速版官方下载地址  composer的"require-dev"部分是用来做什么的?  如何更改在 Excel 中打开超链接时的默认浏览器  AO3最新镜像入口 Archive of Our Own官方平台访问  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】  微信网页版登录教程_微信网页版登录入口在哪  QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  windows10怎么关闭系统提示音_windows10彻底静音设置方法  包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接  Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询  拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  红果短剧网页版官网入口 官方最新网址发布  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!  使用Python高效删除Word宏并转换DOCM为DOCX格式  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践  Typer应用中动态命令行参数的解析与处理  为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法  动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道  学习通网页版官方登录 超星学习通电脑端入口指南  126邮箱网页版官方入口 126邮箱账号在线登录平台  在Typer应用中优雅地处理和重组任意命令行参数  2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC  Spyder启动失败:字体文件权限拒绝错误解决方案  夸克AO3官网入口_AO3镜像网站2025推荐  Win11怎么开启高性能模式_Windows 11电源计划优化设置  Golang如何使用const iota_Go iota常量计数器讲解  台积电1.4nm工艺A14瞄准2028:10年来性能提升80%  J*aScript中针对特定容器内图片动画的实现教程  谷歌推RCS信息存档功能:公司可监控员工私密信息!  移动端XML文件怎么转换成Excel 手机和平板上的解决方案  照顾宝贝2小游戏免费秒玩入口  蛙漫2台版漫画地址 Manwa2正版网页版链接 

搜索