首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何重写此JavaScript以包含额外的事件侦听器?

如何重写此JavaScript以包含额外的事件侦听器?
EN

Stack Overflow用户
提问于 2021-10-11 19:36:59
回答 1查看 39关注 0票数 0

我正在使用我在网上找到的一个脚本,它使用GSAP (Greensock)控制页面过渡。

我不是专家,但我遵循了一些教程,soI有点理解GSAP的部分。

我的问题是这个脚本切换了2个页面过渡-点击按钮1,页面2动画进入视图。现在点击按钮2,第一页返回。

我正在尝试扩展这个脚本以包含额外的页面(带有额外的按钮)。我已经试过几次了,但到目前为止我一无所获。

我使用的脚本是:

代码语言:javascript
运行
AI代码解释
复制
var btns = document.querySelectorAll('.jsBtn');
var duration = .8;
var isAnimating = false;

addEventListenerList(btns, 'click', function (e) {
  if(!isAnimating) {
  switchPages(e.currentTarget.dataset.out, e.currentTarget.dataset.in);
  }
});
function switchPages(outFn, inFn) {
  isAnimating = true;
  window[outFn](document.querySelector('.current'));
  window[inFn](document.querySelector('.jsPage:not(.current)'));
}

function scaleDown(el) {
  addClass(el, 'current');
  TweenLite.fromTo(el, duration, {
    opacity: 1,
    scale: 1
  }, {
    opacity: 0,
    scale: .8,
    clearProps: 'opacity, scale',
    onComplete: function () {
    removeClass(el, ['top', 'current']);
   }
  });
}

function moveFromRight(el) {
  addClass(el, ['top', 'current']);
  TweenLite.fromTo(el, duration, {
  xPercent: 100
}, {
  xPercent: 0,
  clearProps: 'xPercent',
  onComplete: function () {
  removeClass(el, 'top');
  isAnimating = false;
 }
});
}


// utils
function addClass(el, className) {
  [].concat(className).forEach(function (n) {
  el.classList.add(n);
});
}

function removeClass(el, className) {
  [].concat(className).forEach(function (n) {
  el.classList.remove(n);
});
}

function addEventListenerList(list, event, fn) {
  for (var i = 0, len = list.length; i < len; i++) {
  list[i].addEventListener(event, fn, false);
}
}

我使用的HTML如下所示。我已经插入了第三个页面(和第三个按钮),但无法让脚本识别此按钮并触发相关的转换:

代码语言:javascript
运行
AI代码解释
复制
<div class="page p1 current jsPage">
   <button class="btn1 jsBtn" data-out="scaleDown" data-in="moveFromRight">One</button>
</div>

<div class="page p2 jsPage">
   <button class="btn2 two jsBtn" data-out="scaleDown" data-in="moveFromRight">Two</button>
</div>

<div class="page p3 jsPage">
   <button class="btn3 three jsBtn" data-out="scaleDown" data-in="moveFromRight">Two</button>
</div>

希望有人能告诉我如何重写/扩展这个脚本。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-11 20:37:17

switchPages函数可能是您想要进行更改的地方。

下面是一个示例:

