layui多图带预览的上传
<div class="layui-form-item"> <label class="layui-form-label">图片上传</label> <div class="layui-input-block"> <button type="button" class="layui-btn layui-btn-primary layui-border-blue" id="js-btn-upload"><i class="layui-icon layui-icon-upload"></i> 上传图片</button> </div> </div> <div class="layui-form-item"> <ul id="upload-list" class="upload-list"></ul> </div> <script type="text/html" id="upload-tpl"> <li id="js-image-{{ d.index }}"> <div class="layui-progress" lay-filter="progress-{{ d.index }}"><div class="layui-progress-bar" lay-percent=""></div></div> <em><img src="{{ d.url }}"><a class="layui-btn layui-btn-xs layui-bg-red js-reupload">重新上传</a></em> <div class="layui-btn-group"> <a class="layui-btn layui-btn-primary layui-btn-sm layui-border-blue js-left"><i class="layui-icon layui-icon-left"></i></a> <a class="layui-btn layui-btn-primary layui-btn-sm layui-border-red js-delete"><i class="layui-icon layui-icon-delete"></i></a> <a class="layui-btn layui-btn-primary layui-btn-sm layui-border-blue js-right"><i class="layui-icon layui-icon-right"></i></a> </div> <input type="hidden" name="imglist[]"> </li> </script> <script> //上传图片 var uploadInst = layui.upload.render({ elem: '#js-btn-upload', //绑定元素 elemList: $('#upload-list'), // 列表元素对象 url: '<?=site_url('kindeditor/uploadjson?type=image&dir=product')?>', acceptMime: 'image/jpeg, image/png', exts: 'jpg|png', size: 1024, field: 'imgFile', multiple: true, number: 6, auto: false, choose: function(obj){ uploadInst.config.elem.next()[0].value = ''; var pics=this.elemList.find('li').length; if(pics>=this.number || pics+Object.keys(obj.getChooseFiles()).length>this.number){ layer.msg('最多上传6张图片'); return false; } // 读取本地文件 var that = this; obj.preview(function(index, file, result){ var li=$(laytpl($('#upload-tpl').html()).render({index:index,url:result})); li.find('.layui-progress').show(); li.find('.js-reupload').on('click', function(){ obj.upload(index, file); $(this).hide(); element.progress('progress-'+ index, '0%'); }); that.elemList.append(li); element.render('progress'); // 渲染新加的进度条组件 obj.upload(index, file); }); }, done: function(res, index, upload){ // 成功的回调 var that = this; if(res.error == 0){ // 上传成功 var li = that.elemList.find('li#js-image-'+ index) li.find('.layui-progress').remove(); li.find('input').val(res.url); return; } this.error(index, upload); }, error: function(index, upload){ // 错误回调 var that = this; var li = that.elemList.find('li#js-image-'+ index); //显示重传 li.find('.js-reupload').show(); layer.msg('上传失败',{icon:5}); }, progress: function(n, elem, e, index){ // 注意:index 参数为 layui 2.6.6 新增 element.progress('progress-'+ index, n + '%'); // 执行进度条。n 即为返回的进度百分比 } }); </script>
layui表单中label宽度自适应
@media(min-width:451px){ .layui-form-item{display:flex;align-items:center;} .layui-form-label{flex:0 0 auto;width:auto !important;min-width:120px;} .layui-form-pane .layui-input-block{flex:1;margin-left:-1px;} }
效果如下图:
layui.layer宽度自适应
maxWidth当area属性为auto时有效
layer.open({ skin: 'layui-layer-admin', title:"弹层标题", type: 1, maxmin: true, area: ['auto','90%'], maxWidth:1200, shadeClose: true, content: html });
设置百分比宽度,打开弹层后重置最大宽度(高度)和位置,实现宽度自适应
layer.open({ skin: 'layui-layer-admin', title:'标题', type: 1, maxmin: true, area: ['90%','90%'], shadeClose: true, content: html, success:function(layero,index,that){ layer.style(index,{maxWidth:1200}); //layer.style(index,{maxWidth:1200, maxHeight:800}); that.offset(); } });
高度自适应
layer.open({ skin: 'layui-layer-admin', title:'标题', type: 1, maxmin: true, area: ['90%','90%'], shadeClose: true, content: html, success:function(layero,index,that){ layer.iframeAuto(index); // 让 iframe 高度自适应 that.offset(); } });
layui自动触发select事件
来源:https://toscode.gitee.com/layui/layui/issues/I5JMRW
$(obj).siblings("div.layui-form-select").find("dl dd[lay-value='"+value+"']").click();
layui特殊方法
top.layui.index.openTabsPage(url,title);
关闭当前标签页:
window.top.layui.jquery('body').find('#LAY_app_tabs .layui-this .layui-tab-close').trigger('click');
Layui Admin中关闭当前标签页:
parent.layui.admin.events.closeThisTabs();
在layer.open打开的iframe中关闭自己:
parent.layer.close(parent.layer.getFrameIndex(window.name));
头部工具栏
table.render({ toolbar: '#demoBar', //开启头部工具栏 defaultToolbar: ['filter','print','exports'], //默认工具栏 });
获取表格全部数据
//方法1:包含接口返回的原始数据和组件内部的特定字段 table.cache[table_id]; //方法2:只包含接口返回的原始数据 table.getData(table_id);
layui插件
layui官方文档
https://layui.gitee.io/v2/
layui镜像网站
http://laizhefa.com/
https://www.layui.site/
treetable
https://gitee.com/ele-admin/treetable-lay
演示地址:https://whvse.gitee.io/treetable-lay/demo/
开发文档:https://gitee.com/whvse/treetable-lay/wikis/pages
layui mini后台管理模板
http://layuimini.99php.cn/
EasyAdmin后台管理系统 ThinkPHP6.0+layUI
http://easyadmin.99php.cn/
OPtable
http://hbangmao.gitee.io/layui-op-table/demo/index.html
soul table
https://saodiyang.gitee.io/layui-soul-table/
Dtree
https://www.wisdomelon.com/DTreeHelper/
xmSelect
https://maplemei.gitee.io/xm-select/
TableSelect
https://gitee.com/lolicode/layui_component_tableselect