LayUI快速入门

2022-03-17 17:03:10 浏览数 (3)

一、引言

1.1 介绍

官网:https://www.layui.com/ 在官网首页,可以很方便的下载 LayUI

二、环境搭建

2.1 下载

在官网下载即可完成

下载的 LayUI 解压后,将其中的 layUI 目录导入项目中

  • 将 layui 目录放到 webapp 目录下
  • 在 JSP 中导入 layui 依赖
代码语言:javascript复制
<link rel="stylesheet" href="${pageContext.servletContext.contextPath}/layui/css/layui.css">
<script src="${pageContext.servletContext.contextPath}"></script>

代码语言:javascript复制
<link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css">
<script src="${pageContext.request.contextPath}/layui/layui.js"></script>

三、页面元素

3.1 布局

响应式栅格布局,每行分 12 等分

代码语言:javascript复制
<!--layui-container居中显示有固定的尺寸: layui-fiuid 占满行宽-->
<!--<div class="layui-container">-->
<div class="layui-fluid">
  <div class="layui-row">
    <div class="layui-col-md9 layui-col-lg6 layui-bg-orange">你的内容 9/12</div>
    <div class="layui-col-md3 layui-col-lg6 layui-bg-gray">你的内容 3/12</div>
  </div>

  <%--移动设备、平板、桌面端的不同表现:--%>
  <div class="layui-row">
    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4 layui-col-lg3">
      移动:6/12 | 平板:6/12 | 桌面:4/12;
    </div>
    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4 layui-col-lg3">
      移动:6/12 | 平板:6/12 | 桌面:4/12;
    </div>
    <div class="layui-col-xs4 layui-col-sm12 layui-col-md4 layui-col-lg3">
      移动:4/12 | 平板:12/12 | 桌面:4/12;
    </div>
    <div class="layui-col-xs4 layui-col-sm7 layui-col-md8 layui-col-lg3">
      移动:4/12 | 平板:7/12 | 桌面:8/12;
    </div>
    <div class="layui-col-xs4 layui-col-sm5 layui-col-md4 layui-col-lg3">
      移动:4/12 | 平板:5/12 | 桌面:4/12;
    </div>
  </div>
</div>

3.2 字体图标

class=”layui-icon 具体的图标样式”

代码语言:javascript复制
<i class="layui-icon layui-icon-heart-fill"></i>
<i
  class="layui-icon layui-icon-light"
  style="font-size: 30px; color: #1E9FFF;"
></i>

3.3 按钮

class=”layui-btn 主题 样式”

代码语言:javascript复制
<button type="button" class="layui-btn">标准的按钮</button>
<a href="http://www.layui.com" class="layui-btn">可跳转的按钮</a>
<a href="http://www.layui.com" class="layui-btn layui-btn-primary"
  >主题的按钮</a
>
<a href="http://www.layui.com" class="layui-btn layui-btn-primary layui-btn-sm"
  >主题的按钮</a
>
<a
  href="http://www.layui.com"
  class="layui-btn layui-btn-primary layui-btn-radius "
  >圆角的按钮</a
>
<a
  href="http://www.layui.com"
  class="layui-btn layui-btn-primary layui-btn-sm  layui-btn-radius "
>
  <i
    class="layui-icon layui-icon-heart-fill"
    style="font-size: 30px; color: #1E9FFF;"
  ></i>
  带图标的按钮
</a>

3.4 表单

class=”layui-from”

