Layui前端框架常用

1,272 阅读3分钟

弹出层

1. 信息提示弹出层,默认3秒后自动消失

layer.msg('提交数据成功')

2. 信息提示确认框

layer.open({
  title: '温馨提示',
  content: '内容'
}); 

  • 如果你想单独设置您的弹出层的样式,可以给弹出层添加自己的class类名(可选项)
layer.open({
  title: '温馨提示',
  content: '内容',
  skin: 'demo-class'  // 可以设置单个弹出层的class类名
}); 
  • 也可以设置全局的弹出层的class类
//全局使用。即所有弹出层都默认采用,但是单个配置skin的优先级更高
layer.config({
  skin: 'demo-class'
})

3. 普通信息框alert

layer.alert('只想简单的提示');  

  • 关闭弹出层 layer.close(index);
layer.alert('有了回调', function(index) {
    //do something
    layer.close(index); // 关闭弹出层
});

4. 设置多个按钮的弹出层

1. 一般是使用简单的配置,如下:
layer.confirm('确定要保存数据吗?', {
    title:'温馨提示',
    btn: ['保存', '取消'], //可以无限个按钮
    yes: function(index, layero) {
        console.log('保存按钮的回调');
    }
})

2. 也可以如下设置:默认按钮是 确定 取消
layer.confirm('确定要保存数据吗?', {
    title: '温馨提示'
}, function(index) {
    //do something
    layer.close(index);
});



//比较全面的配置如下:
layer.confirm('确定要保存数据吗?', {
    btn: ['保存', '取消'], //可以无限个按钮
    yes: function(index, layero) {
        console.log('保存按钮的回调');
    },
    btn2: function(index, layero) {
        console.log('取消按钮的回调');
        //默认是关闭弹出层
    },
    cancel: function() {
        console.log('右上角关闭回调');
        //默认是关闭弹出层
    }
})

5. tips提示层

//eg1
layer.tips('只想提示地精准些', '#id');

//eg 2
$('#id').on('click', function(){
  var that = this;
  layer.tips('只想提示地精准些', that); //在元素的事件回调体中,follow直接赋予this即可
});

//eg 3
layer.tips('在上面', '#id', {
  tips: 1
});

6. layer.prompt(options, yes) - 输入层

//prompt层新定制的成员如下
{
  formType: 1, //输入框类型,支持0(文本)默认1(密码)2(多行文本)
  value: '', //初始时的值,默认空字符
  maxlength: 140, //可输入文本的最大长度,默认500
}
 
//例子1
layer.prompt(function(value, index, elem){
  alert(value); //得到value
  layer.close(index);
});
 
 
//例子2
layer.prompt({
  formType: 2,
  value: '初始值',
  title: '请输入值',
  area: ['800px', '350px'] //自定义文本域宽高
}, function(value, index, elem){
  alert(value); //得到value
  layer.close(index);
});

7. layer.tab(options) - tab层

layer.tab({
  area: ['600px', '300px'],
  tab: [{
    title: 'TAB1', 
    content: '内容1'
  }, {
    title: 'TAB2', 
    content: '内容2'
  }, {
    title: 'TAB3', 
    content: '内容3'
  }]
}); 

分页

1. html元素设置

<div class="zhuboVideoList">
    <div class="listInfo"></div> 数据列表
    <div id="paging_module" class="paging_module"></div>
    <div class="loadingEnd_module">已加载全部~</div>
</div>

2. 分页js设置

