vue使用scrollreveal和animejs实现页面滑动到指定位置后再开始执行动画效果

news/2024/7/7 20:42:43 标签: vue.js, 前端, javascript

效果图 

 效果链接:http://website.livequeen.top

介绍 

一、Scrollreveal

ScrollReveal 是一个 JavaScript 库,用于在元素进入/离开视口时轻松实现动画效果。

ScrollReveal 官网链接:ScrollReveal

二、animejs

animejs是一个好用的动画库。

animejs官网链接:

实现

一、引入依赖

1、npm安装

javascript">npm install scrollreveal
npm install animejs

 2、代码中引用

javascript">import anime from 'animejs';
import ScrollReveal from 'scrollreveal';

二、代码示例

 这里以2个示例来展示代码:

1、单纯使用scrollreveal来展示只有页面滑动到指定class类的时候才会展示切入的动画;

2、scrollreveal配合animejs实现数字动画(从0开始变化到数据原本的数字);

<!-- 单纯使用scrollreveal来展示只有页面滑动到指定class类的时候才会展示切入的动画 -->
<div class="item1">
    <div></div>
    <div></div>
    <div></div>
</div>
<div class="item2">
    <div></div>
    <div></div>
    <div></div>
</div>


<!-- scrollreveal配合animejs实现数字动画(从0开始变化到数据原本的数字) -->
<div class="items">
    <div class="item">
        <p class="num">1234</p>
    </div>
    <div class="item">
        <p class="num">2345</p>
    </div>
    <div class="item">
        <p class="num">6356</p>
    </div>
</div>

 js代码如下(配置及功能实现):

javascript"><script>
import anime from 'animejs';
import ScrollReveal from 'scrollreveal';

export default {
  data() {
    return {
      // ScrollReveal()公用配置
      staggeringOption: {
        delay: 300,
        distance: '50px',
        duration: 500,
        easing: 'ease-in-out',
        origin: 'bottom'
      }
    };
  },
  mounted () {
    this.init()
  },
  methods: {

    /**
     * 初始化
     */
    init () {
      this.initScrollReveal();
    },

    /**
     * 初始化initScrollReveal
     */
    initScrollReveal () {
      
      // {...this.staggeringOption, interval: 350} => 代表第一个元素的全部属性+第二个元素的属性
      // 普通切入动画
      ScrollReveal().reveal('.item1', {...this.staggeringOption, interval: 350});
      ScrollReveal().reveal('.item2', {...this.staggeringOption, interval: 350});

      // 嵌套animejs的数字动画(从0开始变化到数据原本的数字)
      ScrollReveal().reveal('.items', {
        beforeReveal: () => {
          // anime动画-数字从0开始到目标
          anime({
            targets: '.item .num',
            innerHTML: el => {
              return [0, el.innerHTML];
            },
            duration: 2000,
            round: 1,
            easing: 'easeInExpo'
          })
        }
      });
    },

  }
};
</script>


http://www.niftyadmin.cn/n/5535325.html

相关文章

大数据------JavaWeb------MyBatis(完整知识点汇总)

MyBatis MyBatis简介 定义 它是一款优秀的持久层框架&#xff0c;用于简化JDBC开发它原来是Apache的一个开源项目iBatis&#xff0c;后来改名为MyBatis中文官网&#xff1a;https://mybatis.org/mybatis-3/zh_CN/index.html JaveEE三层架构 表现层&#xff08;做页面展示&…

什么是代理IP?代理IP有什么好处呢?

在互联网的世界里&#xff0c;每台设备都有一个独特的身份标识&#xff0c;即IP地址。这个IP地址不仅仅是一串数字&#xff0c;它代表着设备在网络中的位置&#xff0c;同时也可能暴露用户的地理位置和其他个人信息。为了保护用户的隐私&#xff0c;提高网络安全&#xff0c;或…

基于Transformer的端到端的目标检测 | 读论文

本文正在参加 人工智能创作者扶持计划 提及到计算机视觉的目标检测&#xff0c;我们一般会最先想到卷积神经网络&#xff08;CNN&#xff09;&#xff0c;因为这算是目标检测领域的开山之作了&#xff0c;在很长的一段时间里人们都折服于卷积神经网络在图像处理领域的优势&…

7-494 结构体数组实现工资数据的存放与输出(结构体)

用结构体存放下表中的数据&#xff0c;然后输出每人的姓名和实发工资&#xff08;基本工资浮动工资-支出&#xff09; 输入格式: 在每一行输入姓名&#xff0c;基本工资&#xff0c;浮动工资及支出 输出格式: 每一行输出姓名及实发工资 输入样例: 在这里给出一组输入。例…

C语言力扣刷题11——打家劫舍1——[线性动态规划]

力扣刷题11——打家劫舍1和2——[线性动态规划] 一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划 2、思路说明 四、解题代码&#xff08;附注释&#xff09; 一、博客声明 找工作逃不过刷题&#xff0c;为了更好的督促自己学习以及理解力扣大佬们的解…

MySQL高级-SQL优化-insert优化-批量插入-手动提交事务-主键顺序插入

文章目录 1、批量插入1.1、大批量插入数据1.2、启动Linux中的mysql服务1.3、客户端连接到mysql数据库&#xff0c;加上参数 --local-infile1.4、查询当前会话中 local_infile 系统变量的值。1.5、开启从本地文件加载数据到服务器的功能1.6、创建表 tb_user 结构1.7、上传文件到…

一篇文章说清楚Filter(过滤器)、Interceptor(拦截器)和AOP(切面儿)

文章目录 前言一、Filter&#xff08;过滤器&#xff09;1.说明2.实现filterChain.doFilter() 3.order优先级4.解决跨域5.拦截返回错误信息JSON 二、Interceptor&#xff08;拦截器&#xff09;1.说明2.实现preHandlepostHandleafterCompletion 3.执行顺序图4.排除特定路径拦截…

第5篇 区块链的技术架构:节点、网络和数据结构

区块链技术听起来很高大上&#xff0c;但其实它的核心架构并不难理解。今天我们就用一些简单的例子和有趣的比喻&#xff0c;来聊聊区块链的技术架构&#xff1a;节点、网络和数据结构。 节点&#xff1a;区块链的“细胞” 想象一下&#xff0c;区块链就像是一个大型的组织&a…