代码语言:javascript复制
<form class="layui-form" action="">
  <div class="layui-form-item">
    <label class="layui-form-label">输入框</label>
    <div class="layui-input-block">
      <input
        type="text"
        name="title"
        required
        lay-verify="required"
        placeholder="请输入标题"
        autocomplete="off"
        class="layui-input"
      />
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">密码框</label>
    <div class="layui-input-inline">
      <input
        type="password"
        name="password"
        required
        lay-verify="required"
        placeholder="请输入密码"
        autocomplete="off"
        class="layui-input"
      />
    </div>
    <div class="layui-form-mid layui-word-aux">辅助文字</div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">选择框</label>
    <div class="layui-input-block">
      <select name="city" lay-verify="required">
        <option value="">请选择城市</option>
        <option value="0">北京</option>
        <option value="1">上海</option>
        <option value="2">广州</option>
        <option value="3">深圳</option>
        <option value="4">杭州</option>
      </select>
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">复选框</label>
    <div class="layui-input-block">
      <input type="checkbox" name="like[write]" title="写作" />
      <input type="checkbox" name="like[read]" title="阅读" checked />
      <input type="checkbox" name="like[dai]" title="发呆" />
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">开关</label>
    <div class="layui-input-block">
      <input type="checkbox" name="switch" lay-skin="switch" />
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">单选框</label>
    <div class="layui-input-block">
      <input type="radio" name="sex" value="男" title="男" />
      <input type="radio" name="sex" value="女" title="女" checked />
    </div>
  </div>
  <div class="layui-form-item layui-form-text">
    <label class="layui-form-label">文本域</label>
    <div class="layui-input-block">
      <textarea
        name="desc"
        placeholder="请输入内容"
        class="layui-textarea"
      ></textarea>
    </div>
  </div>
  <div class="layui-form-item">
    <div class="layui-input-block">
      <button class="layui-btn layui-btn-lg" lay-submit lay-filter="formDemo">
        立即提交
      </button>
      <button type="button" class="layui-btn" id="test1">
        <i class="layui-icon">&#xe67c;</i>上传图片
      </button>
    </div>
  </div>
</form>
<script>
  // 必须要导入form模块,才能保证表单正常渲染
  layui.use("form", function () {
    var form = layui.form;
    //监听提交
    form.on("submit(formDemo)", function (data) {
      // data就是表单中的所有数据
      layer.msg(JSON.stringify(data.field));
      return false;
    });
  });
</script>

3.5 数据表格

3.5.1 动态表格

动态表格

代码语言:javascript复制
<table id="demo" lay-filter="test"></table>
<script>
  // 必须要导入 table模块 layui.use('table',...)
  layui.use("table", function () {
    var table = layui.table;
    // 为表格填充数据
    table.render({
      elem: "#demo",
      height: 312,
      url: "${pageContext.request.contextPath}/data.jsp", //获取数据
      page: true, // 开启分页
      cols: [
        [
          //表头
          { field: "id", title: "ID", sort: true },
          { field: "username", width: 80, title: "用户名" },
          { field: "sex", width: 80, title: "性别", sort: true },
          { field: "city", title: "城市" }, //没定义宽度则占满剩余所有宽度,都不定义则所有列均分
          { field: "score", width: 80, title: "评分", sort: true },
          { field: "right", title: "操作", toolbar: "#barDemo" },
        ],
      ],
    });
  });
</script>

数据格式如下:

  • code: 0 代表查询成功, 为 1 是, 会显示 msg 中的内容
  • count 是为了分页准备的,共有多少条数据
代码语言:javascript复制
// 格式如下:
{
  "msg": "no data",
  "code": 0,
  "data": [
    {
      "id": 1,
      "username": "shine1",
      "sex": "男",
      "city": "保定",
      "score": 100
    },
    {
      "id": 2,
      "username": "shine2",
      "sex": "女",
      "city": "石家庄",
      "score": 100
    },
    { "id": 3, "username": "shine3", "sex": "男", "city": "邢台", "score": 100 }
  ],
  "count": 100
}
3.5.2 分页参数

分页条细节定制

代码语言:javascript复制
<table id="demo" lay-filter="test"></table>
<script>
  // 必须要导入 table模块 layui.use('table',...)
  layui.use('table', function(){
      var table = layui.table;
      // 为表格填充数据
      table.render({
          elem: '#demo'
          ,height: 312
          ,url: '${pageContext.request.contextPath}/data.jsp' //获取数据
          ,page: {limit:1//每页显示1条
                  ,limits:[1,2,3] //可选每页条数
                  ,first: '首页' //首页显示文字,默认显示页号
                  ,last: '尾页'
                  ,prev: '<em>←</em>' //上一页显示内容,默认显示 > <
                  ,next: '<i class="layui-icon layui-icon-next"></i>'
                  ,layout:['prev', 'page', 'next','count','limit','skip','refresh'] //自定义分页布局
                 } //开启分页
          ,cols: [[.....]]
      });
  });
</script>
3.5.3 显示工具栏

右上角工具按钮 toolbar:true

代码语言:javascript复制
<script>
  // 必须要导入 table模块 layui.use('table',...)
  layui.use('table', function(){
      var table = layui.table;
      // 为表格填充数据
      table.render({
          elem: '#demo'
          ,height: 312
          ,toolbar:true
          ,url: '${pageContext.request.contextPath}/data.jsp' //获取数据
          ,page: {...} //开启分页
          ,cols: [[...]]
      });
  });
