制作移动端整页滚动动画

news/2024/5/18 15:59:48/文章来源:https://blog.csdn.net/nanchen_J/article/details/128251102

制作移动端整页滚动动画

需要用到

rem7.5.js(rem适配)
pageSlider.js(控制动画的js文件)
基于zepto,引入zepto.js文件
animate.css(动画样式)
base.css(公共样式)
下面看一下页面结构

	<div class="section sec1"style="background-image:url(./images/9.png);background-size: contain;background-color: #D5C1D7 !important;height: 100vh;"></div><div class="section sec2">2</div>......

js部分

	<script>//$(function(){var pageSlider = PageSlider.case();//});//a标签无法触发跳转的问题用以下代码$(".to-form-link>a").on('touchend', function () {location.replace($(this).attr("href"));});</script><script>if (!(/msie [6|7|8|9]/i.test(navigator.userAgent))) {new WOW().init();};</script>

这里需要注意一点,如果你想在翻动页面进行点击的一些操作,那么就需要将pageSlider.js中的阻止默认行为给去掉,否则是无法进行点击事件的。

解决动画同时进行的bug

如果你进行翻页可能会发现你每次翻页的时候所有的页面的动画都会同时进行,那么可以操作pageSlider.js中的callback函数对每个页面单独的动画进行显示以及隐藏
pageSlider.js
请添加图片描述

动画样式的选择可以根据官网进行自定义设置
animate.css

给元素添加动画的方法

首先给需要进行动画效果的标签添加class名,wow的样式必须存在,后面跟你需要执行的动画名称,比如slideInLeft
例:<div class="wow slideInLeft" ></div>

类名前面的wow是每一个带动画的元素都要加的,slideInLeft就是说明动画样式。后面的data-wow-duration(动画持续时间)、data-wow-delay(动画延迟时间)、data-wow-offset(元素的位置露出后距离底部多少像素执行)和data-wow-iteration(动画执行次数)这四个属性可选可不选。
例如:
<span class="wow lightSpeedIn" data-wow-delay="2.3s" data-wow-duration="1s"></span>

这里是pageSlider.js修改后的文件,这个文件实在是不太好找,时间比较长了,这里复制粘贴即可

