文章目录

个人博客:https://mmmmmm.me

源码:https://github.com/dataiyangu/dataiyangu.github.io

时间

2019.3.3

背景

之前给自己加了护眼色的小功能,本来应该是这样的:



今天发现,点击护眼色后期初是没问题的,但是只要一滚动就会变成下面这样。

问题解决

发现不滚动还是正确的,一滚动就暴露错误了,想起来前段时间加了scrollReveal.js

所以应该是scrollReveal的问题。

跟了跟源码,发现

  1. update: function (el) {
  2. var that = this;
  3. var css = this.genCSS(el);
  4. var style = this.styleBank[el.getAttribute("data-scroll-reveal-id")];
  5. if (style != null) style += ";"; else style = "";
  6. if (!el.getAttribute('data-scroll-reveal-initialized')) {
  7. el.setAttribute('style', style + css.initial);
  8. el.setAttribute('data-scroll-reveal-initialized', true);
  9. }
  10. if (!this.isElementInViewport(el, this.options.viewportFactor)) {
  11. if (this.options.reset) {
  12. el.setAttribute('style', style + css.initial + css.reset);
  13. }
  14. return;
  15. }
  16. if (el.getAttribute('data-scroll-reveal-complete')) return;
  17. if (this.isElementInViewport(el, this.options.viewportFactor)) {
  18. el.setAttribute('style', style + css.target + css.transition+'background:'+$("#canvas").css("background")+'');
  19. // Without reset enabled, we can safely remove the style tag
  20. // to prevent CSS specificy wars with authored CSS.
  21. if (!this.options.reset) {
  22. setTimeout(function () {
  23. if (style != "") {
  24. el.setAttribute('style', style);
  25. } else {
  26. el.removeAttribute('style');
  27. }
  28. el.setAttribute('data-scroll-reveal-complete',true);
  29. that.options.complete(el);
  30. }, css.totalDuration);
  31. }
  32. return;
  33. }
  34. },

这里将我们将要发生动画的div的style属性进行了重写,从上面看的是在原来的style上加入了";",然后往后面加入scrollReveal自己的style,可是仔细想想,我的护眼模式点击改变背景色,并没有经过刷新,所以他原来的style并不是后来点击之后的style,所以还是没有加上。

最终解决方案是在

  1. if (this.isElementInViewport(el, this.options.viewportFactor)) {
  2. el.setAttribute('style', style + css.target + css.transition+'background:'+$("#canvas").css("background")+'');
  1. 'background:'+$("#canvas").css("background")+''

将我自己的样式在拼到了这个地方。

scrollReveal.js导致页面加载完之后页面中点击事件添加的css参数失效了(我的Hexo next博客引发的问题)的更多相关文章

  1. js页面加载完后执行(document.onreadystatechange 和 document.readyState)

    js页面加载完后执行javascript(document.onreadystatechange 和 document.readyState) document.onreadystatechange ...

  2. 关于 第三方接口支付的时候 采用post提交的方式,有两种 一种是通过 curl来进行,一种是通过js当页面加载完后跳转

    这是第一种.通过javascript页面加载完后,对表单采用 post方式提交给 第三方接口----- echo <<<_END<!DOCTYPE html PUBLIC &q ...

  3. js图片未加载完显示loading效果

    <html> <title>js图片未加载完显示loading效果</title> <body> <style> img{float:lef ...

  4. javascript 实现页面加载完的操作

    document.onreadystatechange = function () { if (document.readyState == "complete") {//页面加载 ...

  5. echarts.js导致angular-translate加载模块失败

    echarts.js导致angular-translate加载模块失败,待解决

  6. 页面加载后resize页面布局

    在我们写web的时候,有的时候页面加载完以后,布局位置有一些问题,手动改变窗口大小后则正常显示位置. 其实,我们手动改变窗口大小,是执行了resize方法. share一下兼容方法: coffee c ...

  7. Ionic页面加载前 ionic页面加载完成 ionic页面销毁执行的事件

    ionic 中$ionicView.beforeEnter(页面刚加载前)  $ionicView.afterEnter  (页面加载完成) $destroy(页面销毁) 广播事件 //ionic c ...

  8. 页面加载完之后在执行js代码

    把代码写在 window.onload = function () { //js代码 //此处js代码是页面完全加载完之后执行 } 即可. 例: <script type="text/ ...

  9. js&jquery页面加载完执行

    js <script type=”text/javascript”> window.onload=function (){ var userName=”xiaoming”; alert(u ...

随机推荐

  1. PHP ftp_fput() 函数

    定义和用法 ftp_fput() 函数上传本地一个已经打开的文件,并在 FTP 服务器上把它保存为一个文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_fput(f ...

  2. 执行 systemctl start firewalld 命令后出现Failed to start firewalld.service: Unit is masked

    firewalld服务被锁定,不能添加对应端口 执行命令,即可实现取消服务的锁定 # systemctl unmask firewalld 下次需要锁定该服务时执行 # systemctl mask ...

  3. apk签名原理及实现

    发布过Android应用的朋友们应该都知道,Android APK的发布是需要签名的.签名机制在Android应用和框架中有着十分重要的作用. 例如,Android系统禁止更新安装签名不一致的APK: ...

  4. Block 使用总结

    - (void)testBlockWeakObj1 { UILabel *tl = [[UILabelalloc]init];//本地局部变量 __weak UILabel *weakTL = tl; ...

  5. flutter 卡在Running Gradle task 'assembleDebug'...

    Android项目运行时出错 卡在Initializing gradle… 运行时会卡在Initializing gradle..., 此时因为Android项目会用到Gradle, 如果没有FQ,下 ...

  6. 搭建单机版spark

    二.下载软件 JDK,Scala,SBT,Maven 版本信息如下: JDK jdk-7u79-linux-x64.gz Scala scala-2.10.5.tgz 三.解压上述文件并进行环境变量配 ...

  7. Linux shell模拟多线程拷贝

    #!/bin/sh #日志文件 log_file=/data/threadcp.log a=$(date +%H%M%S) echo -e "startTime:\t$a" #最大 ...

  8. JEECG树(TreeGrid)字段的扩展

    转载:https://blog.csdn.net/huangzirong822/article/details/38400817 之前使用jeecg集成框架做过一个项目 这里说说框架中树(tree)字 ...

  9. js 为什么计算结果老是出现NaN

    js 为什么计算结果老是出现NaN 可能原因: 1.操作的两个数,类型不一致 2.有一个值为NaN,计算後为NaN 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函 ...

  10. ping命令的应用

    Ping命令是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要功能是向特定的目的主机发送 ICMP(Iternet Control Message Protocol 因特网报文控制协议) ...