</script>
3.5.4 操作按钮

为每行增加操作按钮

代码语言:javascript复制
<table id="demo" lay-filter="test"></table>
<script>
  // 必须要导入 table模块 layui.use('table',...)
  layui.use("table", function () {
    var table = layui.table;
    // 为表格填充数据
    table.render({
      elem: "#demo",
      height: 312,
      toolbar: true,
      url: "${pageContext.request.contextPath}/data.jsp", //获取数据
      cols: [
        [
          //表头
          { field: "id", title: "ID", sort: true },
          { field: "username", width: 80, title: "用户名" },
          { field: "sex", width: 80, title: "性别", sort: true },
          { field: "city", title: "城市" }, //没定义宽度则占满剩余所有宽度,都不定义则所有列均分
          { field: "score", width: 80, title: "评分", sort: true },
          { field: "right", title: "操作", toolbar: "#barDemo" },
        ],
      ],
    });
  });
</script>
<!-- 如下script可以定义在页面的任何位置 -->
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
3.5.5 操作按钮回调

按钮的单击事件

代码语言:javascript复制
// 事件注册
table.on("tool(test)", function (obj) {
  var data = obj.data; //获得当前行数据
  //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
  var layEvent = obj.event;
  var tr = obj.tr; //获得当前行 tr 的 DOM 对象(如果有的话)
  if (layEvent === "del") {
    //删除
    layer.confirm("真的删除行么", function (index) {
      // 向服务端发送删除请求
      // 此处可以发送ajax
      obj.del(); //删除对应行(tr)的DOM结构
      layer.close(index);
    });
  } else if (layEvent === "edit") {
    //编辑
    // 向服务端发送更新请求
    // 同步更新缓存对应的值
    obj.update({
      username: "shine001",
      city: "北京",
      sex: "女",
      score: 99,
    });
  }
});

3.6 导航

导航条

  • class = “layui-nav” 水平导航条
  • class=”layui-nav layui-tree” 垂直导航条
代码语言:javascript复制
<ul class="layui-nav" lay-filter="">
  <li class="layui-nav-item"><a href="">最新活动</a></li>
  <li class="layui-nav-item layui-this"><a href="">产品</a></li>
  <li class="layui-nav-item"><a href="">大数据</a></li>
  <li class="layui-nav-item">
    <a href="javascript:;">解决方案</a>
    <dl class="layui-nav-child">
      <!-- 二级菜单 -->
      <dd><a href="">移动模块</a></dd>
      <dd><a href="">后台模版</a></dd>
      <dd><a href="">电商平台</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="">社区</a></li>
</ul>
<script>
  //注意:导航 依赖 element 模块,否则无法进行功能性操作
  layui.use("element", function () {});
</script>

3.7 动画

LayUI 提供动画支持

样式表

描述

layui-anim-up

从最底层往上滑入

layui-anim-upbit

微微往上滑入

layui-anim-scale

平滑放大

layui-anim-scaleSpring

弹簧式放大

layui-anim-fadein

渐现

layui-anim-fadeout

渐隐

layui-anim-rotate

360 度旋转

追加:layui-anim-loop

循环动画

代码语言:javascript复制
<!-- 整个div会在页面显示时,以特定动画显示出来 -->
<div class="layui-anim layui-anim-up" style="height: 100px">aa</div>
<!-- 额外添加样式类:layui-anim-loop 使得动画循环运行 -->
<div
  class="layui-anim layui-anim-rotate layui-anim-loop"
  style="text-align:center;line-height: 100px;margin-left:50px;height: 100px;width:100px"
>
  bb
</div>

四、内置模块

4.1 layer

4.1.1 弹窗方法

弹窗 msg()、alert()、confirm()