/** pageSlider - Zepto plugin for mobile single page sliding** Copyright (c) 2015 Frans Lee dmon@foxmail.com** Licensed under the MIT license:*   http://www.opensource.org/licenses/mit-license.php** Version:  1.0**/
;(function($, window, document, undefined) {'use strict';/*** Instantiate parameters** @constructor*/function funwow(){var wow = new WOW({boxClass: 'wow',animateClass: 'animation',offset: 0,  //距可视窗口执行动画的距离mobile: true,live: true,});console.log(wow);wow.init();}function PageSlider(optOrIndex){this.inited = false,this.startY = 0,this.distance = 0,this.timer = null,this.nextPageTop = 0,this.prevPageTop = 0,this.index = 0,this.curPagePos = 0,this.nextPagePos = 0,this.pageHeight = 0,this.prevPagePos = 0;var sec1 = document.querySelector('.sec1')this.opt = {startPage: 1,range: 10,duration: 300,loop: false,elastic: true,translate3d: true,callback:{1:function(){funwow()document.querySelector('.sec1_img4').style.display = 'block';},2:function(){funwow()},}};this.init(optOrIndex);};/*** Set translate/translate3d according to the option** @param {Number|String} offsetY  Vertical Offset* @returns {String}  translate/translate3d*/PageSlider.prototype.motion = function(offsetY){if (this.opt.translate3d) {return 'translate3d(0,' + offsetY + 'px,0)';} else {return 'translate(0,' + offsetY + 'px)';}};/*** Show the specified page** @param {Number} index  The target page number* @param {string} direction  The direction of the sliding,'next' or 'prev'*/PageSlider.prototype.showSec = function(index, direction) {if ($('.current').length) $('.current,.next,.prev').css({'-webkit-transition': null,'-webkit-transform': null}).removeClass('current prev next');var cur, next, prev;var totalSec = $('.section').length;if (direction == 'next') {cur = index == totalSec ? 1 : (index + 1);next = cur == totalSec ? (this.opt.loop ? 1 : 0) : (cur + 1);prev = index;} else if (direction == 'prev') {cur = index == 1 ? totalSec : (index - 1);next = index;prev = cur == 1 ? (this.opt.loop ? totalSec : 0) : (cur - 1);} else {cur = index;next = index == totalSec ? (this.opt.loop ? 1 : 0) : (index + 1);prev = index == 1 ? (this.opt.loop ? totalSec : 0) : (index - 1);}var $curSec = $('.sec' + cur);var $nextSec = $('.sec' + next);var $prevSec = $('.sec' + prev);$curSec.addClass('current');this.pageHeight = $('.current').height();$nextSec.addClass('next').css('-webkit-transform', this.motion(this.pageHeight));$prevSec.addClass('prev').css('-webkit-transform', this.motion(-this.pageHeight));$curSec.addClass('ani').siblings('.section').removeClass('ani');//执行回调typeof(this.opt.callback[cur])=='function' && this.opt.callback[cur]();};/*** Touch start event handler*/PageSlider.prototype.touchStartHandler = function(event) {var that = event.data.that;if(that.timer){return;}that.index = $('.section').index($(this)) + 1;var touch = event.touches[0];that.distance = 0;that.startY = touch.clientY;that.curPagePos = $(this).offset().top;that.nextPagePos = $('.next').length && $('.next').offset().top;that.prevPagePos = $('.prev').length && $('.prev').offset().top;$(this).off('touchmove').on('touchmove', {'that': that}, that.touchMoveHandler);$(this).off('touchend').on('touchend', {'that': that}, that.touchEndHandler);};/*** Touch move event handler*/PageSlider.prototype.touchMoveHandler = function(event) {var that = event.data.that;if(that.timer){return;}var touch = event.touches[0];that.distance = touch.clientY - that.startY;if (Math.abs(that.distance) < 5) {return;};if (!that.opt.elastic && ((that.index === 1 && that.distance > 0) || (that.index === $('.section').length && that.distance < 0))) {return;}that.curPageTop = that.curPagePos + that.distance;that.nextPageTop = that.nextPagePos + that.distance;that.prevPageTop = that.prevPagePos + that.distance;$(this).css('-webkit-transform', that.motion(that.curPageTop));$('.next').css('-webkit-transform', that.motion(that.nextPageTop));$('.prev').css('-webkit-transform', that.motion(that.prevPageTop));};/*** Touch end event handler*/PageSlider.prototype.touchEndHandler = function(event) {var that = event.data.that;if(that.timer){return;}$('.current,.next,.prev').css('-webkit-transition', '-webkit-transform ' + that.opt.duration + 'ms linear');if ((that.distance < -that.opt.range && $('.next').length) || (that.distance > that.opt.range && $('.prev').length)) {var next = !!(that.distance < -that.opt.range);$(this).css('-webkit-transform', that.motion((next ? (-$(this).height()) : $(this).height())));$(next ? '.next' : '.prev').css('-webkit-transform', that.motion(0));that.timer = setTimeout(function() {that.showSec(that.index, next ? 'next' : 'prev');clearTimeout(that.timer);that.timer = null;}, that.opt.duration + 5);} else {$(this).css('-webkit-transform', that.motion(0));$('.prev').css('-webkit-transform', that.motion(-that.pageHeight));$('.next').css('-webkit-transform', that.motion(that.pageHeight));that.timer = setTimeout(function() {$('.current,.next,.prev').css({'-webkit-transition': null});clearTimeout(that.timer);that.timer = null;}, that.opt.duration + 5);}};/*** Sliding to the target page** @param {Number} index  The target page number*/PageSlider.prototype.go = function(index){this.init(index);};/*** PageSlider initializer** @param {Object|Number} optOrIndex  Settings or page number*/PageSlider.prototype.init = function(optOrIndex){var that = this;if (typeof(optOrIndex) == 'object') {$.extend(true, that.opt, optOrIndex);that.inited = false;} else {optOrIndex && (that.opt.startPage = optOrIndex);}if (!that.inited) {$('.section').off('touchstart').on('touchstart', {'that': that}, that.touchStartHandler);that.showSec(that.opt.startPage);that.inited = true;} else {that.showSec(that.opt.startPage)}$(window).on('onorientationchange' in window ? 'orientationchange':'resize',function(){that.go(that.index+1);});};/*** To generate an instance of object** @param {Object|Number} optOrIndex  Settings or page number*/PageSlider.case = function(optOrIndex) {return new PageSlider(optOrIndex);};if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {define(function() {return PageSlider;});} else if (typeof module !== 'undefined' && module.exports) {module.exports = PageSlider.case;module.exports.PageSlider = PageSlider;} else {window.PageSlider = PageSlider;}})(window.Zepto, window, document);```js
ine.amd === 'object' && define.amd) {define(function() {return PageSlider;});} else if (typeof module !== 'undefined' && module.exports) {module.exports = PageSlider.case;module.exports.PageSlider = PageSlider;} else {window.PageSlider = PageSlider;}})(window.Zepto, window, document);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_233439.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET微信快速开发框架源码【源码分享】

ASP.NET微信快速开发框架源码 微信公众平台快速开发框架源码 需要源码学习&#xff0c;查看文末卡片获取&#xff0c;或私信我。 框架主要技术&#xff1a; ASP.NET MVC5、ASP.NET Identity、Bootstrap、KnockoutJs、Entity Framework等。 主要特色&#xff1a; 1、快速迭代开…

​创新不是公司的救命良药

阅读本文大概需要1.06 分钟。之前问说当整个大环境都差的时候&#xff0c;公司还有项目可做就不错了&#xff0c;不要觉得只能赚点小钱就看不上&#xff0c;现在已经从伸手抓钱&#xff0c;变成弯腰捡钱的时代了。 开始赚的钱是不多&#xff0c;但能验证方向&#xff0c;先把跑…

【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)

觉得有帮助麻烦点赞关注收藏~~~ 一、生成对抗网络简介 生成对抗网络(GANs&#xff0c;Generative Adversarial Nets),由Ian Goodfellow在2014年提出的,是当今计算机科学中最有趣的概念之一。GAN最早提出是为了弥补真实数据的不足&#xff0c;生成高质量的人工数据。GAN的主要思…

Java项目中集成Redis提升系统的性能

概述 安装Redis 安装 启动Rocky Linux 9.0&#xff0c;在浏览器中打开web console. 如果没有安装Web console&#xff0c;按以下步骤安装启用&#xff1a; 安装命令&#xff1a; # dnf install cockpit 启用并运行服务 # systemctl enable --now cockpit.socket 开通防火墙&…

【每日小技巧】如果Tomcat的端口被占用,怎么处理该报错

苦恼的问题&#xff1a;当我们在用Tomcat时&#xff0c;发现我们要用的端口被其他程序占用了&#xff0c;如图&#xff1a; 解决办法&#xff1a; ①winR&#xff0c;输入cmd&#xff0c;打开命令行 输入命令netstat -ano&#xff0c;列出所有的端口号使用情况 ②查看PID&#…

Linux命令_ps 进程管理

简介 ps通过读取 /proc 中的虚拟文件来工作&#xff0c;不需要 setuid kmem 或有任何特权来运行。 CPU使用率目前表示为进程整个生命周期中运行所花费时间的百分比。这是不理想的&#xff0c;它不符合ps在其他方面所符合的标准。CPU使用率加起来不太可能达到100%。 SIZE和RSS字…

E. DS哈希查找--Trie树

目录 题目描述 思路分析 AC代码 题目描述 Trie树又称单词查找树&#xff0c;是一种树形结构&#xff0c;如下图所示。 它是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以经常被搜索引擎…

HTML列表与表格详解_高效学习攻略

HTML列表与表格HTML篇_第六章、HTML列表与表格一、列表1.1定义1.2列表的分类1.3列表的对比二、表格2.1表格的定义2.2表格的边框2.3表格的表头单元格2.4表格标题 <caption>2.5表格的高度和宽度2.6表格背景2.7表格空间2.8合并单元格2.9表格头部、主题和页脚2.10表格的嵌套H…

【C++常用容器】STL基础语法学习queue容器

目录 ●queue的基本概念 ●queue常用接口 ●构造函数 ●赋值操作 ●数据存取 ●大小操作 ●queue的基本概念 简要介绍&#xff1a;queue是一种先进先出的的数据结构&#xff0c;它有两个出口。队列容器允许从一端新增元素&#xff0c;从另一端移除元素。队列中只有队…

【Java基础篇】基础知识易错集锦(一)

在学习的路上&#xff0c;我们只记得学习新的知识&#xff0c;却忽略了一切新知识都是在旧知识的基础上&#xff1b;努力奔跑的过程中&#xff0c;也要记得常回头看看&#xff1b; 题目展示&#xff1a; 解析&#xff1a; abstract是抽象的意思&#xff0c;在java中&#xff0…

[附源码]计算机毕业设计的高校车辆租赁管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SQL注入漏洞 | updatexml报错注入

文章目录前言MySQL updatexml报错注入前言 XML XML 被设计用来传输和存储数据&#xff0c;是各种应用程序之间进行数据传输的最常用的工具。 xpath XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在…

【GRU回归预测】基于门控循环单元GRU实现数据多维输入单输出回归预测附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

web期末大作业 使用HTML+CSS制作蓝色版爱宠之家带留言板(5页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Redis 特性。

Remote Dict Serve 分类 实时同步数据 要求缓存中的数据必须与db中的数据保持一致&#xff0c;如何保证&#xff0c;只要DB发生了变化&#xff0c;缓存中的数据立即消息 阶段性缓存为了缓存数据 添加了生存时长属性 Redis 的特性。 性能极高 读的速度 11w/s 写的速度 8w次/s…

代码详细教程+文档+PPT+源码等]SSM框架美妆商城全套|电商购物计算机专业毕业论文java毕业设计网站

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之SSM美妆商城项目源码_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzygogogo.com/itsz…

详解Pytorch中的torch.nn.MSELoss函数(包括每个参数的分析)

一、函数介绍 Pytorch中MSELoss函数的接口声明如下&#xff0c;具体网址可以点这里。 torch.nn.MSELoss(size_averageNone, reduceNone, reduction‘mean’) 该函数默认用于计算两个输入对应元素差值平方和的均值。具体地&#xff0c;在深度学习中&#xff0c;可以使用该函数用…

《Linux运维实战:使用Percona Backup for MongoDB逻辑备份与恢复Mongodb数据》

一、备份与恢复方案 Percona Backup for MongoDB 是一个开源、分布式和低影响的解决方案&#xff0c;用于MongoDB分片集群和副本集的一致备份。从版本1.7.0开始&#xff0c;Percona Backup for MongoDB支持物理和逻辑备份和恢复&#xff0c;仅支持对逻辑备份进行时间点恢复。 …

Android.mk 入门学习

我们还是采用RK3399的开发板来学习Android.mk NOTED: 在编译之前&#xff0c;我们需要source & lunch source build/envsetup.sh lunch rk3399_roc_pc_plus-userdebug 或者lunch后选择41 一、Android.mk介绍 Android.mk是Android提供的一种makefile文件&#xff0c;用来指…

物理数据库服务器扫描hba卡识别共享磁盘命令

1、问题背景 默认情况&#xff0c;在扩容完1套物理rac共享存储后&#xff0c;rac主机是不能识别共享存储的。那么该怎么办呢&#xff1f; 2、解决办法 例如&#xff0c;在扩容完1套物理rac共享存储后&#xff0c;如果rac主机不能识别共享存储的话(一般需要执行命令后&#x…