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 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
jQuery提交多个表单的小例子
Jun 30 Javascript
js算法中的排序、数组去重详细概述
Oct 14 Javascript
jquery+javascript编写国籍控件
Feb 12 Javascript
JavaScript正则获取地址栏中参数的方法
Mar 02 Javascript
three.js实现3D影院的原理的代码分析
Dec 18 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
详解如何使用nvm管理Node.js多版本
May 06 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 Javascript
2019最新21个MySQL高频面试题介绍
Feb 06 Javascript
原理深度解析Vue的响应式更新比React快
Apr 04 Javascript
Vue实现附件上传功能
May 28 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新手上路(三)
2006/10/09 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
javascript 节点排序 2
2011/01/31 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
jQuery实现手势解锁密码特效
2017/08/14 jQuery
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
python绘制简单折线图代码示例
2017/12/19 Python
python简单实现9宫格图片实例
2020/09/03 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
精彩的大学生自我评价
2013/11/17 职场文书
应届毕业生自我评价分享
2013/12/15 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
世界文化遗产导游词
2015/02/13 职场文书
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
分享Python异步爬取知乎热榜
2022/04/12 Python