layui扩展:实现右侧滑出弹层效果
发表于:2021-11-15 17:55:10浏览:3240次
最近做一个项目,前端用的是layUI,遇到了查看详情页面的需要占半屏幕打开的效果。就想到了右侧滑出页面的方式,看了半天的layUI 的弹层API文档发现没有类似的效果,最后进行了扩展。
具体实现以下功能:
1、右侧滑出层
2、可自定义层宽度
3、关闭按钮
4、跟随窗口变化自动调整弹出层宽高度
具体实现如下:
在layui的插件目录文件夹/static/home/js/module/下创建自定义的js文件rightpage.js,js文件写入代码,代码如下:
layui.define(['layer'], function(exports){ var layer = layui.layer; var obj = { open: function (content='',width='88%') { layer.open({ type: 2, title: '', offset: ['1px', '100%'], skin: 'layui-anim layui-anim-rl layui-layer-admin-right', closeBtn: 0, content: content, area: [width, '100%'], success:function(obj,index){ if($('#rightPopup'+index).length<1){ var btn='<div id="rightPopup'+index+'" class="right-popup-close" title="关闭">关闭</div>'; obj.append(btn); $('#rightPopup'+index).click(function(){ let op_width = $('.layui-anim-rl').outerWidth(); $('.layui-anim-rl').animate({left:'+='+op_width+'px'}, 200, 'linear', function () { $('.layui-anim-rl').remove() $('.layui-layer-shade').remove() }) }) } } }) } }; exports('rightpage', obj); });
相关的CSS代码如下:
@keyframes layui-rl{ from{transform:translateX(0px);}to{transform:translateX(-100%);} } @-webkit-keyframes layui-rl{ from{transform:translateX(0px);}to{transform:translateX(-100%);} } .layui-anim { -webkit-animation-duration: .3s; animation-duration: .3s; -webkit-animation-fill-mode: both; animation-fill-mode: both; } .layui-anim-rl { -webkit-animation-name: layui-rl; animation-name: layui-rl; } .layui-layer-admin-right { box-shadow: 1px 1px 10px rgba(0,0,0,.1); border-radius: 0; overflow: auto; } .layui-anim-rl.layui-layer-iframe{ overflow:inherit!important; } .right-popup-close{position: absolute; width:50px; height:44px; line-height:44px; text-align:center; left: -50px; right:0; top: 50px; background-color:#FF5722; color:#fff; border-radius:4px 0 0 4px; cursor:pointer }
调用方式:
<script src="/static/layui/layui.js?v=1.0.2"></script> <script> var base='/static/home/js/module/'; var extendArray=['rightpage']; var extend={}; if(extendArray){ if(extendArray.length>0){ for(var i=0;i<extendArray.length;i++){ extend[extendArray[i]]=extendArray[i]; } } } layui.config({ base: base, version:'1.0.2' }).extend(extend).use(extendArray, function(){ rightpage = layui.rightpage; rightpage.open("/home/admin/add.html"); }); </script>
推荐文章
- 微信小程序wx.scanCode,扫描二维码或者条形码获取数据
- JavaScript实现json数据深拷贝的几种方法
- composer 镜像操作以及常用命令收集
- 前端开发简单吗?一套前端的知识体系带你了解前端岗位
- 微软推出 VS Code for the Web 无需在 PC 上进行安装 打开浏览器就可以开始工作
- Thinkphp8通过PhpWord导出生成word文件,支持图片处理,富文本导出完整方案
- 韦伯空间望远镜飞行软件采用 C++ 编写、内置定制的JS解释器
- 编辑器vscode如何预览markdown文件?
- PHP将透明图片(PNG)合并到JPG背景图片上,实现PNG透明的效果
- CRM的基本功能模块是什么?如何判断企业是否需要CRM系统?