layer扩展打开/关闭动画的方法


Posted in Javascript onSeptember 23, 2019

1. 打开窗口时,支持自定义或者第三方动画

打开layer.js,定位到函数:Class.pt.creat ,

找到代码:

//为兼容jQuery3.0的css动画影响元素尺寸计算
    if (doms.anim[config.anim]) {
      var animClass = 'layer-anim ' + doms.anim[config.anim];
      that.layero.addClass(animClass).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
        $(this).removeClass(animClass);
      });
    }

修改为(此处只是针对css动画库animate):

//为兼容jQuery3.0的css动画影响元素尺寸计算
    if (doms.anim[config.anim]) {
      var animClass = 'layer-anim ' + doms.anim[config.anim];
      that.layero.addClass(animClass).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
        $(this).removeClass(animClass);
      });
    } else {
      //支持自定义的,或者第三方弹出动画
      var animClass = config.anim;
      var animated = 'animated';
      that.layero.addClass(animated);
      that.layero.addClass(animClass).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
        $(this).removeClass(animClass);
        $(this).removeClass(animated);
      });
    }

至此,layer便可支持其他弹出动画。

2.关闭窗口时,支持自定义或者第三方动画(layer.open时需传入新增参数:closeAnim)

打开layer.js

定位到函数:Class.pt.config

新增参数:

closeAnim: 'layer-anim-close',

定位到函数:Class.pt.creat

找到代码:

//记录关闭动画
    if (config.isOutAnim) {
      that.layero.data('isOutAnim', true);
    }

修改为:

//记录关闭动画
    if (config.isOutAnim) {
      that.layero.data('isOutAnim', true);
      that.layero.data('closeAnim', config.closeAnim);
    }

定位函数到:layer.close

找到代码:

if (layero.data('isOutAnim')) {
      layero.addClass('layer-anim ' + closeAnim);
    }
 
    $('#layui-layer-moves, #layui-layer-shade' + index).remove();
    layer.ie == 6 && ready.reselect();
    ready.rescollbar(index);
    if (layero.attr('minLeft')) {
      ready.minIndex--;
      ready.minLeft.push(layero.attr('minLeft'));
    }
 
    if ((layer.ie && layer.ie < 10) || !layero.data('isOutAnim')) {
      remove()
    } else {
      setTimeout(function () {
        remove();
      }, 200);
    }

修改为:

if (layero.data('isOutAnim')) {
      if (layero.data("closeAnim") === closeAnim) {
        layero.addClass('layer-anim ' + closeAnim);
      } else {
        layero.addClass(layero.data("closeAnim") + ' animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
          $('#layui-layer-moves, #layui-layer-shade' + index).remove();
          remove();
        });
      }
    }
    if (layero.data("closeAnim") === closeAnim) {
      $('#layui-layer-moves, #layui-layer-shade' + index).remove();
      layer.ie == 6 && ready.reselect();
      ready.rescollbar(index);
      if (layero.attr('minLeft')) {
        ready.minIndex--;
        ready.minLeft.push(layero.attr('minLeft'));
      }
 
      if ((layer.ie && layer.ie < 10) || !layero.data('isOutAnim')) {
        remove()
      } else {
        setTimeout(function () {
          remove();
        }, 200);
      }
    }

好啦,关闭也可以支持第三方动画啦。

以上这篇layer扩展打开/关闭动画的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript Array对象基础知识小结
Nov 16 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
Jan 09 Javascript
JavaScript中获取Radio被选中的值
Nov 11 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
js实现点击按钮弹出上传文件的窗口
Dec 23 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
Sep 27 Javascript
在vue中使用echarts图表实例代码详解
Oct 22 Javascript
微信小程序实现的picker多级联动功能示例
May 23 Javascript
Node.js Domain 模块实例详解
Mar 18 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 #Javascript
解决layer.confirm快速点击会重复触发事件的问题
Sep 23 #Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 #Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
Sep 23 #Javascript
layui内置模块layim发送图片添加加载动画的方法
Sep 23 #Javascript
微信头像地址失效踩坑记附带解决方案
Sep 23 #Javascript
微信小程序如何获取用户头像和昵称
Sep 23 #Javascript
You might like
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
PHP线程的内存回收问题
2016/07/08 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
DOM精简教程
2006/10/03 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python处理cookie详解
2014/02/07 Python
Python实现的简单万年历例子分享
2014/04/25 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
图文详解WinPE下安装Python
2016/05/17 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python使用tkinter实现简单计算器
2018/01/30 Python
Python交互式图形编程的实现
2019/07/25 Python
python匿名函数的使用方法解析
2019/10/10 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
2019年Java 最常见的 面试题
2016/10/19 面试题
C#怎么让一个窗口居中显示?
2015/10/20 面试题
药剂学专业应届生自荐信
2013/09/29 职场文书
政府个人对照检查材料
2014/08/28 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
项目经理岗位职责
2015/01/31 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
Go语言入门exec的基本使用
2022/05/20 Golang