(function ($) {
  $.playBack = {
    pageObj: {
      perPage: 12, //每页显示多少条
      totalPage: 0, // 总页码
    },
    init: function () {
      $.playBack.initZhuboListInfo(0); //初始化数据列表
      $.playBack.pagingSettings();  //分页设置
    },

    //初始化数据列表
    initZhuboListInfo: function (iDisplayStart) {
      var data = {
        url: $.general.http + 'b.memberuploadvideo.uploadvideolist',
        iDisplayStart: iDisplayStart,
        iDisplayLength: $.playBack.pageObj.perPage,
      };
      $.general.AjaxRequest(data, function (res) {
        if (res.success) {
          $.playBack.pageObj.totalPage = res.data.iTotalDisplayRecords;
          var htmls = '';
          if (res.data.aaData.length > 0) {
            $.each(res.data.aaData, function (index, perObj) {
              htmls += ' <a href="" class="perItem">\n' +
                '         </a>'
            });
          } else {
            //无记录、无数据设置
            htmls += '<div class="norecord_module">\n' +
              '     <img src="/template/web/skin/default/images/norecord.svg" alt="暂无记录">\n' +
              '</div>';
          }
          $('.zhuboVideoList').find('.listInfo').append(htmls);
        } else {
          layer.open({
            title: '温馨提示'
            , content: res.reason
          });
        }
      });
    },

    //分页设置---加载更多设置
    pagingSettings: function () {
      layui.use('laypage', function () {
        var laypage = layui.laypage;
        laypage.render({
          elem: $('.zhuboVideoList').find('.paging_module'), //元素
          count: $.playBack.pageObj.totalPage, //总页数
          limit: $.playBack.pageObj.perPage, //每页显示
          next: '点击加载更多',
          layout: ['next'],
          jump: function (obj, first) {
            //首次不执行
            if (!first) {
              var iDisplayStart = $.general.getPageInfo(obj.curr, $.playBack.pageObj.perPage).iDisplayStart;
              $.playBack.initZhuboListInfo(iDisplayStart);
            }
            ////////////
            var $dom_zhuboVideoList = $('.zhuboVideoList');
            if (obj.count == 0) {
              //查询不到数据
              $dom_zhuboVideoList.find('.paging_module').hide();
              $dom_zhuboVideoList.find('.loadingEnd_module').hide();
            } else {
              if (obj.curr == obj.pages) {
                //后面没有数据了
                $dom_zhuboVideoList.find('.paging_module').hide();
                $dom_zhuboVideoList.find('.loadingEnd_module').show();
              } else {
                $dom_zhuboVideoList.find('.paging_module').show();
                $dom_zhuboVideoList.find('.loadingEnd_module').hide();
              }
            }
            //////////
          }
        });
      });
    },

    //分页设置---分页格式:123456....
    pagingSettings: function () {
      layui.use('laypage', function () {
        var laypage = layui.laypage;
        laypage.render({
          elem: $('.zhuboVideoList').find('.paging_module'), //元素
          count: $.playBack.pageObj.totalPage, //总页数
          limit: $.playBack.pageObj.perPage, //每页显示
          prev: '<',
          next: '>',
          jump: function (obj, first) {
            //首次不执行
            if (!first) {
              var iDisplayStart = $.general.getPageInfo(obj.curr, $.playBack.pageObj.perPage).iDisplayStart;
              $.playBack.initZhuboListInfo(iDisplayStart);
            }
            if (obj.count == 0 || obj.pages) {
              //查询不到数据
              $('.user_myMsg').find('.paging_module').hide();
            }
          }
        });
      });
    },


  }
})(jQuery)

3. 信息流方式的分页

1. html元素设置
<div class="user_myMsg">
  <!--消息列表-->
  <div id="msgList" class="msgList"></div>
</div>

2. 不显示加载更多设置css
.layui-flow-more {
  a {
    display: none !important;
  }
}

