使用CSS动画实现图片无限循环滚动(跑马灯)效果


使用css动画实现图片无限循环滚动(跑马灯)效果

本教程将指导您如何利用纯CSS动画,替代已废弃的MARQUEE标签,实现一个透明图片在视口内无限循环滚动的效果。通过设置元素的初始位置和关键帧动画的transform属性,可以轻松创建流畅且高性能的跑马灯动画,无需J*aScript,确保了代码的现代化与兼容性。

告别MARQUEE:现代Web的动画解决方案

在Web开发的早期,MARQUEE标签曾被用来实现文本或图片在页面上的滚动效果。尽管其使用简单直接,但由于其非标准性、性能问题以及对可访问性的负面影响,该标签早已被W3C废弃,不建议在现代Web项目中使用。然而,许多开发者仍希望实现类似的无限循环滚动效果,例如一个透明图片在视口内平稳地从一侧移动到另一侧。

现代Web标准提供了更强大、更灵活且性能更优的解决方案——CSS动画。通过利用CSS的@keyframes规则和transform属性,我们可以精确控制元素的动画行为,实现与MARQUEE标签类似甚至更复杂的滚动效果,同时保持代码的健壮性和可维护性。

核心原理:CSS动画与定位

实现图片无限循环滚动的关键在于以下几点:

  1. 元素定位: 将滚动元素固定在视口的某个位置,确保它不会随着页面滚动而移动。
  2. 初始位置: 将元素放置在视口外,作为动画的起点。
  3. 动画路径: 定义元素从起点移动到终点的路径。
  4. 无限循环: 设置动画无限重复播放。

我们将使用position: fixed来固定元素位置,并通过transform: translateX()来控制元素的水平移动。translateX()接受两种主要单位:

  • vw (viewport width):表示视口宽度的百分比。例如,100vw意味着元素将移动相当于视口宽度的距离。
  • % (百分比):表示元素自身宽度的百分比。例如,-100%意味着元素将向左移动相当于自身宽度的距离。

在我们的场景中,为了让图片从视口右侧完全移出,我们将动画的起始点设置为translateX(100vw)(即元素位于视口右侧之外),终点设置为translateX(-100%)(即元素完全移出视口左侧)。

实现步骤与示例代码

下面将通过一个具体的例子来展示如何使用CSS实现一个图片(这里用一个蓝色方块模拟)在视口内无限循环滚动的效果。

LALAL.AI LALAL.AI

AI人声去除器和声乐提取工具

LALAL.AI 196 查看详情 LALAL.AI

HTML结构

首先,我们需要一个简单的HTML元素来承载我们的“图片”。为了简化示例,我们使用一个div元素并为其设置背景色,但在实际应用中,您可以替换为使用CSS动画实现图片无限循环滚动(跑马灯)效果标签或带有背景图片的div。

<div class="ship"></div>

CSS样式

接下来是核心的CSS代码,它定义了元素的外观、定位以及动画行为。

.ship {
  /* 元素尺寸与背景 */
  width: 30px;
  height: 20px;
  background: blue; /* 模拟图片,实际可替换为 background-image */
  /* background: url('your-transparent-image.png') no-repeat center center / contain; */

  /* 固定定位 */
  position: fixed;
  top: 0; /* 距离视口顶部,可根据需要调整 */
  left: 0; /* 动画起点,将通过 transform 移动 */

  /* 动画属性 */
  animation: move 10s linear infinite forwards;
}

/* 定义动画关键帧 */
@keyframes move {
  0% {
    /* 初始位置:位于视口右侧之外 */
    transform: translateX(100vw);
  }
  100% {
    /* 结束位置:完全移出视口左侧 */
    transform: translateX(-100%);
  }
}

代码解析

  • .ship 样式:

    • width, height, background: 定义了元素的尺寸和背景。如果您要使用透明图片,可以将background: blue;替换为background: url('your-transparent-image.png') no-repeat center center / contain;。
    • position: fixed; top: 0; left: 0;: 将元素固定在视口的左上角。top和left的值可以根据您希望图片出现的位置进行调整。
    • animation: move 10s linear infinite forwards;: 这是动画的核心属性。
      • move: 引用了下面定义的@keyframes规则的名称。
      • 10s: 动画完成一个循环所需的时间,即图片从右侧移到左侧所需的时间。
      • linear: 动画的速度曲线,表示动画以恒定速度进行。
      • infinite: 动画将无限次重复播放。
      • forwards: 动画结束后,元素将保持其最终状态(在这种无限循环的情况下,它确保了动画在每次循环结束时无缝衔接)。
  • @keyframes move 规则:

    • 0%: 定义动画开始时的状态。transform: translateX(100vw);将元素从其left: 0;的基准位置向右移动了100个视口宽度,使其完全位于视口右侧之外,从而实现从屏幕外进入的效果。
    • 100%: 定义动画结束时的状态。transform: translateX(-100%);将元素从其left: 0;的基准位置向左移动了100%的自身宽度,使其完全移出视口左侧,实现从屏幕外消失的效果。

