如何通过 CSS 实现走马灯效果(纯前端实现)

在实际项目中,公告栏、通知栏、消息提示等场景,经常会用到走马灯滚动效果

很多人第一反应是用 JavaScript,但实际上,仅用 CSS 就能完成大多数需求,而且实现简单、性能稳定。

本文将从原理 → 实现 → 常见问题,完整讲清楚 CSS 走马灯的做法。


一、CSS 走马灯的实现思路

CSS 走马灯本质上只有三个核心点:

  1. 外层容器固定尺寸并隐藏溢出内容
  2. 内部内容横向排列
  3. 通过 @keyframes 不断平移内容

一句话概括:

在一个"看不见边界"的容器里,让内容持续向一个方向移动。


二、基础 HTML 结构

走马灯的 HTML 结构应尽量简单:

html 复制代码
<div class="marquee">
  <div class="marquee-content">
    <span>系统公告:今晚 23:00 维护</span>
    <span>新功能已上线,欢迎体验</span>
    <span>客服热线:400-xxx-xxxx</span>
  </div>
</div>

结构说明:

  • marquee:可视区域
  • marquee-content:实际滚动内容
  • span:每一条展示信息

三、核心 CSS 样式

1️⃣ 外层容器样式

css 复制代码
.marquee {
  width: 100%;
  height: 40px;
  overflow: hidden;
  background-color: #f5f5f5;
  line-height: 40px;
}

关键点说明:

  • overflow: hidden:这是走马灯能成立的前提
  • 固定高度,避免动画过程中页面抖动

2️⃣ 内容横向排列

css 复制代码
.marquee-content {
  display: inline-flex;
  white-space: nowrap;
}

作用:

  • 所有内容在同一行显示
  • 防止自动换行导致动画中断

四、添加滚动动画

1️⃣ 定义动画

css 复制代码
@keyframes marquee-scroll {
  0% {
    transform: translateX(100%);
  }
  100% {
    transform: translateX(-100%);
  }
}

说明:

  • 从容器右侧进入
  • 滚动到完全离开左侧

2️⃣ 应用动画

css 复制代码
.marquee-content {
  animation: marquee-scroll 10s linear infinite;
}

参数含义:

  • 10s:滚动速度(时间越大,滚动越慢)
  • linear:匀速滚动,避免忽快忽慢
  • infinite:无限循环

五、常见优化技巧

1️⃣ 鼠标悬停暂停滚动

css 复制代码
.marquee:hover .marquee-content {
  animation-play-state: paused;
}

适合公告、提示类内容,提升可读性。


2️⃣ 内容间距调整

css 复制代码
.marquee-content span {
  margin-right: 60px;
}

避免多条内容挤在一起,提升视觉体验。


3️⃣ 控制滚动方向(向右)

css 复制代码
@keyframes marquee-scroll {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

六、适用场景说明

纯 CSS 走马灯适合:

  • 公告栏 / 通知栏
  • 活动提示
  • 简单信息轮播
  • 后台系统提示区域

不适合:

  • 复杂交互
  • 精准控制某一条停留时间
  • 动态插入大量数据(这类更适合 JS)

七、小结

CSS 实现走马灯的优势非常明显:

  • 不依赖 JavaScript
  • 实现简单,代码少
  • 性能开销低
  • 兼容性好

在大多数「信息滚动展示」场景下,优先使用 CSS 方案即可

相关推荐
Definition11 分钟前
Claude Code 能养宠物了,体验下抽卡的感觉
前端·程序员
Daiyaosei16 分钟前
紧急安全警报:Axios npm 包被投毒事件详解与防护指南
前端·javascript·安全
We་ct21 分钟前
LeetCode 295. 数据流的中位数:双堆解法实战解析
开发语言·前端·数据结构·算法·leetcode·typescript·数据流
青槿吖24 分钟前
第一篇:Redis集群从入门到踩坑:3主3从保姆级搭建+核心原理一次性讲透|面试必看
前端·redis·后端·面试·职场和发展·bootstrap·html
美狐美颜sdk34 分钟前
2026主流直播美颜sdk对比:效果、算法与成本分析
前端·人工智能·计算机视觉·美颜sdk·直播美颜sdk·第三方美颜sdk·视频美颜sdk
王霸天36 分钟前
🚨 还在用 rem) 做大屏适配?用 vfit.js 一键搞定,告别改稿8版的噩梦!
前端·vue.js·数据可视化
文心快码BaiduComate1 小时前
Comate AI IDE三大能力升级:支持语音输入& AI可操作浏览器 & Figma设计与代码双向转换
前端·后端·程序员
coder_Eight1 小时前
LRU 缓存实现详解:双向链表 + 哈希表
前端·算法
1024小神1 小时前
kotlin安卓项目配置app横屏等方式
前端
Cxiaomu1 小时前
React + Node.js 实战:用豆包端到端实时语音大模型 API 落地web纯语音助手
前端·react.js·node.js