代码语言:javascript
运行
AI代码解释
复制
function switchPages(outFn, inFn) {
  isAnimating = true;
  var currentPage = document.querySelector('.current'); // get current page
  var nextPage = currentPage.nextElementSibling; // get next page, assuming identical html structure
  if (!nextPage.classList.contains('jsPage')) nextPage = document.querySelector('.jsPage'); // if next element is not a page, get first page
  window[outFn](currentPage); // does it need to be global?
  window[inFn](nextPage); // does it need to be global?
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69534806

复制
相关文章
使用StyleGAN创建新脚本
将StyleGAN应用于Unicode字符的图像,以查看它是否可以创建新字符。发现了一些有趣的结果如上图。
代码医生工作室
2019/06/21
1.7K0
使用StyleGAN创建新脚本
如何使用Shell脚本判断HDFS文件/目录是否存在
本文主要讲述如何使用Shell脚本判断HDFS文件或目录是否存在,算是一个小技巧吧,这几天做PoC的时候感觉还挺有用的。因为HDFS设计的是“一次写入,多次读取”,不可以修改数据,只能追加或者删除,所以,如果目标文件或目录在HDFS上已经存在的话,则无法创建成功。
Fayson
2018/09/29
5.6K0
Pycharm 自动为脚本文件添加作者信息
如图所示进入设置页面 文件头信息设置 ${PROJECT_NAME} 项目名称 ${PRODUCT_NAME} IDE的名称 ${NAME} 文件名称 ${USER} 用户的登录名 ${DATE} 日
白墨石
2021/01/13
6850
Pycharm 自动为脚本文件添加作者信息
使用shell脚本抽取MySQL表属性信息
在最近抽取了数据库层级的信息之后,我们可以基于已有的数据做一些分析,比如那些业务属于僵尸业务,可以通过分析binlog的偏移量来得到一个初版的信息,如果在一个周期之后偏移量未发生任何变化,则可以断定没有任何数据的写入,很可能是一个空跑的业务。如果某些业务的日增长数据在1000M,结果有一天突然爆发增长到了4000M,则这种情况我们可以基于建立的模型来做出响应,而这些信息在系统层面是无法感知的。这是对于业务探索的第一步。
jeanron100
2018/12/19
1K0
如何使用Slicer对APK文件执行信息安全侦察任务
 关于Slicer  Slicer是一款功能强大的APK安全分析工具,在该工具的帮助下,广大研究人员可以轻松地对APK文件执行自动化的信息安全侦察活动。 Slicer能够接收一个提取出来的APK文件路径作为输入参数,随后Slicer便会将所有的安全侦察结果返回给研究人员,其中包括目标APK文件中所有导出并设置为null权限(可以外部调用)的Activity、Reveiver和Service信息,以及。 注意:APK文件必须通过jadx或apktool进行提取。  功能介绍  1、检测APK是否将androi
FB客服
2023/03/29
1.3K0
如何使用Slicer对APK文件执行信息安全侦察任务
Windows如何运行.sh脚本文件
我们都知道sh文件在Linux服务器上可以直接执行,基本没有怎么关注过在windows上是否可以执行,平时开发的过程当中,经常会需要将修改的代码提交到gitLab/gitHub,提交代码有时候是一个固定的流程,对于这种情况,是否可以通过shell来进行自动化,这是需要学习的内容,本文就当做基本入门了解
在水一方
2022/06/14
26.1K0
Windows如何运行.sh脚本文件
【说站】Python脚本如何指定文件
(1)dest=files,是说将命令行中,--file的参数值赋值给变量files,你可以用args.files访问。
很酷的站长
2022/11/23
5010
【说站】Python脚本如何指定文件
如何高效使用脚本?读它
当你购买了一台 Linux 服务器,想将 Web 应用代码部署到服务器上,并在更新代码版本时能够重新部署,该怎么做? 首先你需要通过 SSH 远程连接到服务器,运行指令安装运行环境和 Web 服务器(前往配置文件的目录编辑文件),另外还需要打开防火墙、加强 SSH 配置,创建账户等初始化操作。 在更新版本后,你还要再次部署代码包并重启 Web 应用。在后续的服务器日常运维中,你更要花费大量时间测试和验证,尤其在出现问题后快速定位问题。 在以上一系列操作中,你都需要执行海量命令并修改大量文件。如何才
腾讯云计算产品团队
2021/02/05
1.5K0
如何使用Redis执行Lua脚本
lua脚本有很多的优点,但是对于我来说我使用它只因为它能保证原子性。为什么它能保证原子性你就使用它呢?一个简单的例子,在我们的Java代码中,一个简单的++i都不能保证原子性更别提复杂的情况了。但是使用lua在执行几百行代码的情况下都不需要考虑高并发所带来的问题。
Java学习录
2019/04/18
4K0
HDFS——如何获取文件的属性信息
import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.FileStatus; public class FileInfo {  public static void main(String[] args) throws Exception  {   if(args.length != 1){   System.out.println("Usage FileInfo <target>");   System.exit(1);   }   Configuration conf = new Configuration();   FileSystem hdfs = FileSystem.get(URI.create(args[0]),conf);   FileStatus fs = hdfs.getFileStatus(new Path(args[0]));   System.out.println("path: "+fs.getPath());   System.out.println("length: "+fs.getLen());   System.out.println("modify time: "+fs.getModificationTime());   System.out.println("owner: "+fs.getOwner());   System.out.println("replication: "+fs.getReplication());   System.out.println("blockSize: "+fs.getBlockSize());   System.out.println("group: "+fs.getGroup());   System.out.println("permission: "+fs.getPermission().toString());  } }
星哥玩云
2022/06/30
2.3K0
如何使用zx编写shell脚本
在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写shell脚本。然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的Node.js项目引导配置。
chuckQu
2022/11/28
4.1K0
在终端使用脚本查看网站 SSL 证书信息
之前遇到过一次赛门铁克很久的证书被Chrome弃用的问题,涉及到了查看证书。当然第一个大家会想到的是在浏览器中查看,但是总是感觉不够极客。后来摸索找到了终端查看网站证书的方法
技术小黑屋
2020/01/21
2.2K0
使用Workbench导出为【sql】脚本文件
选定单选按钮【Export to self-Contained File】,并点击右侧的【...】,选择【桌面】路径,输入文件名称【T1】,点击保存。
红目香薰
2022/11/29
1.5K0
使用Workbench导出为【sql】脚本文件
使用 shell 脚本拼接 srt 字幕文件 (srtcat)
前段时间迷上了做 B 站视频,主要是摩托车方面的知识分享。做的也比较粗糙,就是几张图片配上语音和字幕进行解说。尝试过自己解说,发现录制视频对节奏的要求还是比较高的,这里面水太深把握不住。好在以 "在线 免费 文字转语音" 作为关键字搜索一番,发现一个好用的网站——字幕说。好用的语音合成工具千千万,为什么我对这个情有独钟呢?原来它将文字底稿转换为语音的同时,还输出了字幕文件 (srt),这个在 B 站的云编辑器中就可以直接导入了,非常方便:
海海
2023/03/08
3K0
使用 shell 脚本拼接 srt 字幕文件 (srtcat)
拷贝文件脚本
/usr/bin/rsync -tvazrp /home/hello/temp/$1 root@192.168.1.1:/home/ftp/"
用户1168904
2021/05/17
1.3K0
查看CPU信息小脚本
echo "                  the `hostname` cpuinfo                       "
三杯水Plus
2018/11/14
9850
如何使用Jmeter录制手机app脚本
这时在jMeter的bin目录下生成了一个安全证书,需要把这个安装证书添加到手机受信任的证书,这个证书的有效期是7天,7天后证书会重新生成。
软件测试君
2022/03/31
1.8K0
如何使用Jmeter录制手机app脚本
linux脚本使用scp自动传输,shell脚本实现scp文件传输
scp是一个基于ssh的Linux环境下传输文件的好工具,但是使用shell脚本调用scp时会面临一个问题,即scp强制要求通过交互方式输入密码,而不像mysql等拥有-u -p选项。下面有两种方法帮助shell脚本跨过输入密码这个障碍。
全栈程序员站长
2022/09/23
6.2K0
java测试框架如何执行groovy脚本文件
本人在写基于httpclient的测试框架时,用到了groovy脚本作为测试用例的脚本语言,自然就需要java执行上传的测试脚本,在看过实例之后,自己进行了封装,总体来说跟java反射执行java方法类似。但又有一些不兼容的情况,部分已经写了博客做记录了,以后会陆续更新。分享代码,供大家参考。
FunTester
2019/10/29
9850
点击加载更多

相似问题

如何使用PHP动态读取文件中的新信息

25

如何使用google应用脚本获取文件共享权限信息?

12

导入过程中访问PrivateData -模块

13

文件信息的AIX脚本

10

如何使用shell脚本从标准输入(键盘)更新信息文件?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文