Animate.css+wow.js实现页面滚动到可视区显示动画效果

今天看迅雷官网 https://www.xunlei.com/v2018/dist/aboutus.html
实现的滚动到可视区域后显示动画,自己之前没做过这种,非常感兴趣,然后问小伙伴,
大部分都没做过类似的,于是乎我只能自己查了
在这里插入图片描述
第一想到的是swiper,之前写轮播图用过。
https://www.swiper.com.cn/
https://www.swiper.com.cn/usage/animate/index.html
但是引入了之后 发现不是特别适合我 而且还有5版本6版本一系列写法兼容问题,遂放弃。

再经历一番查阅后,发现Animate.css适合,结合wow.js就能实现,WOW.js 依赖 animate.css,它支持 animate.css 多达 60 多种的动画效果
先看animate.css这个插件,animate展示链接,点击跳转,https://animate.style/在这里插入图片描述

这个是它中文的官网:http://www.animate.net.cn/

不废话 上代码 在vue项目使用:

第一步先安装animate.css

- link引入方式,用的cdn
 <link href="https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css" rel="stylesheet">

-第二种npm:

npm install animate.css ;
//在main.js引入
import animated from 'animate.css'
Vue.use(animated)

注意!!!!!!!!!!!!!!!!
vue版本兼容性问题导致会动画不起作用!默认会安装4版本的

处理办法,安装对应低版本的动画插件:

npm install [email protected] --save

第二部引入wowjs:

我是在组件中引入的WOW,当然你也可以在全局,全局引入记得挂载到vue原型上即可

import {
    
     WOW } from "wowjs";
  mounted() {
    
    
    //第一种写法,可以设置wow中属性
    this.$nextTick(() => {
    
    
      // 在dom渲染完后,再执行动画
      var wow = new WOW({
    
    
        boxClass: "wow", ///动画元件css类(默认为wow)
        animateClass: "animated", //动画css类(默认为animated)
        offset: 0, //到元素距离触发动画(当默认为0)
        mobile: true, //在移动设备上触发动画(默认为true)
        live: true, //对异步加载的内容进行操作(默认为true)
      });
      wow.init();
    });
    //第二种写法,默认属性
    // this.$nextTick(() => {
    
     // 在dom渲染完后,再执行动画
    // new WOW().init();
    //})
  },

最后一步就是在html中加上class名称使用啦!!!

 <div class="wow bounceIn">
     animation属性
 </div>
 <div class="wow fadeInUp">欢迎查看百事可口的博客</div>

附上animated的各个动画class属性

fade: {
    
    
        title: '淡入淡出',
        fadeIn: '淡入',
        fadeInDown: '向下淡入',
        fadeInDownBig: '向下快速淡入',
        fadeInLeft: '向右淡入',
        fadeInLeftBig: '向右快速淡入',
        fadeInRight: '向左淡入',
        fadeInRightBig: '向左快速淡入',
        fadeInUp: '向上淡入',
        fadeInUpBig: '向上快速淡入',
        fadeOut: '淡出',
        fadeOutDown: '向下淡出',
        fadeOutDownBig: '向下快速淡出',
        fadeOutLeft: '向左淡出',
        fadeOutLeftBig: '向左快速淡出',
        adeOutRight: '向右淡出',
        fadeOutRightBig: '向右快速淡出',
        fadeOutUp: '向上淡出',
        fadeOutUpBig: '向上快速淡出'
      },
      bounce: {
    
    
        title: '弹跳类',
        bounceIn: '弹跳进入',
        bounceInDown: '向下弹跳进入',
        bounceInLeft: '向右弹跳进入',
        bounceInRight: '向左弹跳进入',
        bounceInUp: '向上弹跳进入',
        bounceOut: '弹跳退出',
        bounceOutDown: '向下弹跳退出',
        bounceOutLeft: '向左弹跳退出',
        bounceOutRight: '向右弹跳退出',
        bounceOutUp: '向上弹跳退出'
      },
      zoom: {
    
    
        title: '缩放类',
        zoomIn: '放大进入',
        zoomInDown: '向下放大进入',
        zoomInLeft: '向右放大进入',
        zoomInRight: '向左放大进入',
        zoomInUp: '向上放大进入',
        zoomOut: '缩小退出',
        zoomOutDown: '向下缩小退出',
        zoomOutLeft: '向左缩小退出',
        zoomOutRight: '向右缩小退出',
        zoomOutUp: '向上缩小退出'
      },
      rotate: {
    
    
        title: '旋转类',
        rotateIn: '顺时针旋转进入',
        rotateInDownLeft: '从左往下旋入',
        rotateInDownRight: '从右往下旋入',
        rotateInUpLeft: '从左往上旋入',
        rotateInUpRight: '从右往上旋入',
        rotateOut: '顺时针旋转退出',
        rotateOutDownLeft: '向左下旋出',
        rotateOutDownRight: '向右下旋出',
        rotateOutUpLeft: '向左上旋出',
        rotateOutUpRight: '向右上旋出'
      },
      flip: {
    
    
        title: '翻转类',
        flipInX: '水平翻转进入',
        flipInY: '垂直翻转进入',
        flipOutX: '水平翻转退出',
        flipOutY: '垂直翻转退出'
      },
      strong: {
    
    
        title: '强调类',
        bounce: '弹跳',
        flash: '闪烁',
        pulse: '脉冲',
        rubberBand: '橡皮筋',
        shake: '左右弱晃动',
        swing: '上下摆动',
        tada: '缩放摆动',
        wobble: '左右强晃动',
        jello: '拉伸抖动'
}

over!

猜你喜欢

转载自blog.csdn.net/qq_38594056/article/details/121081566