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 相关文章推荐
Asp.Net alert弹出提示信息的几种方法总结
Jan 29 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
JQuery创建DOM节点的方法
Jun 11 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
Jan 25 Javascript
Jquery轮播效果实现过程解析
Mar 30 Javascript
JS动态插入并立即执行回调函数的方法
Apr 21 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
react.js 获取真实的DOM节点实例(必看)
Apr 17 Javascript
vue 简单自动补全的输入框的示例
Mar 12 Javascript
微信小程序列表中item左滑删除功能
Nov 07 Javascript
详解vue项目打包步骤
Mar 29 Javascript
vue-cli项目使用mock数据的方法(借助express)
Apr 15 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的一个登录的类 [推荐]
2007/03/16 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
javascript prototype,executing,context,closure
2008/12/24 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
javascript解析json实例详解
2014/11/05 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
Python多线程编程(五):死锁的形成
2015/04/05 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
详解Python的Django框架中的模版相关知识
2015/07/15 Python
python字符串string的内置方法实例详解
2018/05/14 Python
python 中如何获取列表的索引
2019/07/02 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
python游戏开发的五个案例分享
2020/03/09 Python
Jupyter加载文件的实现方法
2020/04/14 Python
班会关于环保演讲稿
2013/12/29 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技