3. js设置
(function ($) {
  $.myMsg2 = {
    pageObj: {
      curPage: 1,
      perPage: 10, //每页显示多少条
      totalPage: 0, // 总页码
    },

    init: function () {
      $.myMsg2.msgFlowList();
    },

    //信息流 加载数据
    msgFlowList: function () {
      layui.use('flow', function () {
        var flow = layui.flow;
        flow.load({
          elem: '#msgList', //指定列表容器
          end: '<div style="display: block;" class="loadingEnd_module">已加载全部~</div>',
          mb: 10,
          done: function (page, next) { //到达临界点 mb的值(默认滚动触发),触发下一页
             $.myMsg2.getMsgInfo(page,function (dataArrayHtmls) {
                next(dataArrayHtmls.join(''), $.myMsg2.pageObj.curPage < $.myMsg2.pageObj.totalPage);
             });
          }
        });
      });
    },

    getMsgInfo:function (curPage,callback) {
      $.myMsg2.pageObj.curPage = curPage;
      var listHtmlsArray = [];
      var data = {
        url: $.general.http + 'b.notice.querysyssendmsg',
        sSorts: 'read_time,asc;send_time,desc',
        iDisplayStart: ($.myMsg2.pageObj.perPage) * ($.myMsg2.pageObj.curPage - 1),
        iDisplayLength: $.myMsg2.pageObj.perPage,
      };
      $.general.AjaxRequest(data, function (res) {
        if (res.success) {
          //设置总页数
          $.myMsg2.pageObj.totalPage = Math.ceil(res.data.iTotalDisplayRecords / $.myMsg2.pageObj.perPage);
          if (res.data.iTotalDisplayRecords > 0) {
            $('.layui-flow-more').show();
            $.each(res.data.aaData, function (index, perObj) {
              var htmls = '<div data-id=' + perObj.id + ' class="perItemMsg">\n' +
                '        <div class="title">' + perObj.msg_title + '===' + (perObj.id) + '</div>\n' +
                '        <div class="time">' + perObj.send_time + '</div>\n' +
                '</div>';
              listHtmlsArray.push(htmls);
            });
          } else {
            $('.layui-flow-more').hide();
            //无记录、无数据设置
           var  htmls = '<div class="norecord_module">' +
              '     <img style="width: 350px;" src="/template/web/skin/default/images/norecord.svg" alt="暂无记录">\n' +
              '</div>';
            listHtmlsArray.push(htmls);
          }
          callback(listHtmlsArray);
        } else {
          layer.open({
            title: '温馨提示'
            , content: res.reason
          });
        }
      }, true, null, true);
    }

  }
})(jQuery)

轮播

1. html设置

<div class="layui-carousel" id="test1">
    <div carousel-item>
        <div>条目1</div>
        <div>条目2</div>
        <div>条目3</div>
    </div>
</div>

2. js配置项

layui.use('carousel', function() {
    var carousel = layui.carousel;
    //建造实例
    carousel.render({
        elem: '#test1',
        width: '100%', //设置容器宽度
        arrow: 'always' //始终显示箭头
        //,anim: 'updown' //切换动画方式
    });
});

3. 常用参数

4. 切换事件

  • 轮播的每一次切换时触发,回调函数返回一个object参数,携带的成员如下:
var carousel = layui.carousel;
 
//监听轮播切换事件
//test1来源于对应HTML容器的 lay-filter="test1" 属性值
carousel.on('change(test1)', function(obj){ 
  console.log(obj.index); //当前条目的索引
  console.log(obj.prevIndex); //上一个条目的索引
  console.log(obj.item); //当前条目的元素对象
});     

5. 重置轮播

  • 在执行 carousel.render(options) 方法时,有返回一个当前实例的对象。该对象包含了用于操作当前轮播的一些属性和方法
var ins = carousel.render(options);
 
//重置轮播
ins.reload(options);

面包屑

  • 默认设置
<span class="layui-breadcrumb">
    <a href="">首页</a>
    <a href="">我的回音壁</a>
    <a><cite>标题内容</cite></a>
</span>
  • 通过lay-separator="-" 来自定义分隔符
<span class="layui-breadcrumb" lay-separator=">">
    <a href="">首页</a>
    <a href="">我的回音壁</a>
    <a><cite>标题内容</cite></a>
</span>