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 继承的实现
Jul 09 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
Aug 16 Javascript
JQuery中属性过滤选择器用法实例分析
May 18 Javascript
javascript实现复选框全选或反选
Feb 04 Javascript
详解vue-cli开发环境跨域问题解决方案
Jun 06 Javascript
React Native中Navigator的使用方法示例
Oct 13 Javascript
jquery实现楼层滚动效果
Jan 01 jQuery
Node层模拟实现multipart表单的文件上传示例
Jan 02 Javascript
在Angular中使用JWT认证方法示例
Sep 10 Javascript
JS html事件冒泡和事件捕获操作示例
May 01 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 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调用KyotoTycoon简单实例
2015/04/02 PHP
php里array_work用法实例分析
2015/07/13 PHP
php猜单词游戏
2015/09/29 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
Python中字典的setdefault()方法教程
2017/02/07 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
会计学个人自荐信模板
2013/12/13 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
小学班主任研修日志
2015/11/13 职场文书
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers