如何实现元素无限向下平滑滑动并循环重置(不反弹)

发布时间 - 2026-02-02 00:00:00    点击率:

通过调整 CSS 动画关键帧,将 `@keyframes` 定义为单向线性位移(0% → 100%),配合 `animation: slide 9s linear infinite`,即可让元素持续向下移动并在触底后无缝回到顶部,避免反弹效果。

要实现图像组无限向下平滑滑动 + 触底自动重置到顶部(而非“弹回”或“折返”),核心在于:动画必须是单向、非对称、且终点与起点形成视觉闭环。你原代码中 0%, 100% { transform: translateY(0); } 和 50% { translateY(500px); } 构成了一个“下→上”的往返路径(即先下后上),这就是反弹的根源。

✅ 正确做法是定义一个纯单向位移动画,让元素从顶部出发,直线移动到底部指定位置,然后立即跳回起点继

续下一循环——由于 animation-timing-function: linear 且无中间反向帧,人眼感知为流畅连续下滑。

以下是优化后的完整方案:

.box-buttons { 
  width: 70%;
  height: 750px;
  background-color: grey;
  float: left;
  margin: 30px 3%;
  border: 1px solid black;
  overflow: hidden; /* 关键:隐藏重置瞬间的“跳变” */
}

.object {
  animation: slide 9s linear infinite;
  position: relative;
  top: 0; /* 推荐用 top 替代 bottom,语义更清晰 */
}

@keyframes slide {
  0% {
    transform: translateY(-100%); /* 起始:完全在容器上方,隐藏 */
  }
  100% {
    transform: translateY(750px); /* 终点:完全滑出容器底部(等于容器高度) */
  }
}

? 为什么这样更健壮?

  • translateY(-100%) 确保动画起始时元素完全不可见(从顶部外进入),避免首帧闪现;
  • translateY(750px)(或 translateY(100vh))使元素彻底滑出视口底部,之后浏览器会立即跳回 -100%,因 overflow: hidden 存在,用户看不到重置过程,形成无缝循环;
  • 移除 50% 停顿点,杜绝任何反向运动可能。

⚠️ 注意事项:

  • 动画时长(如 9s)需根据内容高度与容器尺寸微调,确保滑动节奏自然;
  • 若 .object 内容高度 > 容器高度,建议添加 white-space: nowrap 和 display: inline-block 防止换行干扰位移;
  • 在移动端需添加 -webkit-animation 前缀以兼容旧版 Safari;
  • 如需更精细控制(如多行错落滚动),可改用 @property + scroll-driven animations 或 JavaScript 驱动,但本例纯 CSS 已足够高效。

总结:消除反弹 = 摒弃对称关键帧,采用单向位移 + 容器裁剪 + 线性时序。只需修改 @keyframes 为两帧定义,并确保 overflow: hidden,即可获得专业级无限下滑效果。


# css  # javascript  # java  # 浏览器  # safari  # overflow  # 为什么  # webkit  # Object  # 循环  # Property  # function  # display  # transform  # animation  # 滑出  # 触底  # 跳回  # 闭环  # 这就是  # 只需  # 并在  # 下一  # 而非  # 如需 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  如何快速生成橙子建站落地页链接?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何正确下载安装西数主机建站助手?  高防服务器租用如何选择配置与防御等级?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  焦点电影公司作品,电影焦点结局是什么?  linux top下的 minerd 木马清除方法  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Android Socket接口实现即时通讯实例代码  EditPlus 正则表达式 实战(3)  无锡营销型网站制作公司,无锡网选车牌流程?  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  php json中文编码为null的解决办法  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何用景安虚拟主机手机版绑定域名建站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  在线制作视频网站免费,都有哪些好的动漫网站?  java ZXing生成二维码及条码实例分享  海南网站制作公司有哪些,海口网是哪家的?  phpredis提高消息队列的实时性方法(推荐)  魔毅自助建站系统:模板定制与SEO优化一键生成指南  教你用AI润色文章,让你的文字表达更专业  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  简历在线制作网站免费版,如何创建个人简历?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  Android中AutoCompleteTextView自动提示  如何在景安云服务器上绑定域名并配置虚拟主机?  Laravel Docker环境搭建教程_Laravel Sail使用指南  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  jQuery validate插件功能与用法详解  如何解决hover在ie6中的兼容性问题  如何用AI帮你把自己的生活经历写成一个有趣的故事?  C#如何调用原生C++ COM对象详解