vue实现滚动条滚到相应高度触发动画的操作

一、vue项目引入animate.css

第一步:在命令行中执行:

npm install animate.css --save

第二步:引入及使用:

main.js中:

import animated from 'animate.css' // npm install animate.css --save安装,在引入

Vue.use(animated)

第三步:使用 demo

vue模板中:

<div class="ty">
    <!-- 直接使用animated中的动画class名,注意:必须使用animated这个class名,否则动画会无效 -->
    <div class="box animated bounceInDown"></div>
</div>

二、本人写的一个滚动条滚动到相应位置然后执行动画的例子:

思路:这里没有直接添加css类名,而是结合vue指令用显示和隐藏来控制的!附上代码如下:

HTML:

 <!--重点关注代码中的 v-show ,就是添加animated的地方-->

  <section ref="qudao" class="qudao">
      <div class="subtitle">
        <h2>连接230万家庭</h2>
        <p>您的设备接入零壹平台后,可直接上线零壹各大渠道和商城</p>
      </div>
      <div class="content">
        <div class="earth-wrap">
          <div v-show="qudaoShow" ref="earth" class="earth animated bounceInDown delay-1"></div>
          <div v-show="qudaoShow" class="left-con animated fadeInLeft delay-1">
            <h4>海外渠道</h4>
            <p class="dec">零壹正在大力发展海外渠道,产品套装即将登陆亚马逊、Shopee等海外电商平台,同时布设大量线下经销商,远销美国、欧洲、东南亚等地。</p>
          </div>
          <div v-show="qudaoShow" class="right-con animated fadeInRight delay-1">
            <h4>国内渠道</h4>
            <p class="dec">零壹小区物业系统已实际部署超7000个小区,线上商城覆盖超230万个家庭,线下体验店遍布各大城市。超300个城市和行业合伙人负责大型项目落地,统一从零壹渠道采购设备。</p>
          </div>
        </div>
      </div>
    </section>
  <section ref="time" class="time">
      <div class="subtitle">
        <h2>接入,最快6小时完成</h2>
        <p>我们相信,效率就是生命,为您准备了多种上云途径,零壹专家实时进行技术支援</p>
      </div>
      <ul class="flexbox">
        <li v-show="timeShow" class="animated flipInY delay"><img src="@/assets/images/home/time1.png"></li>
        <li v-show="timeShow" class="animated flipInY delay-2"><img src="@/assets/images/home/time2.png"></li>
        <li v-show="timeShow" class="animated flipInY delay-4"><img src="@/assets/images/home/time3.png"></li>
      </ul>
      <p class="timeTxt">按照快速引导 修改MCU固件代码适配即可完成接入</p>
    </section>
...

JS:

export default {
  name: 'home',
  data() {
      close: true,
      qudaoShow: false,
      deviceShow: false,
      sceneShow: false,
      oemShow: false,
      productShow: false,
      timeShow: false,
      dixianShow: false,
      loading: false
    }
  },
 mounted () {
    window.addEventListener('scroll', this.handleScroll)
  },
  methods: {
    handleScroll () { // 实现当滚动到指定位置,触发动画
      // let scrollTop =  window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop // 获取窗口滚动条高度
      // this.gdjz('earth', 'earth animated bounceInDown', 50)
      let _this = this
      let refArray = [
        {ref: 'qudao', show: 'qudaoShow'},
        {ref: 'device', show: 'deviceShow'},
        {ref: 'scene', show: 'sceneShow'},
        {ref: 'oem', show: 'oemShow'},
        {ref: 'product', show: 'productShow'},
        {ref: 'time', show: 'timeShow'},
        {ref: 'dixian', show: 'dixianShow'}
      ]
      refArray.forEach((r,i) => {
        _this.gdjz(r.ref, 20, () => {
          _this[r.show] = true
        })
      })
    },
    gdjz (div, offset, callback) {
      let dom = this.$refs[div] // 等同于document.querySelector('.earth') true
      if(dom){
        var a,b,c,d;
        d = dom.offsetTop // 元素距离相对父级的高度,这里父级指的是body
        a = eval(d + offset)
        b = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop //  获取窗口滚动条高度
        c = document.documentElement.clientHeight || document.body.clientHeight // 获取浏览器可视区的高度
        if( b + c > a ) {
          callback && callback()
        }
      }
    },  ...

备注:也可以使用添加类名的方法,可以参考 html5新增操作类名方式 classList,原生添加类名的方式!
转自https://www.cnblogs.com/mmzuo-798/p/10882408.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容