根据滚动事件进行页面动画

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>body {padding-top: 200px;height: 1000px;}.item {position: relative;left: -50px;top: -50px;width: 100px;height: 100px;display: inline-block;}.item1 {margin-left: 150px;background-color: red;}.item2 {background-color: blue;}.item3 {margin-left: 130px;background-color: aqua;}</style>
</head><body><div id="anim"><div class="item item1" data-end-x=-130 data-end-y=0 data-scale=2 data-ratio=0></div><div class="item item2" data-end-x=130 data-end-y=0></div><div class="item item2" data-end-x="-110" data-end-y="130"></div> <div class="item item3" data-end-x="-120" data-end-y="-110"></div> </div><script>// 父类var anim = document.getElementById('anim')console.log(anim)// 子类var animChild = anim.children// 所有需要动的元素var actList = []// 获取数据for (var i = 0, l = animChild.length; i < l; i++) {var _item = animChild[i]if (_item.dataset) {var _data = _item.dataset_data.scale = _data.scale || 1_data.ratio = _data.ratio || 0actList.push({el: _item,move: _data})}}console.log(actList)// 滚动事件window.onscroll = function () {// 滚动条数据var scrollY = window.scrollY// 遍历需要运动的元素for (var i = 0, l = actList.length; i < l; i++) {// 当前第几个var _item = actList[i]//运动参数var _actMove = { x: 0, y: 0, scale: 1 }//缩放大小var _scale = parseFloat(_item.move.scale)//倍率var _ratio = parseFloat(_item.move.ratio)//X轴var _endX = parseFloat(_item.move.endX)//Y轴var _endY = parseFloat(_item.move.endY)if (_endX < 0) {_actMove.x = 0 - scrollY > _endX ? 0 - scrollY : _endX} else {_actMove.x = scrollY < _endX ? scrollY : _endX}if (_endY < 0) {_actMove.y = 0 - scrollY > _endY ? 0 - scrollY : _endY} else {_actMove.y = scrollY < _endY ? scrollY : _endY}// 如果倍率存在if (_ratio) {if (_scale < 1) {_actMove.scale = 1 - (scrollY * _ratio) < 0 ? 0 : 1 - (scrollY * _ratio)} else if (_scale > 1) {_actMove.scale = 1 + (scrollY * _ratio) > _scale ? _scale : 1 + (scrollY * _ratio)}}// 修改样式_item.el.style.transform = 'translate(' + _actMove.x + 'px,' + _actMove.y + 'px)  scale(' + _actMove.scale + ')'}}</script>
</body></html>

效果

根据滚动事件进行页面动画相关推荐

  1. dom事件对象、解绑事件、事件委托、页面加载、滚动事件、页面尺寸事件

    1.e.type获取事件类型,例如click input focus <input type="text"> <script>let input=docum ...

  2. web前端学习笔记26-事件类型——一般事件、页面事件、表单事件

    一.事件类型的分类 事件分为一般事件.页面事件和表单事件 二.一般事件 关键字 释义 关键字 释义 click 单击事件 dblclick 双击事件 mousemove 鼠标移动事件 mouseove ...

  3. JavaScript基础——滚动事件、加载事件、三大家族

    文章目录 一.滚动事件和加载事件 1.1 滚动事件 1.2 加载事件 二.三大家族 2.1 scroll家族 2.2 offset家族 2.3 client家族 一.滚动事件和加载事件 1.1 滚动事 ...

  4. vue 监听页面滚动事件:触发animate.min.css动画特效

    一.问题答疑: 1. animate.css 如何在vue项目中引入?或引用? 2. 如何监听滚动事件,触发animate.class动画播放? vue 监听滚轮滚动事件,for循环 ,动态id,代码 ...

  5. 综合设计一个OPPE主页--页面的插件引用(animate.css)--d动画的使用--滚轮或鼠标到该位置时,才有动画的切换---所以我们需要用jquery监听鼠标滚轮的滚动事件

    Animate.css | A cross-browser library of CSS animations. 里面有许多css的效果 首先使用 animate.css文件 link rel=&qu ...

  6. vue 组件封装 | s-fullpage 全屏滚动 (内含绑定鼠标滑轮滚动事件、避免鼠标滑轮连续滚动、滑动过渡动画等实用技巧)

    目录 目标 实现原理(要点) 完整代码 s-fullpage 和 s-fullpageItem s-fullpage.vue s-fullpageItem.vue 使用范例 范例效果 目标 实现类似插 ...

  7. waypoint+animate元素滚动监听触发插件实现页面动画效果

    最近在做一个官网类型滚动加载动画,使用到waypoint监听事件插件和animate动画样式,两者结合完美实现向下滚动加载动画,但是没有做向上滚动撤消动画,留待以后有空研究 首先来介绍下jquery. ...

  8. 页面滚动事件和利用JS实现回到顶部效果

    页面滚动 事件:window.onscroll, 获得页面滚动位置:document.body.scrollTop: HTML代码: 这里注意此处逻辑,大于500就显示,否则就隐藏,还有注意如果变量名 ...

  9. 监听页面滚动触发事件,页面停止滚动触发事件

    监听页面滚动触发事件,页面停止滚动触发事件 核心代码 data() {return {timer: null,isTipVisible: true} } methods: {handleScrollS ...

最新文章

  1. 一个TensorFlow的新模型,Kaparthy小哥用了都说好
  2. docker 外部连接_使用外部网络连接Docker容器
  3. auto.js停止所有线程_Java多线程编程基础知识 概念介绍,以及线程状态
  4. 【Codeforces 1096D】Easy Problem
  5. mysql索引类型 normal, unique, full text
  6. 解决浏览器跨域加载本地文件报错 Access to script at ‘xxx‘ from origin ‘null‘ has been blocked by CORS policy
  7. 英特尔 开源降噪库 api_Google的新操作系统,英特尔的开源VR耳机以及更多新闻
  8. 华为下调2020年印度市场收入目标,或裁员60%至70%
  9. vue点击改变data_vue 中自定义指令改变data中的值
  10. 一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生
  11. 微博黄v怎么认证?怎么满足条件详解 身份认证|兴趣认证|视频认证
  12. makefile编写模板
  13. IC芯片卡读写类(泛型模式)
  14. 微信小程序高德地图获取当前定位
  15. CentOS升级pcre
  16. addon@Node.js之新手上路
  17. 浅析故障电弧探测器在电气防火中的作用与应用介绍
  18. 获取浏览器中鼠标选中的文本内容
  19. 2021这一年 | 用数字技术实现普惠金融
  20. 环境混合物总体效应:加权分位数和回归(WQS)

热门文章

  1. KMP算法:最长字符串匹配算法
  2. 用MaskFilter画抽奖大转盘Demo
  3. 电脑有什么超简单的录屏方法
  4. JS获取当前日期并格式化
  5. Error: Error while compiling statement: FAILED: SemanticException Schema of both sides of union shou
  6. 【mysql 提高查询效率】​Mysql 数据库查询好慢问题解决
  7. 浮点数在内存中的存储规则
  8. 漫话:手机很早就有飞行模式了,为什么最近几年坐飞机才不用关机?
  9. android嵌入式开发教程
  10. 远程控制华为服务器,远程虚拟控制台 - 华为服务器 iMana 200 用户指南 25 - 华为...