代码语言:javascript复制
<script>
  // 导入 layer模块
  layui.use(["layer"],function(){
      var layer = layui.layer;
      layer.msg("hello world!!");
      layer.msg("确定吗?",{btn:["确定!","放弃!"],
                        yes:function(i){layer.close(i);layer.msg("yes!!!")},
                        btn2:function(i){layer.close(i);layer.msg("no!!!")}}
               );
</script>
代码语言:javascript复制
<script>
        // 导入 layer模块
        layui.use(["layer"],function(){
            var layer = layui.layer;
            //0-6 7种图标  0:warning  1:success  2:error  3:question  4:lock  5:哭脸  6:笑脸
            layer.alert("alert弹框蓝",
                {title:'alert',icon:6 },
                function(){//点击“确定”按钮时的回调
                    layer.msg("好滴");
                }
            );
</script>
代码语言:javascript复制
<script>
  // 导入 layer模块
  layui.use(["layer"],function(){
  var layer = layui.layer;
  layer.confirm("你确定要删除吗?",
      {shade:false,icon:3,btn:["好滴","不行"]},
      function(){layer.msg("好滴!");},
      function(){layer.msg("不行!")}
   );
</script>
4.1.2 弹窗属性

  • type 弹窗类型,可选值 0-4
  • title 弹窗标题, 可选值 text/array
  • content 弹窗内容, 可选值 text/html/dom
代码语言:javascript复制
<script>
  // 导入 layer模块
  layui.use(["layer"], function () {
    var layer = layui.layer;
    layer.open({
      type: 1, // 消息框,没有确定按钮
      title: ["hello", "padding-left:5px"], // 标题,及标题样式
      content: layui.$("#testmain"), // dom格式
      offset: "rb", //可以在右下角显示
      shade: false, //是否遮罩
    });

    layer.open({
      type: 2, // iframe加载,需要一个url
      content: "${pageContext.request.contextPath}/XX",
    });
  });
</script>
<div
  id="testmain"
  style="display:none;padding:10px; height: 173px; width: 275px;"
>
  hello world!
</div>

4.2 layDate

日期框

代码语言:javascript复制
<form class="layui-form layui-form-pane" action="" method="post">
  <!-- layui-form-item 一个输入项-->
  <div class="layui-form-item">
    <label class="layui-form-label">生日</label>
    <!-- layui-input-block 输入框会占满除文字外的整行 -->
    <div class="layui-input-block">
      <input
        readonly
        id="birth"
        type="text"
        name="birth"
        placeholder="请选择生日日期"
        autocomplete="off"
        class="layui-input"
      />
    </div>
  </div>
</form>
<script>
  layui.use(["laydate", "form"], function () {
    var laydate = layui.laydate;
    var upload = layui.upload;
    var layer = layui.layer;
    //执行一个laydate实例
    laydate.render({
      elem: "#birth", //指定元素
      format: "yyyy/MM/dd",
      value: "2012/12/12", //默认值
      // value:new Date() //默认值
    });
  });
</script>

4.3 upload

上传按钮

代码语言:javascript复制
<form class="layui-form layui-form-pane" action="" method="post">
  <div class="layui-form-item">
    <div class="layui-input-block">
      <button class="layui-btn layui-btn-lg" lay-submit lay-filter="formDemo">
        立即提交
      </button>
      <button type="button" class="layui-btn" id="test1">
        <i class="layui-icon">&#xe67c;</i>上传图片
      </button>
    </div>
  </div>
</form>
<script>
  layui.use(["upload", "layer"], function () {
    var upload = layui.upload;
    var layer = layui.layer;
    //执行一个laydate实例
    laydate.render({
      elem: "#birth", //指定元素
      format: "yyyy/MM/dd",
      value: "2012/12/12", //默认值
      // value:new Date() //默认值
    });
    //执行实例
    var uploadInst = upload.render({
      elem: "#test1", //绑定元素
      url: "/data.jsp", //上传接口
      //,accept:'images' // file代表所有文件,默认是images代表图片
      size: 100, // 文件最大100kb
      done: function (res) {
        //上传完毕回调
        layer.msg("ok");
      },
      error: function () {
        //请求异常回调
        layer.msg("error");
      },
    });
  });
</script>

4.4 carousel

轮播图

代码语言:javascript复制
<div class="layui-carousel" id="test1">
  <div carousel-item style="text-align: center;line-height: 280px">
    <div>条目1</div>
    <div>条目2</div>
    <div>条目3</div>
    <div>条目4</div>
    <div>条目5</div>
  </div>
</div>
<script>
  layui.use(["carousel"], function () {
    var carousel = layui.carousel;
    //建造实例
    carousel.render({
      elem: "#test1",
      width: "100%", //设置容器宽度
      arrow: "always", //始终显示箭头
    });
  });
</script>

1 人点赞