You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于fullpage.js实现滚动到指定区域触发Lottie动画求助

嘿,作为JS新手能把fullpage.js和Lottie动画结合起来已经超棒啦!要实现「滚动到对应区块才触发动画」的效果,核心就是利用fullpage的滚动回调事件来控制Lottie的播放时机。我给你整理了完整的实现方案,一步步来,很容易上手:

实现滚动触发Lottie动画的完整方案

1. 先搭好基础结构与依赖

首先确保你的HTML里引入了所需依赖,并且给带动画的section加上Lottie容器:

<!-- 引入依赖文件(替换成你自己的文件路径) -->
<link rel="stylesheet" href="fullpage.min.css">
<script src="jquery.min.js"></script>
<script src="fullpage.min.js"></script>
<script src="lottie.min.js"></script>

<!-- fullpage页面结构 -->
<div id="fullpage">
  <div class="section" data-anchor="startseite">首页</div>
  <!-- 带Lottie动画的区块 -->
  <div class="section" data-anchor="pers_vermittler">
    <div id="lottie-vermittler" class="lottie-box"></div>
  </div>
  <div class="section" data-anchor="team">团队</div>
  <!-- 其他section按你的需求继续添加 -->
</div>

2. 初始化Lottie动画(默认暂停)

先把要触发的Lottie动画初始化好,关键要设置autoplay: false,这样页面加载时动画不会自动播放,等滚动到对应区块再触发:

// 用对象存储Lottie实例,方便后续统一管理
const lottieAnims = {};

// 初始化第一个动画
lottieAnims.vermittler = lottie.loadAnimation({
  container: document.getElementById('lottie-vermittler'),
  renderer: 'svg', // 可选svg/canvas/html,svg兼容性最好
  loop: false,     // 若需要循环播放设为true,这里滚动一次播放一次设为false
  autoplay: false, // 核心:默认不自动播放
  path: 'your-animation-file.json' // 替换成你的Lottie动画JSON文件路径
});

// 如果有多个动画,同理初始化:
// lottieAnims.team = lottie.loadAnimation({...});

3. 配置fullpage.js的回调触发动画

利用fullpage的afterLoad回调——这个函数会在滚动到某个section并加载完成后自动触发,我们可以通过锚点或序号判断当前区块,然后播放对应的动画:

$(document).ready(function($) {
  'use strict';

  $('#fullpage').fullpage({
    sectionsColor: ['white', '#004E8A', 'white','#004E8A', 'white', '#004E8A', 'white','#004E8A', 'white'],
    anchors: ['startseite','pers_vermittler','team','konzept','rechner','mod_portfolio','sicherheit','...'], // 补全你的锚点列表
    // 滚动到目标section后的回调
    afterLoad: function(anchorLink, index) {
      // 通过锚点判断当前区块,触发对应动画
      switch(anchorLink) {
        case 'pers_vermittler':
          // 从第0帧开始播放,第二个true表示强制重置动画(避免重复滚动时动画已经播完)
          lottieAnims.vermittler.goToAndPlay(0, true);
          break;
        case 'team':
          // 如果team区块有动画,同理触发
          // lottieAnims.team.goToAndPlay(0, true);
          break;
        // 其他需要触发动画的区块继续添加case
      }
    },
    // 可选:如果滚动离开区块时需要重置动画,用onLeave回调
    onLeave: function(index, nextIndex, direction) {
      // 比如离开pers_vermittler区块时重置动画(index从1开始计数)
      if(index === 2) {
        lottieAnims.vermittler.goToAndStop(0, true);
      }
    }
  });
});

新手友好的关键知识点

  • lottie.loadAnimation()返回的实例可以用来控制播放、暂停、重置,用对象存储能避免全局变量混乱;
  • goToAndPlay(0, true):确保每次滚动到区块时,动画都从开头重新播放;
  • fullpage的afterLoad参数里,anchorLink是当前区块的锚点(和你设置的anchors数组对应),用锚点判断比序号更直观,不容易出错;
  • 如果动画没触发,先检查控制台有没有报错,确认Lottie的JSON路径、fullpage的锚点是否和HTML里的data-anchor一致。

内容的提问来源于stack exchange,提问作者Enrico Bühler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:12:48