通过这种设置,当动画循环时,元素会从右侧视口外进入,平稳地穿过视口,然后从左侧视口外消失,并立即从右侧重新开始下一个循环,形成一个无缝的无限滚动效果。

优化与注意事项

  1. 图片替换: 在实际应用中,请将示例中的蓝色方块替换为您的透明PNG图片。确保图片路径正确,并根据需要调整background-size来控制图片大小。
  2. 速度调整: 更改animation属性中的时间值(例如10s)可以调整滚动速度。值越小,速度越快。
  3. 方向调整:
    • 从左到右: 将@keyframes中的0%设置为transform: translateX(-100%);,100%设置为transform: translateX(100vw);。
    • 垂直滚动: 使用translateY()代替translateX(),并调整top和height属性。
  4. 多图滚动: 如果需要多张图片同时滚动,可以为每个图片创建独立的动画,或者将所有图片放入一个父容器中,然后让父容器滚动。
  5. 性能: CSS transform属性的动画通常由GPU加速,性能优于直接改变left或margin等属性,因此这种方法是实现流畅动画的推荐方式。
  6. 响应式设计: vw单位本身就是响应式的,会根据视口宽度自动调整。但如果图片尺寸是固定像素值,在不同屏幕尺寸下可能需要媒体查询进行调整。

总结

通过本教程,我们学习了如何利用现代CSS的@keyframes动画和transform属性,优雅地实现一个图片在视口内无限循环滚动的效果,完美替代了已废弃的MARQUEE标签。这种方法不仅代码简洁、性能优越,而且兼容性良好,是当前Web开发中实现动态背景或装饰性动画的专业选择。掌握CSS动画是前端开发者的必备技能,它为网页带来了无限的创意可能。

以上就是使用CSS动画实现图片无限循环滚动(跑马灯)效果的详细内容,更多请关注其它相关文章!


# 口内  # 济宁抖音营销推广招聘  # 服装品牌营销推广讨论  # 华强北5个网站建设  # 安徽营销型网站建设推广  # qq营销推广功能  # 潍坊网站建设重点  # 昭通抖音seo排名招商  # 关键词排名互去上海百首  # 黑帽seo淘宝  # 网络营销推广话术与技巧  # 您的  # 这是  # 结束时  # 使其  # 所需  # css  # 移出  # 跑马灯  # 设置为  # 口外  # html元素  # css样式  # css动画  # 响应式设计  # ai  # 前端开发  # 前端  # html  # java  # javascript 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  苹果手机如何清理系统缓存数据 iPhone非越狱清理垃圾文件的技巧【系统优化】  小红书网页版在线直达 小红书网页版免费登录入口  AI图层蒙版怎么用_AI图层蒙版应用技巧与设计实例  六级准考证号怎么查_四六级准考证查询入口官网  Python中深度嵌套字典与列表的数据提取与条件过滤指南  电脑“无法访问指定设备、路径或文件”怎么办?五种权限设置方法  J*aScript事件处理:优化键盘输入与表单提交的实践指南  手机雨课堂网页版入口免登录 雨课堂网页版可点击直接进入  Dagster资产间数据传递与用户配置管理教程  《洛克王国:世界》国家队搭配攻略  TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法  抖音作品被限流怎么办 抖音内容优化与流量恢复方法  向往的生活小游戏启动处_向往的生活小游戏立即启动  支付宝登录刷脸不是本人如何解决  PHP中动态类名访问的类实例类型提示与静态分析实践  解决C#跨线程访问XML对象的异常 安全的并发XML处理模式  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  悟空浏览器网页版链接 悟空浏览器网页版最新有效地址  BunnyStream TUS视频上传指南:解决401认证错误与参数配置  PHP页面重载时变量值不重置的实现方法  小红书网页版怎么进 小红书网页版通用入口  sublime text 4如何安装_最新版sublime下载与汉化教程  192.168.1.1路由器后台入口 192.168.1.1默认登录入口  免费占卜在线神算_免费占卜手机神算  百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法  RxJS中如何高效地在一个函数内处理和合并多个数据集合  123平台官方登录入口 123邮箱网页端在线沟通工具  win11关机几秒又自己开机 Win11关机自动重启问题修复  PHP页面重载后变量状态保持:实现用户档案连续浏览的教程  《兴业银行》注册登录方法  教资成绩怎么查询  告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名  《腾讯相册管家》注销账号方法  《知到》打卡课程方法  苹果电脑如何快速查看电池状态 苹果电脑电池信息快捷方法  VS Code如何设置默认配置  《杖剑传说》食谱大全  德邦快递会员怎么开通  酷狗音乐多音轨设置教程  CSS如何控制元素外边距_margin实现布局间隔  CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条  163邮箱网页版入口 163邮箱在线使用  12306不能订票的时间段是固定的吗? | 节假日购票时间有无变化  J*aScript:从子元素中批量移除特定CSS类  msn官方入口2025登录 msn官网2025直达首页入口  《淘宝联盟》推广自己的店铺方法  《七读免费小说》开通会员方法  蜻蜓FM如何设置移动流量播放  如何在CSS中设置背景图像:一个全面指南 

 2025-11-07

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.