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,原生添加类名的方式!
vue实现滚动条滚到相应高度触发动画的操作的更多相关文章
- 利用jquery制作滚动到指定位置触发动画
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>利用 ...
- 写一个vue的滚动条插件
组件源码如下: vue-scroll.vue <template> <div class="vue-scroll" ref="vueScrollW&qu ...
- CSS 奇技淫巧:动态高度过渡动画
这个问题源自于掘金上的一个留言,一个朋友问到,为什么我下面这段代码的高度过渡动画失效了? 伪代码大概是这样: { height: unset; transition: all 0.3s linear; ...
- JavaScript学习笔记-元素在滚动条滑动一定高度后自动置顶
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 移动端:active,:hover无法很好触发动画的解决方案
移动端:active,:hover无法很好触发动画的解决方案 1:问题环境: 用css3定义了一个动画,使用:hover伪类调用动画时在移动端不能很好的进行动画. 2:解决方案: 定义一个open类, ...
- Vue 动态修改data 值 并触发视图更新
Vue 动态修改data 值 并触发视图更新 this.$set(obj, key, '') // Vue 动态修改或者添加data key 并触发视图更新
- ViewCompat.animate(view) 动画的操作
ViewCompat.animate(view) 实现动画的操作,动画兼容包; ViewCompat.animate(view) 实现动画的操作 .setDuration(200) .scaleX(0 ...
- Vue 组件内滚动条 滚到到底部
因为在vue中,某个组件内 使用scrollTop赋值 滚动条没有变化 使用scrollTo 也不行(window.scorllTo 或者dom.scrollTo) 所以可以考虑使用投机取巧的办法: ...
- vue之Better-Scroll组件 将滚动条滚到最底部
首先我们需要使用scrollTo这个方法: scrollTo(x, y, time, easing) 参数: {Number} x 横轴坐标(单位 px) {Number} y 纵轴坐标(单位 px) ...
随机推荐
- 《Python编程:从入门到实践》第三章 列表简介 习题答案
#3.1 names=['lpr','tjl','gnl','by','dqy']; print(names[0]); print(names[1]); print(names[2]); print( ...
- python函数式编程-偏向函数
Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲到,通过 ...
- [MVC] 自定义ActionSelector,根据参数选择Action[转载]
很多时候我们会根据UI传入的参数,呈现不同的View.也就是对于同一个Action如何根据请求数据返回不同的View.通常情况下我们会按照如下方法来写,例如: [AcceptVerbs(HttpVer ...
- 《AlwaysRun团队》第三次作业:团队项目的原型设计
<AlwaysRun团队>第三次作业:团队项目的原型设计 项目 内容 这个作业属于哪个课程 [任课教师博客主页链接](https://home.cnblogs.com/u/nwnu-dai ...
- 云计算(3)-what is new in today's Cloud
What is new in today's Cloud Four features new in today's Clouds 如果一个problem有以上4个features里面的一个或者多个,则 ...
- java继承(implements与extends)总结
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_39938767/article/details/80056922 关键字impl ...
- tcp文件下载
服务器端 import socket def send_file_2_client(new_client_socket,client_addr): # 接收信息 file_name = new_cli ...
- CSP模拟赛 Repulsed(树形DP)
题面 ⼩ w ⼼⾥的⽕焰就要被熄灭了. 简便起⻅,假设⼩ w 的内⼼是⼀棵 n − 1 条边,n 个节点的树. 现在你要在每个节点⾥放⼀些个灭⽕器,每个节点可以放任意多个. 接下来每个节点都要被分配给 ...
- BZOJ3331 压力 (圆方树+树上差分)
题意 略 题解 求路径上的割点. 然后就直接圆方树上差分 CODE #include <bits/stdc++.h> using namespace std; inline void rd ...
- vue app.xxx.js 较大问题
线上build之后发现app.XXX.js 文件特别大. 包我都改为cdn了 其他空间就是路由改为懒加载了. { path: '/a/b', name: 'ab', component: () =&g ...