最细致的LayUI【前端框架】从入门到实战-快速搭建后台管理系统

最细致的LayUI【前端框架】从入门到实战-快速搭建后台管理系统

LayUI学习思维导图
在这里插入图片描述

Bootstrap 有些相似,但该框架有个极大的好处就是定义了很多前后端交互的样式接口,如分页表格,只需在前端配置好接口,后端则按照定义好的接口规则返回数据,即可完成页面的展示,极大减少了后端人员的开发成本。




一、下载与使用

  • 官网:https://www.layui.com/

  • 点击立即下载即可

  • 下载完成后解压,我们看以下其目录结构,并将其完整的拷贝到我们自己的项目下。
    在这里插入图片描述

  • 使用时我们只需引入下述两个文件即可使用

在这里插入图片描述

<!-- LayUI的核心css文件 -->
<link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
<!-- layUI的核心js文件(采用模块化引入) -->
<script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8">
  • 这是一个基本的入门页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-layui的使用</title>
    <!-- LayUI的核心css文件 -->
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <!-- layUI的核心js文件(采用模块化引入) -->
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>

    <script>
        //一版直接写在一个js文件中
        layui.use(['layer', 'form'], function(){
            var layer = layui.layer;
            var form = layui.form;

            layer.msg('Hello World');
        });
    </script>

</body>
</html>




二、布局

1.1 布局容器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02-布局容器</title>
    <!-- 引入layui的核心css文件 -->
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
</head>
<body>

    <!--
        布局容器
            1.固定宽度(两侧留白效果).layui-container 用的多
            2.完整宽度(占据屏幕宽度的100%).layui-fluid
    -->

    <!-- 固定宽度(两侧留白效果) -->
    <div class="layui-container" style="background-color: navajowhite;height: 300px">
        固定宽度
    </div>

    <!-- 完整宽度(占据屏幕宽度的100%) -->
    <div class="layui-fluid" style="background-color: cyan;height: 300px">
        固定宽度
    </div>


</body>
</html>



1.2 栅格系统

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03-栅格系统.</title>
    <!-- 引入layui的核心css文件 -->
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
</head>
<body>

    <!--
        栅格系统
            列组合:
                1.定义行   .layui-row
                2.定义列   .layui-col-md*
                    md 表示不同屏幕的标识 (xs sm md lg)
                    * 列的数量
                3.每一行被均分为12列,列的总数不能超过12,否则会自动换行
                4.响应式规则
                    栅格会自动根据屏幕的分辨率选择对应的效果。

            列边距
                .layui-col-space*
                    * 代表的是px值 (1-30)

            列偏移
                将列向右偏移指定列数
                .*layui-col-md-offset*‘
                    *代表的是列数

            列嵌套
                列之间可以无限嵌套
    -->

    <!-- 布局容器:固定宽度 -->
    <div class="layui-container">
        <!-- 定义行 -->
        <div class="layui-row">
            <!-- 定义列 -->
            <div class="layui-col-md5" style="background-color: deepskyblue">
                内容5/12
            </div>
            <div class="layui-col-md7" style="background-color: bisque">
                内容7/12
            </div>
        </div>

        <!-- 定义行 -->
        <div class="layui-row">
            <!-- 定义列 -->
            <div class="layui-col-md4" style="background-color: powderblue">
                内容4/12
            </div>
            <div class="layui-col-md4" style="background-color: mediumaquamarine">
                内容4/12
            </div>
            <div class="layui-col-md6" style="background-color: gray">
                内容6/12
            </div>
        </div>

        <!--响应式-->
        <hr>
        <h3>平板、桌面端的不同表现:</h3>
        <div class="layui-row">
            <!-- 小屏幕占6列,中屏幕占4列 -->
            <div class="layui-col-sm6 layui-col-md4" style="background-color: thistle">
                平板≥768px:6/12 | 桌面端≥992px:4/12
            </div>
        </div>
        <div class="layui-row">
            <!-- 小屏幕占4列,中屏幕占6列 -->
            <div class="layui-col-sm4 layui-col-md6" style="background-color: mediumaquamarine;">
                平板≥768px:4/12 | 桌面端≥992px:6/12
            </div>
        </div>
        <div class="layui-row">
            <!-- 小屏幕占12列,中屏幕占8列 -->
            <div class="layui-col-sm12 layui-col-md8" style="background-color: coral">
                平板≥768px:12/12 | 桌面端≥992px:8/12
            </div>
        </div>


        <hr>
        <h3>列边距</h3>
        <div class="layui-row layui-col-space10">
            <div class="layui-col-md4">
                <div  style="background-color: hotpink">4</div>
            </div>
            <div class="layui-col-md4">
                <div  style="background-color: indianred">4</div>
            </div>
            <div class="layui-col-md4">
                <div  style="background-color: powderblue">4</div>
            </div>
        </div>


        <hr/>
        <h3>列偏移</h3>
        <div class="layui-row">
            <div class="layui-col-md4">
                <div  style="background-color: cyan">4</div>
            </div>
            <div class="layui-col-md4 layui-col-md-offset4">
                <div  style="background-color: fuchsia">4
                    向右移动4列
                </div>
            </div>
        </div>


        <hr/>
        <h3>列嵌套</h3>
        <div class="layui-row">
            <div class="layui-col-md6">
                <div  style="background-color: mediumaquamarine">
                    <div class="layui-row">
                        <!-- 嵌套列 -->
                        <div class="layui-col-md3" style="background-color: burlywood;">
                            内部列
                        </div>
                        <div class="layui-col-md5" style="background-color: indianred;">
                            内部列
                        </div>
                        <div class="layui-col-md2" style="background-color: red;">
                            内部列
                        </div>
                    </div>

                </div>
            </div>
        </div>

    </div>

</body>
</html>

在这里插入图片描述




三、按钮

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>04-按钮</title>

    <!-- 引入layui的核心css文件 -->
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
</head>
<>

    <!--
        按钮:
            向任意html元素设定 *class="layui-btn"*,建立一个基础按钮
            通过追加格式为*layui-btn-{type}* 的class来定义其他按钮风格。
    -->
    <div class="layui-container">
        <!-- 基础按钮 -->
        <button type="button" class="layui-btn">一个标准的按钮</button>
        <a href="http://www.layui.com" class="layui-btn">一个可跳转的按钮</a>
        <div class="layui-btn">一个按钮</div>

        <hr>
        <!-- 不同主题的按钮:颜色 -->
        <button class="layui-btn">默认按钮</button>
        <button class="layui-btn layui-btn-primary">原始按钮</button>
        <button class="layui-btn layui-btn-normal">百搭按钮</button>
        <button class="layui-btn layui-btn-warm">暖色按钮</button>
        <button class="layui-btn layui-btn-danger">警告按钮</button>
        <button class="layui-btn layui-btn-disabled">禁用按钮</button>

        <hr>
        <!-- 不同尺寸的按钮 -->
        <button class="layui-btn layui-btn-primary layui-btn-lg">大型原始按钮</button>
        <button class="layui-btn">默认按钮</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger">小型警告按钮</button>
        <button class="layui-btn layui-btn-xs">迷你按钮</button>
        <button type="button" class="layui-btn layui-btn-fluid">流体按钮(最大化适应)</button>

        <hr>
        <!-- layui-btn-radius 圆角按钮 -->
        <button class="layui-btn layui-btn-radius">默认圆角按钮</button>
        <button class="layui-btn layui-btn-primary layui-btn-radius">原始圆角按钮</button>
        <button class="layui-btn layui-btn-normal layui-btn-radius">百搭圆角按钮</button>
        <button class="layui-btn layui-btn-warm layui-btn-radius">暖色圆角按钮</button>
        <button class="layui-btn layui-btn-danger layui-btn-radius">警告圆角按钮</button>
        <button class="layui-btn layui-btn-disabled layui-btn-radius">禁用圆角按钮</button>

        <hr>
        <!-- 图标按钮 -->
        <button type="button" class="layui-btn">
            <i class="layui-icon">&#xe608;</i> 添加
        </button>
        <button type="button" class="layui-btn layui-btn-sm layui-btn-primary">
            <i class="layui-icon">&#x1002;</i> 刷新
        </button>
        <button type="button" class="layui-btn layui-btn-sm layui-btn-warm">
            <i class="layui-icon layui-icon-heart"></i> 关注
        </button>

    </div>


</body>
</html>

在这里插入图片描述




四、导航 +js

  • 导航一般应用于头部和侧边,是整个网页画龙点晴般的存在

  • 依赖加载模块:element

实现步骤:

  1. 引入的资源
<link rel="stylesheet" type="text/css" href="layui-v2.5.6/layui/css/layui.css"/>
<script src="layui-v2.5.6/layui/layui.js" type="text/javascript" charset="utf-8"></script>
  1. 依赖加载模块
<script type="text/javascript">    
    // 导航 依赖element模块,否则无法进行功能性操作    
    layui.use('element',function(){        
        var element = layui.element;    
    });					
</script>



4.1 水平导航

  • 给一个无序列表 ul 添加 class=“layui-nav”
  • 给 li 添加 class=“layui-nav-item” 表示的是导航的子项
  • 给 li 添加 class=“layui-this” 表示当前被选中的项
  • 给 li 里面容器添加 class=“layui-nav-child” 表示的是二级菜单
<body>
    <!-- 
		水平导航	layui-nav
					layui-nav-item 表示的是导航的子项
					layui-this 表示当前被选中的项
					layui-nav-child 表示的是二级菜单
	 -->
    <!-- 水平导航 layui-nav -->
    <ul class="layui-nav">
        <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="">解决方案</a>
            <!--二级菜单-->
            <dl class="layui-nav-child">
                <dd><a href="">移动模块</a></dd>
                <dd><a href="">后台模块</a></dd>
                <dd><a href="">电商平台</a></dd>
            </dl>
        </li>
    </ul>

    <script type="text/javascript">
        // 导航 依赖element模块
        layui.use('element', function() {
            var element = layui.element;
        });
    </script>
</body>

在这里插入图片描述


①图片与徽章

除了一般的文字导航,我们还内置了图片和徽章的支持,如:

<body>
    <!-- 
		水平导航	layui-nav
					layui-nav-item 表示的是导航的子项
					layui-this 表示当前被选中的项
					layui-nav-child 表示的是二级菜单
	 -->
    
    <!-- 水平导航 -->
    <ul class="layui-nav">
        <!-- 导航的子项 -->
        <li class="layui-nav-item">

            <a href="">控制台<span class="layui-badge">9</span></a>
        </li>
        <!-- 导航的子项 -->
        <li class="layui-nav-item">
            <a href="">个人中心<span class="layui-badge-dot"></span></a>
        </li>
        <!-- 导航的子项 -->
        <li class="layui-nav-item">
            <a href=""><img src="//t.cn/RCzsdCq" class="layui-nav-img"></a>
            <dl class="layui-nav-child">
                <dd><a href="#">修改信息</a></dd>
                <dd><a href="#">安全管理</a></dd>
                <dd><a href="#">退出</a></dd>
            </dl>
        </li>
    </ul>


    <script type="text/javascript">
        // 导航 依赖element模块
        layui.use('element', function() {
            var element = layui.element;
        });
    </script>
</body>

在这里插入图片描述



4.2 导航主题

通过对导航追加CSS背景类,让导航呈现不同的主题色

  • 给无序列表 ul 添加 class=“layui-nav layui-bg-green” 可设置墨绿色背景的导航
  • 水平导航支持其他的背景主题有:layui-bg-cyan(藏青)、layui-bg-molv(墨绿)、layui-bg-blue(艳蓝)
  • 垂直导航支持的其他背景颜色有:layui-bg-cyan (藏青)
<body>
    <!-- 墨绿 -->
    <ul class="layui-nav layui-bg-green">
        <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="">解决方案</a>
            <!--二级菜单-->
            <dl class="layui-nav-child">
                <dd><a href="">移动模块</a></dd>
                <dd><a href="">后台模块</a></dd>
                <dd><a href="">电商平台</a></dd>
            </dl>
        </li>
    </ul>

    <hr>
    <!-- 藏青 -->
    <ul class="layui-nav layui-bg-cyan">
        <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="">解决方案</a>
            <!--二级菜单-->
            <dl class="layui-nav-child">
                <dd><a href="">移动模块</a></dd>
                <dd><a href="">后台模块</a></dd>
                <dd><a href="">电商平台</a></dd>
            </dl>
        </li>
    </ul>

    <!-- 艳蓝 -->
    <hr>
    <ul class="layui-nav layui-bg-blue">
        <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="">解决方案</a>
            <!--二级菜单-->
            <dl class="layui-nav-child">
                <dd><a href="">移动模块</a></dd>
                <dd><a href="">后台模块</a></dd>
                <dd><a href="">电商平台</a></dd>
            </dl>
        </li>
    </ul>


    <script type="text/javascript">
        // 导航 依赖element模块
        layui.use('element', function() {
            var element = layui.element;
        });
    </script>
</body>

在这里插入图片描述



4.3 垂直导航

  • 给无序列表 ul 添加 class=“layui-nav layui-nav-tree”
  • 给 li 添加 class=“layui-nav-item layui-nav-itemed” 表示此子项目是默认展开的
<!-- 垂直导航 layui-nav layui-nav-tree  -->
<ul class="layui-nav layui-nav-tree">
    <li class="layui-nav-item  layui-nav-itemed">
        <a href="#">默认展开</a>
        <dl class="layui-nav-child">
            <dd><a href="#">选项1</a></dd>
            <dd><a href="#">选项2</a></dd>
            <dd><a href="">跳转</a></dd>
        </dl>
    </li>
    <li class="layui-nav-item layui-nav-itemed">
        <a href="#">解决方案</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>
    <li class="layui-nav-item"><a href="">大数据</a></li>
</ul>

在这里插入图片描述



4.4 侧边导航

  • 给无序列表 ul 添加 class=“layui-nav layui-nav-tree layui-nav-side”
  • 设定layui-this来指向当前页面分类。
<!-- 侧边导航: <ul class="layui-nav layui-nav-tree layui-nav-side"> -->
<ul class="layui-nav layui-nav-tree layui-nav-side">
    <li class="layui-nav-item  layui-nav-itemed">
        <a href="#">默认展开</a>
        <dl class="layui-nav-child">
            <dd><a href="#">选项1</a></dd>
            <dd><a href="#">选项2</a></dd>
            <dd><a href="">跳转</a></dd>
        </dl>
    </li>
    <li class="layui-nav-item layui-nav-itemed">
        <a href="#">解决方案</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 layui-this"><a href="">产品</a></li>
    <li class="layui-nav-item"><a href="">大数据</a></li>
</ul>

在这里插入图片描述



4.5 总结

水平、垂直、侧边三个导航的 HTML 结构是完全一样的,不同的是

水平导航:class="layui-nav"

垂直导航需要追加:class="layui-nav-tree"

侧边导航需要追加:class="layui-nav-tree layui-nav-side"



4.6 面包屑导航

  • 给 span 标签 添加 layui-breadcrumb
<span class="layui-breadcrumb">
  <a href="">首页</a>
  <a href="">国际新闻</a>
  <a href="">亚太地区</a>
  <a><cite>正文</cite></a>
</span>
  • 我们还可以通过设置属性 lay-separator="-" 来自定义分隔符
<div class="layui-container">
    <!-- 面包屑式导航 -->
    <span class="layui-breadcrumb">
        <a href="">首页</a>
        <a href="">国际新闻</a>
        <a href="">亚太地区</a>
        <a><cite>正文</cite></a>
      </span>
    <hr>
    <!-- 设置属性 lay-separator="" 来自定义分隔符 -->
    <span class="layui-breadcrumb" lay-separator="-">
        <a href="">首页</a>
        <a href="">国际新闻</a>
        <a href="">亚太地区</a>
        <a><cite>正文</cite></a>
      </span>
    <hr>
    <span class="layui-breadcrumb" lay-separator="|">
        <a href="">娱乐</a>
        <a href="">八卦</a>
        <a href="">体育</a>
        <a href="">搞笑</a>
        <a href="">视频</a>
        <a href="">游戏</a>
        <a href="">综艺</a>
      </span>
</div>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>05-导航</title>
    <!-- 引入layui的核心css文件 -->
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>

    <!--
        导航
            水平导航 layui-nav
                layui-nav-item 表示的是导航的子项
                layui-this    表示当前被选中的项
				layui-nav-child 表示的是二级菜单

            垂直导航    layui-nav layui-nav-tree
            侧边导航    layui-nav layui-nav-tree layui-nav-side
                导航的主题颜色
                    layui-bg-颜色
                        墨绿 molv
                        藏青 cyan
                        艳蓝 blue

            面包屑式导航
                layui-breadcrumb
                lay-separator="-" 符号设置面包屑导航符的分割符

     -->
    <!-- 水平导航 layui-nav -->
    <ul class="layui-nav ">
        <li class="layui-nav-item"><a href="#">最新活动</a></li>
        <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>
            <dl class="layui-nav-child">
                <dd><a href="#">最新活动</a></dd>
                <dd><a href="#">后台模块</a></dd>
                <dd><a href="#">电商平台</a></dd>
            </dl>

        </li>

    </ul>

    <!-- 垂直导航 layui-nav layui-nav-tree -->
    <ul class="layui-nav layui-nav-tree">
        <li class="layui-nav-item"><a href="#">最新活动</a></li>
        <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>
            <dl class="layui-nav-child">
                <dd><a href="#">最新活动</a></dd>
                <dd><a href="#">后台模块</a></dd>
                <dd><a href="#">电商平台</a></dd>
            </dl>

        </li>
    </ul>

    <!-- 侧边导航 layui-nav layui-nav-tree layui-nav-side -->
    <ul class="layui-nav layui-nav-tree layui-nav-side">
        <li class="layui-nav-item"><a href="#">最新活动</a></li>
        <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>
            <dl class="layui-nav-child">
                <dd><a href="#">最新活动</a></dd>
                <dd><a href="#">后台模块</a></dd>
                <dd><a href="#">电商平台</a></dd>
            </dl>

        </li>
    </ul>



    <!-- 设置导航的主题颜色 -->
    <ul class="layui-nav layui-nav-tree layui-nav-side layui-bg-cyan">
        <li class="layui-nav-item"><a href="#">最新活动</a></li>
        <li class="layui-nav-item"><a href="#">产品<span class="layui-badge">6</span></a></li>
        <li class="layui-nav-item layui-this"><a href="#">大数据</a></li>
        <li class="layui-nav-item">
            <a href="#">解决方案</a>
            <dl class="layui-nav-child">
                <dd><a href="#">最新活动</a></dd>
                <dd><a href="#">后台模块</a></dd>
                <dd><a href="#">电商平台</a></dd>
            </dl>

        </li>
    </ul>


    <!--面包屑式导航-->
    <span class="layui-breadcrumb">
        <a href="#">首页</a>
        <a href="#">国际新闻</a>
        <a href="#">亚太地区</a>
        <a href="#"><cite>正文</cite></a>
    </span>

    <hr>
    <!-- 面包屑式导航 -->
    <span class="layui-breadcrumb" lay-separator="-">
        <a href="#">首页</a>
        <a href="#">国际新闻</a>
        <a href="#">亚太地区</a>
        <a href="#"><cite>正文</cite></a>
    </span>

    <hr>
    <!--设置属性 lay-separator="" 来自定义分隔符 -->
    <span class="layui-breadcrumb" lay-separator="|">
        <a href="#">首页</a>
        <a href="#">国际新闻</a>
        <a href="#">亚太地区</a>
        <a href="#"><cite>正文</cite></a>
    </span>



    <script type="text/javascript">
        //导航 依赖element模块
        layui.use('element',function () {
            var element = layui.element;
        })

    </script>

</body>
</html>




五、选项卡

  • 导航菜单可应用于头部和侧边,Tab选项卡提供多套风格,支持响应式,支持删除选项卡等功能。
  • 依赖加载模块:element

实现步骤:

  1. 引入的资源
<link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
<script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"</script>
  1. 依赖加载模块
<script type="text/javascript">
    // 注意:选项卡 依赖 element 模块,否则无法进行功能性操作
    layui.use('element', function(){
        var element = layui.element;

    });
</script>



5.1 选项卡风格

  • 默认风格给容器添加 class=“layui-tab”

  • 简洁风格给容器追加:class=“layui-tab-brief”

  • 卡片风格给容器需要追加:class=layui-tab-card

  • ==lay-allowClose=“true”==设置可删除标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>06-选项卡</title>
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>

    <!--
        选项卡
            默认风格: layui-tab
            简洁风格需要追加class: layui-tab-brief
            卡片风格需要追加class: layui-tab-card
            可以对父容器设置属性 layui-allowClose="true" 来允许Tab选项卡被删除
    -->

    <!-- 默认风格 .layui-tab-->
    <div class="layui-tab">
        <!-- 设置选项卡标题 .layui-tab-title -->
        <ul class="layui-tab-title">
            <li>网站设置</li>
            <li>用户管理</li>
            <li class="layui-this">权限分配</li>
            <li>商品管理</li>
            <li>订单管理</li>
        </ul>
        <!-- 设置选项卡的内容 .layui-tab-content -->
        <div class="layui-tab-content">
            <div class="layui-tab-item">内容1</div>
            <div class="layui-tab-item">内容2</div>
            <!-- 默认显示此内容 -->
            <div class="layui-tab-item layui-show">内容3</div>
            <div class="layui-tab-item">内容4</div>
            <div class="layui-tab-item">内容5</div>
        </div>
    </div>

    <hr>
    <!-- 简洁风格:layui-tab layui-tab-brief -->
    <div class="layui-tab layui-tab-brief">
        <!-- 设置选项卡标题 .layui-tab-title -->
        <ul class="layui-tab-title">
            <li>网站设置</li>
            <li>用户管理</li>
            <li class="layui-this">权限分配</li>
            <li>商品管理</li>
            <li>订单管理</li>
        </ul>
        <!-- 设置选项卡的内容 .layui-tab-content -->
        <div class="layui-tab-content">
            <div class="layui-tab-item">内容1</div>
            <div class="layui-tab-item">内容2</div>
            <!-- 默认显示此内容 -->
            <div class="layui-tab-item layui-show">内容3</div>
            <div class="layui-tab-item">内容4</div>
            <div class="layui-tab-item">内容5</div>
        </div>
    </div>

    <hr>
    <!-- 卡片风格:layui-tab layui-tab-card -->
    <div class="layui-tab layui-tab-card">
        <!-- 设置选项卡标题 .layui-tab-title -->
        <ul class="layui-tab-title">
            <li>网站设置</li>
            <li>用户管理</li>
            <li class="layui-this">权限分配</li>
            <li>商品管理</li>
            <li>订单管理</li>
        </ul>
        <!-- 设置选项卡的内容 .layui-tab-content -->
        <div class="layui-tab-content">
            <div class="layui-tab-item">内容1</div>
            <div class="layui-tab-item">内容2</div>
            <!-- 默认显示此内容 -->
            <div class="layui-tab-item layui-show">内容3</div>
            <div class="layui-tab-item">内容4</div>
            <div class="layui-tab-item">内容5</div>
        </div>
    </div>


    <hr>
    <!-- 卡片风格:layui-tab layui-tab-card -->
    <div class="layui-tab layui-tab-card" lay-allowClose="true">
        <!-- 设置选项卡标题 .layui-tab-title -->
        <ul class="layui-tab-title">
            <li>网站设置</li>
            <li>用户管理</li>
            <li class="layui-this">权限分配</li>
            <li>商品管理</li>
            <li>订单管理</li>
        </ul>
        <!-- 设置选项卡的内容 .layui-tab-content -->
        <div class="layui-tab-content">
            <div class="layui-tab-item">内容1</div>
            <div class="layui-tab-item">内容2</div>
            <!-- 默认显示此内容 -->
            <div class="layui-tab-item layui-show">内容3</div>
            <div class="layui-tab-item">内容4</div>
            <div class="layui-tab-item">内容5</div>
        </div>
    </div>


    <script type="text/javascript">
        //选项卡 依赖element模块
        layui.use('element',function () {
            var element = layui.element;
        })

    </script>

</body>
</html>

在这里插入图片描述



六、表格

6.1 常规用法

  1. 给 table 标签增加 class=“layui-table”

  2. 在colgroup 标签中定义表格列的宽度

    • <col width="数值"> 表示相应列所占的宽度
  3. thead 标签表示表格的头部区域

    • tr 标签用于定义表格中的行(行头)
      • th 标签用于定义表格中的表头(列头)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>07-表格</title>

    <!--不需要依赖js-->
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
</head>
<body>

    <!--
        表格
            class="layui-table"
            常用属性
                lay-even 如果设置了该属性,则可以显示隔行换色的效果
                lay-skin 设置表格边框风格
                    line (行边框风格)
                    row (列边框风格)
                    nob (无边框风格)

                lay-size (设置表格的尺寸)
                    sm (小尺寸)
                    lg (大尺寸)
     -->


    <!-- 基础表格 .layui-table -->
    <table class="layui-table">
        <colgroup>
            <!-- 第一列宽 150px 第二列宽300px 第三列宽自适应100% -->
            <col width="150">
            <col width="300">
            <col>
        </colgroup>
        <!-- thead 标签表示表格的头部区域,其内部必须拥有 tr 标签, tr标签一般位于第一行 -->
        <thead>
        <!-- tr用于定义表格中的行,必须嵌套在 table 中 -->
        <tr>
            <!-- th 用于定义表格中的表头,必须嵌套在 tr 中 -->
            <th>昵称</th>
            <th>加入时间</th>
            <th>签名</th>
        </tr>
        </thead>

        <tbody>
        <tr>
            <td>贤心</td>
            <td>2016-11-29</td>
            <td>人生就像是一场修行</td>
        </tr>
        <tr>
            <td>许闲心</td>
            <td>2016-11-28</td>
            <td>于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…</td>
        </tr>
        </tbody>
    </table>


    <hr>
    <!-- 隔行变色 lay-even -->
    <table class="layui-table" lay-even lay-skin="row" lay-size="">
        <colgroup>
            <!-- 第一列宽 150px 第二列宽300px 第三列宽自适应100% -->
            <col width="150">
            <col width="300">
            <col>
        </colgroup>
        
        <!-- thead 标签表示表格的头部区域,其内部必须拥有 tr 标签, tr标签一般位于第一行 -->
        <thead>
        <!-- tr用于定义表格中的行,必须嵌套在 table 中 -->
        <tr>
            <!-- th 用于定义表格中的表头,必须嵌套在 tr 中 -->
            <th>昵称</th>
            <th>加入时间</th>
            <th>签名</th>
        </tr>
        </thead>

        <tbody>
            <tr>
                <td>贤心</td>
                <td>2016-11-29</td>
                <td>人生就像是一场修行</td>
            </tr>
            <tr>
                <td>许闲心</td>
                <td>2016-11-28</td>
                <td>于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…</td>
            </tr>
            <tr>
                <td>贤心</td>
                <td>2016-11-29</td>
                <td>人生就像是一场修行</td>
            </tr>
            <tr>
                <td>许闲心</td>
                <td>2016-11-28</td>
                <td>于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…</td>
            </tr>
        </tbody>
    </table>


</body>
</html>

在这里插入图片描述




七、表单

  • 依赖加载模块:form

实现步骤:

  1. 引入资源
<link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
<script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
  1. 依赖加载模块
<!-- 加载模块 -->
<script type="text/javascript">
    // 加载form模块
    layui.use("form",function(){
        var form = layui.form;
    });		
</script>
  1. 在一个容器中设定 class="layui-form" 来标识一个表单元素块
<form class="layui-form" action="">

</form>
  1. 基本的行区块结构,它提供了响应式的支持。
  • 给 div 添加 class=“layui-form-item” 代表”行“
  • 给 label 添加 class=“layui-form-label” 代表”区“
  • 给 div 添加 class=“layui-input-inline” 代表”块“
<body>
    <!-- 在一个容器中设定 class="layui-form" 来标识一个表单元素块 -->
    <form action="" class="layui-form">
        <!-- 基本的行区块结构,它提供了响应式的支持。-->
        <div class="layui-form-item">
            <label class="layui-form-label">标题区域</label>
            <div class="layui-input-inline">
                <!-- 输入框 -->
                <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">
    </form>


    <script type="text/javascript">
        // 表单 依赖form模块
        layui.use('form', function() {
            var form = layui.form;
        });
    </script>
</body>

在这里插入图片描述



6.0 表单的常用属性

在这里插入图片描述



6.1 输入框

<!-- 输入框 -->
<input type="text" name="title" required lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input" />
  • required:注册浏览器所规定的必填字段
  • lay-verify=“required”:注册 form 模块需要验证的类型
  • class=“layui-input”:layui.css 提供的通用 CSS 类



6.2 下拉选择框

  • 通过 selected 属性设置默认选中项
  • 通过 disabled 属性开启禁用,可以设置 select 和 option 标签(表示禁用下拉框和禁用下拉选项)
  • 通过 optgroup 标签给 select 分组
  • 通过设置 lay-search 属性开启搜索匹配功能
<body>
    <div class="layui-container">
        <form action="" class="layui-form">
            <div class="layui-form-item">
                <label class="layui-form-label">城市</label>
                <div class="layui-input-inline">
                    <!-- 
                            下拉选择框
                                1. 通过selected属性设置默认选中项
                                2. 通过disabled属性开启禁用,可以设置select和option标签(禁用下拉框和禁用下拉选项)
                                3. 可以通过 optgroup 标签给select分组
                                4. 通过设置lay-search属性开启搜索匹配功能
                    -->
                    <select name="city" lay-verify="required">
                           <option value="">请选择一个城市</option>
                           <option value="010">北京</option>
                           <option value="021" selected>上海</option>
                           <option value="0571" disabled>杭州</option>
                    </select>
                </div>
            </div>
        </form>
    </div>

    <script type="text/javascript">
        // 表单,依赖 form 模块
        layui.use('form', function() {
            var form = layui.form;
        })
    </script>
</body>

在这里插入图片描述


①分组
  • 可以通过 optgroup 标签给select分组
<body>
    <div class="layui-container">
        <form action="" class="layui-form">
            <div class="layui-form-item">
                <label class="layui-form-label">城市</label>
                <div class="layui-input-inline">
                    <!-- 
                            下拉选择框
                                1. 通过selected属性设置默认选中项
                                2. 通过disabled属性开启禁用,可以设置select和option标签(禁用下拉框和禁用下拉选项)
                                3. 可以通过 optgroup 标签给select分组
                                4. 通过设置lay-search属性开启搜索匹配功能
                         -->
                    <!-- 分组 -->
                    <select name="quiz">
                        <option value="">请选择</option>
                        <!-- 分组城市记忆 -->
                        <optgroup label="城市记忆">
                          <option value="你工作的第一个城市">你工作的第一个城市?</option>
                        </optgroup>
                        
                        <!-- 分组学生时代 -->
                        <optgroup label="学生时代">
                          <option value="你的工号">你的工号?</option>
                          <option value="你最喜欢的老师">你最喜欢的老师?</option>
                        </optgroup>
                    </select>
                </div>
            </div>
        </form>
    </div>

    <script type="text/javascript">
        // 表单,依赖 form 模块
        layui.use('form', function() {
            var form = layui.form;
        })
    </script>
</body>

在这里插入图片描述


②开启搜索匹配
  • 通过设置 lay-search 属性开启搜索匹配功能
<body>
    <div class="layui-container">
        <form action="" class="layui-form">
            <div class="layui-form-item">
                <label class="layui-form-label">城市</label>
                <div class="layui-input-inline">
                    <!-- 
                            下拉选择框
                                1. 通过selected属性设置默认选中项
                                2. 通过disabled属性开启禁用,可以设置select和option标签(禁用下拉框和禁用下拉选项)
                                3. 可以通过 optgroup 标签给select分组
                                4. 通过设置lay-search属性开启搜索匹配功能
                         -->
                    <!-- 开启搜索匹配 -->
                    <select name="city" lay-verify="" lay-search>
                        <option value ="">请选择</option>
                        <option value="010">layer</option>
                        <option value="021">form</option>
                        <option value="0571">layim</option>
                      </select>
                </div>
            </div>
        </form>
    </div>

    <script type="text/javascript">
        // 表单,依赖 form 模块
        layui.use('form', function() {
            var form = layui.form;
        })
    </script>
</body>

在这里插入图片描述


6.3 复选框

  • 通过设置 title 属性设置自定义文本(如果不需要显示文本,则不设置 title 属性)
  • 通过 checked 属性设置被选中的项
  • 通过·lay-skin属性设置复选框的样式效果(lay-skin=“primary” 表示原始效果)
  • 通过 disabled 属性禁用元素
<form action="" class="layui-form">
    <div class="layui-form-item">
        <label class="layui-form-label">爱好</label>
        <div class="layui-input-block">
            <!--
                复选框 
                    1. 通过title属性设置自定义文本(如果不需要显示文本,则不设置title属性)
                    2. 通过checked属性设置被选中的项
                    3. 通过lay-skin属性设置复选框的样式效果(lay-skin="parmary"表示原始效果)
                    4. 通过disabled属性禁用元素
            -->
            <!-- 默认效果 -->
            <input type="checkbox" name="hobby" title="唱歌" checked value="sing" />
            <input type="checkbox" name="hobby" title="跳舞" value="dance" />
            <input type="checkbox" name="hobby" title="禁用" disabled />
            <br>
            <!-- 原始效果 -->
            <input type="checkbox" name="hobby" title="唱歌" lay-skin="primary" checked value="sing" />
            <input type="checkbox" name="hobby" title="跳舞" lay-skin="primary" value="dance" />
            <input type="checkbox" name="hobby" title="禁用" lay-skin="primary" disabled/>
        </div>
    </div>
</form>

在这里插入图片描述

①开关
  • 将复选框,设置 ==lay-skin=“switch” 形成开关风格
  • 通过 lay-text=“打开的值|关闭的值” 来设定开关的两种状态的文本,通过==|== 分隔
  • 通过 checked 属性设置默认打开状态
  • 通过 disabled 属性禁用开关
  • 通过 value 属性设置选中的值
<form action="" class="layui-form">
    <div class="layui-form-item">
        <label class="layui-form-label">开关</label>
        <div class="layui-input-block">
            <!-- 	
                开关
                    将复选框,设置lay-skin="switch"形成开关风格
                    1. 通过lay-text="打开的值|关闭的值"来设定开关的两种状态的文本,通过"|"分隔
                    2. 通过checked设置默认打开状态
                    3. 通过disabled属性禁用开关
                    4. 通过value属性设置选中的值

             -->
            <input type="checkbox" name="aa" lay-skin="switch" />
            <input type="checkbox" name="bb" lay-skin="switch" checked />
            <input type="checkbox" name="cc" lay-skin="switch" checked lay-text="on|off" />
            <input type="checkbox" name="dd" lay-skin="switch" checked lay-text="打开|关闭" value="打开" />
            <input type="checkbox" name="ee" lay-skin="switch" lay-text="打开|关闭" disabled />
        </div>
    </div>
</form>

在这里插入图片描述



6.4 单选框

  • 通过 checked 设置默认选中项
  • 通过 disabled 属性禁用单选框
  • 通过 value 属性设置选中的值
<form action="" class="layui-form">
    <div class="layui-form-item">
        <label class="layui-form-label">性别</label>
        <div class="layui-input-block">
            <!-- 
                单选框
                    1. 通过checked设置默认选中项
                    2. 通过disabled属性禁用单选框
                    3. 通过value属性设置选中的值 
             -->
            <input type="radio" name="sex" value="nan" title="">
            <input type="radio" name="sex" value="nv" title="" checked>
            <input type="radio" name="sex" value="" title="中性" disabled>
        </div>
    </div>
</form>

在这里插入图片描述


6.5 文本域

  • 给 textarea 标签添加class=“layui-textarea”
<form action="" class="layui-form">
    <div class="layui-form-item">
        <label class="layui-form-label">简介</label>
        <div class="layui-input-inline">
            <!-- 
                文本域
                    class="layui-textarea":layui.css提供的通用CSS类 
             -->
            <textarea name="" required lay-verify="required" placeholder="请输入" class="layui-textarea">

            </textarea>

        </div>
    </div>
</form>

在这里插入图片描述


6.6 组装行内表单

行内表单:表单元素在一行显示(div 盒子也不会全部占完宽度)

  • 给 div 设置 class=“layui-inline” : 定义外层行内
  • 给 div 设置 class=“layui-input-inline” :定义内层行内
<form action="" class="layui-form">
    <div class="layui-form-item">

        <!-- 定义外层行内 .layui-inline  -->
        <div class="layui-inline">
            <label class="layui-form-label">范围</label>
            <!-- 定义内层行内 .layui-input-inline -->
            <div class="layui-input-inline" style="width: 100px;">
                <input type="text" name="price_min" placeholder="" autocomplete="off" class="layui-input">
            </div>
            <div class="layui-form-mid">-</div>
            <div class="layui-input-inline" style="width: 100px;">
                <input type="text" name="price_max" placeholder="" autocomplete="off" class="layui-input">
            </div>
        </div>

        <!-- 定义外层行内 -->
        <div class="layui-inline">
            <label class="layui-form-label">密码</label>
            <!-- 定义内层行内 -->
            <div class="layui-input-inline" style="width: 100px;">
                <input type="password" name="" autocomplete="off" class="layui-input">
            </div>
        </div>

    </div>
</form>

在这里插入图片描述


6.7 表单方框风格

  • 给 form 标签追加 class="layui-form-pane ",来设定表单的方框风格。
  • 内部结构不变,值得注意的是:复选框/开关/单选框 这些组合在该风格下需要额外添加 pane属性
<!-- 通过追加 layui-form-pane 的class,来设定表单的方框风格。 -->
<form class="layui-form  layui-form-pane" action="">
    <!-- 
      内部结构都一样,值得注意的是 复选框/开关/单选框 这些组合在该风格下需要额外添加 pane属性 
  	-->
    <div class="layui-form-item" pane>
        <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>
</form>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>08-表单</title>
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>

    <!--
        表单
            常用属性:
                required            浏览器固定必填字段
                lay-verify          需要验证的类型 (required 表示必填字段项)
                class="layui-input" 提供的通用的样式
                layui-input-inline/block 占据部分宽度/全部宽度

        文本框
            placeholder         当文本框为空时,默认显示的文本信息
            autocomplete        表单元素是否自动填充(当浏览器中缓存中存在相同name属性值时,会填充)

        通过追加 layui-from-place 的class ,来设定表单的方框风格
    -->


    <!-- 在一个容器中设定 *class="layui-form"* 来标识一个表单元素块 -->
    <form action="#" class="layui-form layui-form-pane">
        <div class="layui-form-item">
            <label class="layui-form-label">标题</label>
            <div class="layui-input-inline">
                <!--文本框-->
                <input type="text" name="title" required lay-verify="required" class="layui-input">
            </div>
        </div>

        <!--下拉框-->
        <div class="layui-form-item">
            <label class="layui-form-label">城市</label>
            <div class="layui-input-inline">
                <!--
                    下拉选择框
                        1.可通过selected 属性设置 默认选中项
                        2.通过disabled 属性开启禁用,可以设置select 和 option 标签
                                                     (禁用下拉框 和 下拉框选项)
                        3.可以通过 optgroup 标签给select分组
                        4.通过设置lay-select 属性开启搜索匹配功能
                -->
                <select name="city" lay-verify="" required >
                    <option value="aa" disabled>请选择一个城市</option>
                    <option value="010">北京</option>
                    <option value="021" selected>上海</option>
                    <option value="0571" disabled>杭州</option>
                </select>

                <!-- 分组 -->
                <select name="quiz">
                    <option value="">请选择</option>
                    <!-- 分组城市记忆 -->
                    <optgroup label="城市记忆">
                        <option value="你工作的第一个城市">你工作的第一个城市?</option>
                    </optgroup>

                    <!-- 分组学生时代 -->
                    <optgroup label="学生时代">
                        <option value="你的工号">你的工号?</option>
                        <option value="你最喜欢的老师">你最喜欢的老师?</option>
                    </optgroup>
                </select>

                <!--开启搜索匹配-->
                <select name="city" lay-verify="" lay-search>
                    <option value="">请选择</option>
                    <option value="010">layer</option>
                    <option value="021">form</option>
                    <option value="0571" selected>layim</option>
                </select>

            </div>
        </div>


        <!--复选框-->
        <div class="layui-form-item">
            <label class="layui-form-label">爱好</label>
            <div class="layui-input-block">
                <!--
                    复选框
                        1. 通过title属性设置自定义文本(如果不需要显示文本,则不设置title属性)
                        2. 通过checked属性设置被选中的项
                        3. 通过lay-skin属性设置复选框的样式效果(lay-skin="primary"表示原始效果)
                        4. 通过disabled 属性禁用元素
                -->
                <!--默认效果-->
                <input type="checkbox" name="hobby" title="唱歌" value="sing" checked>
                <input type="checkbox" name="hobby" title="跳舞" value="dance">
                <input type="checkbox" name="hobby" title="Rap" disabled>

                <br>

                <!--原始效果-->
                <input type="checkbox" name="hobby" title="唱歌"  value="sing" lay-skin="primary" checked>
                <input type="checkbox" name="hobby" title="跳舞" value="dance" lay-skin="primary">
                <input type="checkbox" name="hobby" title="Rap" lay-skin="primary" disabled>
            </div>
        </div>


        <!--开关 复选框改造-->
        <div class="layui-form-item">
            <label class="layui-form-label">开关</label>
            <div class="layui-input-block">
                <!--
                    开关
                        将复选框,设置lay-skin="switch" 形成开关风格
                        1.通过lay-text="打开的值|关闭的值" 来设置开关两种状态显示的值
                           通过"|" 分割
                        2.通过checked设置默认打开状态
                        3.disabled
                        4.value 设定选定的值
                -->
                <input type="checkbox" name="aa" lay-skin="switch">
                <input type="checkbox" name="bb" lay-skin="switch" checked>
                <input type="checkbox" name="cc" lay-skin="switch" checked lay-text="on|off">
                <input type="checkbox" name="dd" lay-skin="switch" checked lay-text="打开|关闭" value="打开">
                <input type="checkbox" name="ee" lay-skin="switch" lay-text="打开|关闭" disabled>

            </div>
        </div>

        <!--单选框-->
        <div class="layui-form-item">
            <label class="layui-form-label">性别</label>
            <div class="layui-input-block">
                <!--
                    单选框
                        1. 通过checked设置默认选中项
                        2. 通过disabled属性禁用单选框
                        3. 通过value属性设置选中的值
                 -->
                <input type="radio" name="sex" value="nan" title="">
                <input type="radio" name="sex" value="nv" title="" checked>
                <input type="radio" name="sex" value="" title="中性" disabled>
            </div>
        </div>


        <!--文本域-->
        <div class="layui-form-item">
            <label class="layui-form-label">简介</label>
            <div class="layui-input-inline">
                <!--
                    文本域
                        class="layui-textarea"   layui.css 提供的通用css类
                 -->
                <textarea name="remark" required lay-verify="required" placeholder="请输入个人简介"
                          class="layui-textarea">

                </textarea>
            </div>
        </div>


        <!--
            组装行内表单
                class="layui-inline" 定义外层行内
                class="layui-input-inline" 定义内层行内
        -->
        <div class="layui-form-item">
            <!-- 定义外层行内 -->
            <div class="layui-inline">
                <label class="layui-form-label">范围</label>
                <div class="layui-input-inline">
                    <input type="text" name="price_min" placeholder="" autocomplete="off" class="layui-input">
                </div>
                <div class="layui-form-mid">-</div>
                <div class="layui-input-inline">
                    <input type="text" name="price_max" placeholder="" autocomplete="off" class="layui-input">
                </div>

            </div>

            <!-- 定义外层行内 -->
            <div class="layui-inline">
                <label class="layui-form-label">密码</label>
                <div class="layui-input-inline">
                    <input type="password" name="upwd" placeholder="请输入密码" autocomplete="off" class="layui-input" >
                </div>
            </div>
        </div>


        <!--忽略layui-->
        <div class="layui-form-item">
            <label class="layui-form-label">原始效果</label>
            <div class="layui-input-inline">
                <input type="radio" name="sex" value="nan" title="" lay-ignore />
            </div>
        </div>




        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>



    </form>


    <hr>
    <br>
    <!-- 通过追加 layui-form-pane 的class,来设定表单的方框风格。 -->
    <form class="layui-form  layui-form-pane" action="">
        <!--
          内部结构都一样,值得注意的是 复选框/开关/单选框 这些组合在该风格下需要额外添加 pane属性
          -->
        <div class="layui-form-item" pane>
            <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>
    </form>




    <!-- 加载模块 -->
    <script type="text/javascript">
        // 加载form模块
        layui.use("form", function () {
            var form = layui.form;

        });

    </script>

</body>
</html>




八、弹出层

8.1 弹出层

弹出层官方文档:https://layuion.com/layer/

layer 可以独立使用,也可以通过Layui模块化使用

场景用前准备调用方式
1.作为独立组件使用如果你只是单独想使用 layer,你可以去 layer 独立版本官网下载组件包。你需要在你的页面引入jQuery1.8以上的任意版本,并引入layer.js通过script标签引入layer.js后,直接用即可。
2.layui 模块化使用如果你使用的是 layui,那么你直接在官网下载 layui 框架即可,无需引入 jQuery 和 layer.js,但需要引入layui.csslayui.js通过*layui.use(‘layer’, callback)*加载模块

①作为独立组件使用

1、首先去https://layuion.com/layer/独立版本官网下载组件包

在这里插入图片描述

2、下载完成后解压,将 layer.jslayer.css 拷贝到我们的项目中

在这里插入图片描述

3、引入资源

<!--作为独立徐组件使用-->
<link rel="stylesheet" type="text/css" href="layer/layer.css">
<script src="js/jquery-3.4.1.js" type="text/javascript" charset="UTF-8"></script>
<script src="layer/layer.js" type="text/javascript" charset="UTF-8"></script>

4、开始使用

<body>
    <script type="text/javascript">
        layer.msg("Hello");
    </script>
</body>

②使用模块化🔥
  1. 引入资源
<!--layui模块化使用-->
<link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
<script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>

2、在 script 中使用 layui.use() 加载模块

  • 依赖模块:layer
<body>

    <script type="text/javascript">
        //加载模块
        layui.use('layer', function() {
            var layer = layui.layer;

            layer.msg("Hello World!");
        })
    </script>
</body>

在这里插入图片描述



8.2 基础参数

①type 基本层类型
  • 类型 Number , 默认为0

  • layer 提供了5 种层类型。可传入的值有

    • 0 ➡ 信息框,默认
    • 1 ➡ 页面层
    • 2 ➡ iframe层
    • 3 ➡ 加载层
    • 4 ➡ tips层
  • 若采用 layer.open({type:1}) 方式调用,则 type 为必填项(信息框除外)


②title标题
  • 类型:String/Array/Boolean,默认 ‘信息’
  • title 支持三种类型的值
    • 若传入的是普通的字符串,如:title:‘我是标题’ ,那么只会改变标题文本;
    • 若需要自定义标题区域样式,title:[‘文本’,‘font-size: 18px’],数组第二项可以写任意css 样式
    • 若不想显示标题栏,title: false
<script type="text/javascript">
    //加载模块
    layui.use('layer', function() {
        var layer = layui.layer;

        /* 信息框 */
        layer.open({
            type: 0,						  // 0为信息框
            title:"系统消息",
            // title: false,  				   //不显示标题
            // title: ['标题', 'color:red;'],   // 自定义标题区域样式
            
            // content可以传入任意的文本或html
            content: "Hello"
        });
    })
</script>

在这里插入图片描述

③area宽高
  • 类型: String/Array,默认为auto
  • 在默认状态下,layer是宽高都自适应的
    • 但当你只想定义宽度时,你可以 area: ‘500px’,高度仍然是自适应的
    • 当你宽高都要定义时,你可以 area: [‘500px’, ‘300px’]

④btn按钮
  • 类型:String/Array,默认 ‘确认’
  • 信息框(type = 0)模式时,btn默认是一个确认按钮,其它层类型则默认不显示,加载层和tips层则无效。
  • 当您只想自定义一个按钮时,你可以 btn: ‘我知道了’,当你要定义两个按钮时,你可以btn: [‘yes’, ‘no’]
  • 当然,你也可以定义更多按钮,比如:btn: [‘按钮1’, ‘按钮2’, ‘按钮3’, …],按钮1的回调是yes,而从按钮2开始,则回调为btn2: function(){},以此类推
<body>


    <script type="text/javascript">
        layui.use('layer', function() {
            var layer = layui.layer;

            layer.msg('你愿意和我做朋友么?', {
                time: 0, //不自动关闭
                btn: ['当然愿意', '狠心拒绝'], // [按钮1,按钮2]
                
                // 按钮1的回调函数
                yes: function(index) {
                    layer.close(index); // 关闭当前弹出框
                    layer.msg('新朋友,你好!', {
                        icon: 6, // 图标
                        btn: ['开心', '快乐']
                    });
                },
                
                // 按钮2的回调函数
                btn2: function(index) {
                    layer.close(index); // 关闭当前弹出框
                    layer.msg('好吧,再见!', {
                        icon: 5,
                        btn: '88'
                    })
                }
            });

        })
    </script>
</body>

在这里插入图片描述


⑤time自动关闭所需毫秒
  • 类型:Number,默认为0
  • 默认不会关闭。当你想关闭时,可以 time:5000 ,即代表 5 s 后自动关闭

⑥content内容
  • 类型:String/DOM/Array,默认 : " "

  • content 可传入的值是灵活多变的,不仅可以传入普通的 html 内容,还可以指定DOM,更可以随着 type 的不同而不同

    • 页面层 ,就是信息提示

    • iframe 弹出来的是页面,例如百度页面

    • tips 就是一个信息提示小框

<script type="text/javascript">
    //加载模块
    layui.use('layer', function() {
        var layer = layui.layer;

        /* 页面层 */
        layer.open({
            type: 1,
            title: "系统消息",
            // content可以传入任意的文本或html
            content: "<div style='height:200px;width:400px'>Hello</div>"
        });
        
        /* iframe层 */
        layer.open({
            type: 2,
            title: "系统消息",
            // content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['url', 'no']
            content: "http://www.baidu.com",
            // content:["http://www.baidu.com",'no'],
            // area: '500px' ,// 设置宽度,高度自适应
            area: ['800px', '400px'] // 设置宽高   
        });
        
        
    })
</script>

在这里插入图片描述

在这里插入图片描述

<body>

    <span>内容1</span>
    <span>内容2</span>
    <span>内容3</span>
    <span id="sp">内容4</span>
    <script type="text/javascript">
        layui.use('layer', function() {
            var layer = layui.layer;
            /* tips层 */
            layer.open({
                type: 4,
                content: ['内容', '#sp'] //数组第二项即吸附元素选择器或者DOM
            });

        })
    </script>
</body>

在这里插入图片描述


⑦icon图标
  • 类型:Number,默认:-1(信息框) / 0(加载层)
  • 信息框默认不显示图标。当你想显示图标时,默认皮肤可以传入0-6
  • 如果是加载层,可以传入0-2
<body>
    <script type="text/javascript">
        layui.use('layer', function() {
            var layer = layui.layer;
            //加载层
            layer.alert('酷毙了', {
                icon: 1				// 0 ~ 6 均可填
            });

        })
    </script>
</body>

在这里插入图片描述

<body>
    <script type="text/javascript">
        layui.use('layer', function() {
            var layer = layui.layer;
            //信息层
            layer.msg('不开心。。', {
                icon: 5				// -1 ~ 6 均可填
            });

        })
    </script>
</body>

在这里插入图片描述

<body>
    <script type="text/javascript">
        layui.use('layer', function() {
            var layer = layui.layer;
			// 加载层
            layer.load(1); 		// 0 ~ 2 均可填

        })
    </script>
</body>

在这里插入图片描述

我们的信息框还可以参与互动响应,会有多个选项可选:

<body>
    <script type="text/javascript">
        layui.use('layer', function() {
            var layer = layui.layer;
            layer.msg('你愿意和我做朋友么?', {
                time: 0, //第一个弹出层不自动关闭(因为默认弹出层会5s自动关闭)
                btn: ['当然愿意', '狠心拒绝'], // 按钮
                yes: function(index) {
                    layer.close(index); // 关闭当前弹出框
                    layer.msg('新朋友,你好!', {
                        icon: 6, // 图标
                        btn: ['开心', '快乐']
                    });
                }
            });

        })
    </script>
</body>

在这里插入图片描述



8.3 核心方法

①layer.open(options)
  • 原始核心方法
  • 创建任何类型的弹层都会返回一个当前层索引,上述的 options 即是基础参数
<body>
    <script type="text/javascript">
        layui.use('layer', function() {
            var layer = layui.layer;

            var index = layer.open({
                content: 'test'
            });
            console.log(index);
            //拿到的index是一个重要的凭据,它是诸如layer.close(index)等方法的必传参数。

        })
    </script>
</body>

在这里插入图片描述


②layer.alert()
  • 普通信息框
<script type="text/javascript">
    layui.use('layer', function() {
        var layer = layui.layer;

        //eg1
        //layer.alert('只想简单的提示');
        //eg2
        layer.alert('加了个图标', {
            icon: 1
        });

    })
</script>

在这里插入图片描述


③layer.msg()
  • 提示框
  • 默认是 3s 关闭
<script type="text/javascript">
	layui.use('layer', function() {
        var layer = layui.layer;

        //eg1
        layer.msg('只想弱弱提示');
        //eg2
        layer.msg('有表情地提示', {
            icon: 6
        });
        //eg3
        layer.msg('关闭后想做些什么', function() {
            //do something
        });
        //eg
        layer.msg('同上', {
            icon: 1,
            time: 2000 //2秒关闭(如果不配置,默认是3秒)
        }, function() {
            //do something
        });
</script>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


④layer.load()
  • 加载层
  • 加载层默认是不会自动关闭的
<script type="text/javascript">
    layui.use('layer', function() {
        var layer = layui.layer;
        
        //eg1
        var index = layer.load();
        //eg2
        var index = layer.load(1); //换了种风格
        //eg3
        var index = layer.load(2, {
            time: 10 * 1000
        }); //又换了种风格,并且设定最长等待10秒 
        
        //关闭
        layer.close(index);
</script>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>09-弹出层</title>
    <!--作为独立徐组件使用-->
<!--    <link rel="stylesheet" type="text/css" href="layer/layer.css">-->
<!--    <script src="js/jquery-3.4.1.js" type="text/javascript" charset="UTF-8"></script>-->
<!--    <script src="layer/layer.js" type="text/javascript" charset="UTF-8"></script>-->

    <!--layui模块化使用-->
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>

</head>
<body>

    <!--
        两种使用方式:
            1. 作为独立徐组件使用
                在layer独立版本官网下载组件包,在需要使用layer的页面加载1.8版本以上的jquery的js文件和layer.js文件
            2. layui模块化使用
                只需要引入layui的 css与js文件,在script使用layui.use() 加载模块即可

    -->

    <span>内容1</span>
    <span>内容2</span>
    <span>内容3</span>
    <span id="sp">内容4</span>

    <script type="text/javascript">
        //使用layer
        //layer.msg("hello");

        <!--加载模块-->
        layui.use("layer", function () {
            var layer = layui.layer;

        })

        //使用layer
        //layer.msg("hi");

        /* 信息框 */
        // layer.open({
        //     type: 0,						  // 0为信息框
        //     //title:"系统消息",
        //     //title: false,  				   //不显示标题
        //     title: ['标题', 'color:red;'],   // 自定义标题区域样式
        //
        //     // content可以传入任意的文本或html
        //     content: "Hello"
        // });

        /* 页面层 */
        // layer.open({
        //     type: 1,						  // 0为信息框
        //     title:"系统消息",
        //
        //     // content可以传入任意的文本或html
        //     content: "<div style=\"height: 200px;width: 400px\">Hello</div>"
        // });

        /* iframe */
        // layer.open({
        //     type: 2,						  // 0为信息框
        //     title:"系统消息",
        //
        //     // content可以传入任意的文本或html
        //     content: "https://ai.taobao.com/?pid=mm_119961239_82150369_109217850080"
        //     //content是一个URL,如果你不想让iframe出现滚动条, 你还可以content:['url', 'no']
        //     //content:['http://www.baidu.com', 'no']
        //
        //     //,area: '500px' //设置宽度,高度自适应  可以再拖大小
        //     //,area: ['800px', '400px'] //设置宽高  不可以拖大小
        //
        // });


        /* tips层 */
        // layer.open({
        //     type: 4,
        //     title:"系统消息",
        //     content:['内容', '#sp']  //数组第二项即吸附元素选择器 或者 DOM
        // });

        //eg1
        //layer.alert('酷毙了', {icon: 1});
        //eg2
        //layer.msg('不开心。。。', {icon: 5});
        //eg3
        //layer.load(1); //风格1的加载




        //eg1
        //layer.alert('很高兴见到你☺', {icon: 6});

        //eg2
        // layer.msg('你愿意和我做朋友么?', {
        //     time: 0, //第一个弹出层不自动关闭(因为默认弹出层会5s自动关闭)
        //     btn: ['当然愿意', '狠心拒绝'], // 按钮
        //     yes: function(index) {
        //         layer.close(index); // 关闭当前弹出框
        //         layer.msg('新朋友,你好!', {
        //             icon: 6, // 图标
        //             btn: ['开心', '快乐']
        //         });
        //     }
        // });

        //eg3
        //layer.msg('这是常用的弹出层');

        //eg4
        //layer.msg('so sad', {icon: 5});

        //eg5
        // layer.msg('玩命加载中...', function () {
        //     // 关闭后的操作
        //     layer.msg('❤')
        // })


    </script>


</body>
</html>




九、日期与时间选择

日期与时间选择官方文档:https://layuion.com/docs/modules/laydate.html

和 layer 一样,你可以在 layui 中使用 layDate,也可直接使用 layDate 独立版

场景用前准备调用方式
1. 在 layui 模块中使用下载 layui 后,引入layui.csslayui.js即可通过*layui.use(‘laydate’, callback)*加载模块后,再调用方法
2. 作为独立组件使用去 layDate 独立版本官网下载组件包,引入 laydate.js 即可直接调用方法使用

我们使用模块化使用

1、引入资源

<!-- layui模块化使用 -->
<link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
<script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>

2、在 script 中使用 layui.use() 加载模块

  • 依赖模块:laydate
<body>
    <!-- 用一个容器元素放我们的日期时间选择器 -->
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date1" />
    </div>
    <script type="text/javascript">
        layui.use('laydate', function() {
            var laydate = layui.laydate;
            // 加载 laydate 实例
            laydate.render({
                elem: "#date1" //绑定id为date1的元素
            })

        })
    </script>
</body>

在这里插入图片描述



9.1 基础参数

基础参数选项

  • 通过核心方法:laydate.render(options) 来设置基础参数,

①elem绑定元素
  • 类型:String/DOM ,默认值:无
  • 必填项,用于执行绑定日期渲染的元素,值一般为选择器,或DOM对象
<script>
	layui.use('laydate',function(){
        var laydate = layui.laydate;
        laydate.render({
            elem: '#test' //或 elem: document.getElementById('test')、elem: lay('#test') 等
        })
    })

</script>

②type控件选择类型
  • 类型:String ,默认值:date
  • 用于单独提供不同的选择器类型,可选值如下表

在这里插入图片描述

<body>
    <!-- 用一个容器元素放我们的日期时间选择器 -->
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date1" />
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date2" />
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date3" />
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date4" />
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date5" />
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date6" />
    </div>


    <script type="text/javascript">
        layui.use('laydate', function() {
            var laydate = layui.laydate;
            // 加载 laydate 实例
            laydate.render({
                elem: "#date1", //绑定id为date1的元素

            });

            laydate.render({
                elem: "#date2", //绑定id为date2的元素
                type: "year", // 年选择器
            });

            laydate.render({
                elem: "#date3", //绑定id为date3的元素
                type: "month" // 年月选择器
            });

            laydate.render({
                elem: "#date4", //绑定id为date4的元素
                type: "date" // 年月日选择器
            });

            laydate.render({
                elem: "#date5", //绑定id为date5的元素
                type: "time" // 时间(时分秒)选择器
            });

            laydate.render({
                elem: "#date6", //绑定id为date6的元素
                type: "datetime" // 年月日时分秒选择器
            });

        })
    </script>
</body>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

③format自定义格式
  • 类型:String,默认值:yyyy-MM-dd
  • 通过日期时间各自的格式符和长度,来设定一个你所需要的日期格式。layDate 支持的格式如下:

在这里插入图片描述

通过上述不同的格式符组合成一段日期时间字符串,可任意排版,如下所示

在这里插入图片描述

<body>
    <!-- 用一个容器元素放我们的日期时间选择器 -->
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date1" />
    </div>


    <script type="text/javascript">
        // 加载laydate模块
        layui.use('laydate', function() {
            var laydate = layui.laydate;
            //自定义日期格式
            laydate.render({
                elem: '#date1',
                format: 'yyyy/MM月dd日' // yyyy年MM月dd日可任意组合
            });
        });
    </script>
</body>

在这里插入图片描述


④value初始值
  • 类型:String,默认值:new Date()
  • 支持传入符合format参数设定的日期格式字符,或者 new Date()
<script type="text/javascript">
    // 加载laydate模块
    layui.use('laydate', function() {
        var laydate = layui.laydate;
        // 传入符合format格式的字符给初始值
        laydate.render({
            elem: '#date1',
            value: '2018-08-18' //必须遵循format参数设定的格式
        });
        // 传入Date对象给初始值
        laydate.render({
            elem: '#date2',
            value: new Date(1534766888000) //参数即为:2018-08-20 20:08:08 的时间戳
        });
    });
</script>

在这里插入图片描述


⑤lang语言
  • 类型:String,默认:cn
  • 内置了两种语言版本:cn(中文版)、en(国际版,即英文版)。
<script type="text/javascript">
    // 加载laydate模块
    layui.use('laydate', function() {
        var laydate = layui.laydate;
        laydate.render({
            elem: '#date1',
            lang: 'en'
        });

    });
</script>

在这里插入图片描述


⑥theme主题
  • 类型:String ,默认值:default
  • 内置了多种主题,theme的可选值有:default(默认简约)、molv(墨绿背景)、#颜色值(自定义颜色背景)、grid(格子主题)
<script type="text/javascript">
    // 加载laydate模块
    layui.use('laydate', function() {
        var laydate = layui.laydate;
        laydate.render({
            elem: '#date1',
            theme: 'molv'
        });

    });
</script>

在这里插入图片描述


⑦calendar公历节日
  • 类型:Boolean,默认值:false
  • 内置了一些我国通用的公历重要节日,通过设置 true 来开启。国际版不会显示
<script type="text/javascript">
    // 加载laydate模块
    layui.use('laydate', function() {
        var laydate = layui.laydate;
        laydate.render({
            elem: '#date1',
            lang: 'cn',
            calendar: true
        });

    });
</script>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>10-日期与时间选择</title>
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>

    <div class="layui-inline">
        <input type="text" class="layui-input" id="date1"/>
    </div>

    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date2"/>
    </div>

    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date3"/>
    </div>

    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date4"/>
    </div>

    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date5"/>
    </div>

    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date6"/>
    </div>

    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date7"/>
    </div>


    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date8"/>
    </div>

    <hr>
    <div class="layui-inline">
        <input type="text" class="layui-input" id="date9"/>
    </div>





    <script type="text/javascript">
        //加载laydate 模块
        layui.use('laydate', function () {
            var laydate = layui.laydate;

            //执行加载laydate 的实例
            laydate.render({
                elem: '#date1'// 绑定id为date1 的元素
            });

            laydate.render({
                elem: '#date2',
                type: "year"  //年选择器
            });

            laydate.render({
                elem: '#date3',
                type: "month"  //年月选择器
            });

            laydate.render({
                elem: '#date4',
                type: "date"  //年月日
            });

            laydate.render({
                elem: '#date5',
                type: "time" //时间
            });

            laydate.render({
                elem: '#date6',
                type: "datetime" //年月日 时分秒
            });

            //自定义日期格式
            laydate.render({
                elem: '#date7',
                format: 'yyyy年MM月dd日'//组合
            });

            //传入符合format格式的字符串初始值
            laydate.render({
                elem: '#date8',
                value: '2018-08-18' //必须遵循format参数设定的 格式

            });

            laydate.render({
                elem: '#date9',
                value: new Date(1534766888000) //参数即为:2018-08-20 20:08:18 的时间戳
            });


        });

        //
    </script>


</body>
</html>




十、分页

  • 分页官方文档:https://layuion.com/docs/modules/laypage.html
  • 模块加载名称:laypage
  • laypage 的使用非常简单,指向一个用于存放分页的容器,通过服务端得到一些初始值,即可完成分页渲染
<body>
    <div id="page"></div>
    <script type="text/javascript">
        // 加载laypage模块
        layui.use('laypage', function() {
            var laypage = layui.laypage;
            
            // 加载laypage实例
            laypage.render({
                elem: "page", // elem属性绑定的是容器的ID属性值,不需要加#
                count: 100, // 总数量,一般是从服务器获取
            });

        });
    </script>
</body>

在这里插入图片描述



10.1 基础参数

①基础参数选项
  • 通过核心方法:laypage.render(options) 来设置基础参数

②elem绑定元素
  • 类型:String/Object,比填项
  • elem 指向存放分页的容器,值可以是 容器 ID、DOM对象
    • elem: ‘id’ 注意:这里不能加 #
    • elem: document.getElementById(‘id’)

③count数据总数
  • 类型:Number,必填项
  • 数据总数,一般通过服务端得到
  • count: 100
<body>
    <div id="page"></div>
    <script type="text/javascript">
        // 加载laydate模块
        layui.use('laypage', function() {
            var laypage = layui.laypage;
            // 加载laypage实例
            laypage.render({
                elem: "page", // elem属性绑定的是容器的ID属性值,不需要加#
                count: 100, // 总数量,一般是从服务器获取的
            });
        });
    </script>
</body>

在这里插入图片描述


④limit每页显示条数
  • 类型:Number,默认值 10
  • laypage将会借助 count 和 limit 计算出分页数。
<body>
    <div id="page"></div>

    <script type="text/javascript">
        // 加载laydate模块
        layui.use('laypage', function() {
            var laypage = layui.laypage;
            // 加载laypage实例
            laypage.render({
                elem: "page", // elem属性绑定的是容器的ID属性值,不需要加#
                count: 100, // 总数量,一般是从服务器获取
                limit: 5, // 每页显示的数量
            });
        });
    </script>
</body>

在这里插入图片描述

⑤layout自定义排版
  • 类型:Array,默认值:[‘prev’, ‘page’, ‘next’]
  • 自定义排版,可选值有:
    • count :总条目输出区域
    • limit:条目选项区域
    • prev:上一页区域
    • page:分页区域
    • next:下一页区域
    • refresh:页面刷新区域(layui 2.3.0新增)
    • skip:快捷跳页区域
<body>
    <div id="page"></div>

    <script type="text/javascript">
        // 加载laydate模块
        layui.use('laypage', function() {
            var laypage = layui.laypage;
            // 加载laypage实例
            laypage.render({
                elem: "page", // elem属性绑定的是容器的ID属性值,不需要加#
                count: 100, // 总数量,一般是从服务器获取
                layout: ['prev', 'page', 'next', 'limit', 'skip', 'count', 'refresh']
            });
        });
    </script>
</body>

在这里插入图片描述

⑥limits每页条数的选择项
  • 类型:Array,默认值:[10,20,30,40,50]
  • 如果 layout 参数开启了 limit,则会出现每页条数的select下拉选择框
<body>
    <div id="page"></div>

    <script type="text/javascript">
        // 加载laydate模块
        layui.use('laypage', function() {
            var laypage = layui.laypage;
            // 加载laypage实例
            laypage.render({
                elem: "page", // elem属性绑定的是容器的ID属性值,不需要加#
                count: 100, // 总数量,一般是从服务器获取
                //limit: 5, // 每页显示的数量
                limits: [5, 10, 20, 30], // 每页条数的选择项
                layout: ['prev', 'page', 'next', 'limit', 'skip', 'count', 'refresh']
            });

        });
    </script>
</body>

在这里插入图片描述

⑦groups连续出现的页码个数
  • 类型:Number,默认值为5
  • 连续出现的页面个数,就是分页区域省略号…之前显示的页面个数
<body>
    <div id="page"></div>

    <script type="text/javascript">
        // 加载laydate模块
        layui.use('laypage', function() {
            var laypage = layui.laypage;
            // 加载laypage实例
            laypage.render({
                elem: "page", // elem属性绑定的是容器的ID属性值,不需要加#
                count: 100, // 总数量,一般是从服务器获取
                groups: 7, // 连续显示的页码数
            });
        });
    </script>
</body>

在这里插入图片描述


10.2 jump切换分页的回调

  • 当分页被切换时触发,函数返回两个参数:obj(当前分页的所有选项值)、first(是否首次,一般用于初始加载的判断)
<body>
    <div id="page"></div>

    <script type="text/javascript">
        // 加载laydate模块
        layui.use('laypage', function() {
            var laypage = layui.laypage;
            // 加载laypage实例
            laypage.render({
                elem: "page", // elem属性绑定的是容器的ID属性值,不需要加#
                count: 100, // 总数量,一般是从服务器获取
                groups: 7, // 连续显示的页码数
                layout: ['prev', 'page', 'next', 'limit', 'skip', 'count', 'refresh'],
            });

            laypage.render({
                elem: 'page',
                count: 100, //数据总数,从服务端得到
                groups: 10, // 连续出现的页码个数
                layout: ['prev', 'page', 'next', 'limit', 'count'], // 自定义排版
                limits: [5, 10, 20], // layout属性设置了limit值,可会出现条数下拉选择框
                jump: function(obj, first) {
                    // obj包含了当前分页的所有参数,比如:
                    console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
                    console.log(obj.limit); //得到每页显示的条数
                    //首次不执行
                    if (!first) {
                        //do something
                    }
                }
            });

        });
    </script>
</body>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>11-分页</title>
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>

    <div id="page"></div>

    <script type="text/javascript">
        //加载laypage 模块
        layui.use('laypage', function () {
            var laypage = layui.laypage;

            // 加载laypage 实例
            // laypage.render({
            //     elem: "page",   // elem属性绑定的是容器的ID属性值,注意不加#
            //     count: 100,     //总数量,一般是从服务器获取
            //     limit: 5,   //每页显示的数量
            //     limits: [5,10,20,30], //每页条数选择项
            //     layout: ['prev', 'page', 'next', 'limit', 'count'], //自定义排版
            //     groups: 10,// 连续显示的页码数
            // })

            // laypage.render({
            //     elem: 'page',
            //     count: 100, //数据总数,从服务端得到
            //     groups: 10, // 连续出现的页码个数
            //     layout: ['prev', 'page', 'next', 'limit', 'count'], // 自定义排版
            //     limits: [5, 10, 20], // layout属性设置了limit值,可会出现条数下拉选择框
            //     jump: function(obj, first) {
            //         // obj包含了当前分页的所有参数,比如:
            //         console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
            //         console.log(obj.limit); //得到每页显示的条数
            //         //首次不执行
            //         if (!first) {
            //             //do something
            //         }
            //     }
            // });
            
            

        });

        //
    </script>


</body>
</html>




十一、数据表格

  • 支持固定表头、固定行、固定列左/列右,支持拖拽改变列宽度,支持排序,支持多级表头,支持单元格的自定义模板,支持对表格重载(比如搜索、条件筛选等),支持复选框,支持分页,支持单元格编辑等等一些列功能。
  • 模块加载名称:table

1、引入资源

<link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
<script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>

2、在页面放置一个元素,然后通过 table.render() 方法指定该容器

<body>
    <!-- 准备容器(标签),设置id属性值 -->
    <div id="demo"></div>

    <script type="text/javascript">
        // 加载table模块
        layui.use('table', function() {
            var table = layui.table;
            // 加载table实例
            table.render({
                elem: "#demo", //elem属性用来绑定容器的id属性值
                url: "js/user.json", // 数据接口
                cols: [
                    [{
                        field: 'id',
                        title: '用户编号',
                        sort: true,
                        width: 120
                    }, {
                        field: 'username',
                        title: '用户姓名',
                        width: 100
                    }, {
                        field: 'sex',
                        title: '性别',
                        width: 100,
                        sort: true
                    }, {
                        field: 'city',
                        title: '城市',
                        width: 100
                    }, {
                        field: 'sign',
                        title: '签名'
                    }]
                ],
            })

        })
    </script>
</body>

在这里插入图片描述

注意:上面有一个数据接口 url,通常是从服务器获取。我们这里先本地模拟一些json数据传入

{
	"code": 0,
	"msg": "",
	"count": 50,
	"data": [{
			"id": 10000,
			"username": "user-0",
			"sex": "女",
			"city": "城市-0",
			"sign": "签名-0"			
		},
		{
			"id": 10001,
			"username": "user-1",
			"sex": "男",
			"city": "城市-1",
			"sign": "签名-1"
		},
		{
			"id": 10002,
			"username": "user-2",
			"sex": "女",
			"city": "城市-2",
			"sign": "签名-2"
		},
		{
			"id": 10003,
			"username": "user-3",
			"sex": "女",
			"city": "城市-3",
			"sign": "签名-3"
		},
		{
			"id": 10004,
			"username": "user-4",
			"sex": "男",
			"city": "城市-4",
			"sign": "签名-4"
		}

	]
}



11.1 三种初始化渲染方式

在这里插入图片描述


①方法渲染🔥
<body>
    <div id="demo"></div>

    <script type="text/javascript">
        layui.use('table',function(){
            var table = layui.table;

            table.render({
                elem: "#demo",
                url: 'js/user.json', // 数据接口
                height: 315, // 容器高度
                page:true, // 开启分页
                cols: [[  // 设置表头
                    {field: 'id', title: 'ID'},
                    {field: 'username', title: '用户名'},
                    {field: 'sex', title: '性别'}
                ]]
            })
        })
    </script>
</body>

在这里插入图片描述


②自动渲染
  • 所谓的自动渲染,即:在一段 table 容器中配置好相应的参数,由 table 模块内部自动对其完成渲染,而无需写初始的渲染方法。我们需要关注的是以下三点

    • 带有 class=“layui-table”

      标签

    • 对标签设置属性 lay-data=" " 用于配置一些基础参数

    • 标签中设置属性 lay-data=" " 用于配置表头信息。

<body>
    <table class="layui-table" lay-data="{height:315, url:'js/user.json', page:true, id:'test'}" lay-filter="test">
        <thead>
            <tr>
                <th lay-data="{field:'id', width:80, sort: true}">ID</th>
                <th lay-data="{field:'username', width:80}">用户名</th>
                <th lay-data="{field:'sex', width:80, sort: true}">性别</th>
                <th lay-data="{field:'city'}">城市</th>
                <th lay-data="{field:'sign'}">签名</th>
                <th lay-data="{field:'experience', sort: true}">积分</th>
                <th lay-data="{field:'score', sort: true}">评分</th>
                <th lay-data="{field:'classify'}">职业</th>
                <th lay-data="{field:'wealth', sort: true}">财富</th>
            </tr>
        </thead>
    </table>


    <script type="text/javascript">
        layui.use('table', function() {
            var table = layui.table;

        })
    </script>
</body>

在这里插入图片描述



11.2 基础参数

  • 基础参数官方文档:https://layuion.com/docs/modules/table.html#options
  • 官方文档参数很多,我们不必记忆,只要会查会用即可

①elem绑定元素
  • 类型:String/DOM
  • 指定原始 table 容器的选择器或 DOM,方法渲染方式为必填

②cols设置表头

表头参数官方文档:https://layuion.com/docs/modules/table.html#cols

  • 类型:Array
  • 设置表头,值是一个二维数组。表头参数设定在数组内,表头部分参数如下:

在这里插入图片描述


③url异步数据参数

官方文档:https://layuion.com/docs/modules/table.html#async

  • 还是一句话,不必记忆,会查会用会修改即可



11.3 page开启分页

  • 类型:Boolean/Object,开启分页(默认为 false)
  • 支持传入一个对象,里面可包含 laypage 组件所有支持的参数(jump、elem除外)
<body>
    <!-- 准备一个容器,设置id属性值 -->
    <table id="demo"></table>
    <script type="text/javascript">
        // 加载 table 模块
        layui.use('table', function() {
            var table = layui.table;
            // 加载table 实例
            table.render({
                elem: "#demo",      // elem属性用来绑定容器的 id 属性值
                url: "js/user.json",// 数据接口
                cols:[[
                    // 设置序列号
                    {field:'aa',type:"numbers"},
                    // 设置复选框列
                    {field:'bb',type:"checkbox"},
                    {field:'id',title:'用户编号',sort:true,width:120},
                    {field:'username',title:'用户姓名',width:100},
                    {field:'sex',title:'性别',width:100,sort:true},
                    {field:'city',title:'城市',width:100},
                    {field:'sign',title:'签名'}
                ]],
                // 开启分页
                page: true
            })
        })
    </script>
</body>

在这里插入图片描述



11.4 toolbar开启表格、头部工具栏

  • 类型:String/DOM/Boolean,开启表格头部工具栏,该参数支持四种类型值
    • toolbar: ‘#toolbarDemo’ 指向自定义工具栏模板选择器
    • toolbar: ‘
      xxx
      ’ 直接传入工具栏模板字符
    • toolbar: true 仅开启工具栏,不显示左侧模板
    • toolbar: ‘default’ 让工具栏左侧显示默认的内置模板
<body>
    <div id="demo"></div>

    <!-- 表格工具栏 -->
    <script type="text/html" id="toolbarDemo">
        <div class="layui-btn-container">
            <!-- lay-event 给元素绑定事件名 -->
            <button class="layui-btn layui-btn-sm" lay-event="getCheckData">
                获取选中行数据
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">
                获取选中数目
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="isAll">
                验证是否全选
            </button>
        </div>
    </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>

    <script type="text/javascript">
        layui.use('table', function() {
            var table = layui.table;

            table.render({
                elem: "#demo",
                url: 'js/user.json', // 数据接口
                cols:[[
						// 设置序列号列
						{field:'aa',type:"numbers"},
						// 设置复选框列
						{field:'aa',type:"checkbox"},
						{field:'id',title:'用户编号',sort:true,width:120,hide:true},
						{field:'username',title:'用户姓名',width:100,edit:'text'},
						{field:'sex',title:'性别',width:100,sort:true},
						{field:'city',title:'城市',width:100},
						{field:'sign',title:'签名',edit:'text'},
						// 设置表头工具栏
						{field:"操作",toolbar:"#barDemo"}
					]],
					// 开启分页
					page:true,
					// 设置表格工具栏
					toolbar:"#toolbarDemo"
            })
        })
    </script>
</body>

在这里插入图片描述

在这里插入图片描述

①defaultTooblar头部工具栏右侧图标
  • 类型:Array,默认值:[“filter”,“exports”,“print”]
  • 该参数可自由配置头部工具栏右侧的图标按钮,值为一个数组,支持以下可选值:
    • filter: 显示筛选图标
    • exports: 显示导出图标
    • print: 显示打印图标



11.5 监听头工具栏事件

官方文档:https://layuion.com/docs/modules/table.html#on

点击头部工具栏区域设定了属性为 lay-event=“” 的元素时触发

  • 语法:table.on(‘event(filter)’,callback)
    • event 为内置事件名,filter 为容器 lay-filter 设定的值
  • 回调函数返回一个 object 参数
    • obj.config对象中可以获取id属性值,即表示当前容器的ID属性值
    • obj.event 对象中可以获取 事件名
    • table.checkStatus(obj.config.id) 获取当前表格被选中记录对象,返回数组

obj 包含如下:

在这里插入图片描述

obj.event 包含如下:

在这里插入图片描述

table.checkStatus(obj.config.id) 包含如下:

在这里插入图片描述

<body>
    <div id="demo" lay-filter="test"></div>

    <!-- 表格工具栏 -->
    <script type="text/html" id="toolbarDemo">
        <div class="layui-btn-container">
            <!-- lay-event 给元素绑定事件名 -->
            <button class="layui-btn layui-btn-sm" lay-event="getCheckData">
                获取选中行数据
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">
                获取选中数目
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="isAll">
                验证是否全选
            </button>
        </div>
    </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>

    <script type="text/javascript">
        layui.use('table', function() {
            var table = layui.table;

            table.render({
                elem: "#demo",
                url: 'js/user.json', // 数据接口
                cols: [
                    [
                        // 设置序列号列
                        {
                            field: 'aa',
                            type: "numbers"
                        },
                        // 设置复选框列
                        {
                            field: 'aa',
                            type: "checkbox"
                        }, {
                            field: 'id',
                            title: '用户编号',
                            sort: true,
                            width: 120,
                            hide: true
                        }, {
                            field: 'username',
                            title: '用户姓名',
                            width: 100,
                            
                        }, {
                            field: 'sex',
                            title: '性别',
                            width: 100,
                            sort: true
                        }, {
                            field: 'city',
                            title: '城市',
                            width: 100
                        }, {
                            field: 'sign',
                            title: '签名',
                            
                        },
                        // 设置表头工具栏
                        {
                            field: "操作",
                            toolbar: "#barDemo"
                        }
                    ]
                ],
                // 开启分页
                page: true,
                // 设置表格工具栏
                toolbar: "#toolbarDemo"
            })

            /**
             * 头监听事件
             * 	语法:
             * 		table.on('toolbar(demo)',function(obj){
                 
                    });
                    注:demo表示的是容器上设置的lay-filter属性值
                */
            
            table.on('toolbar(test)', function(obj) {
                // console.log(obj);
                // obj.config对象中可以获取id属性值,即表示当前容器的ID属性值,也就是demo 
                // 获取当前表格被选中记录对象,返回数据
                var checkStatus = table.checkStatus(obj.config.id);
                console.log(checkStatus);
                // 获取事件名
                var eventName = obj.event;
                // 判断事件名,执行对应的代码
                switch (eventName) {
                    case "getCheckData":
                        // 获取被选中的记录的数组
                        var arr = checkStatus.data;
                        // 将数组解析成字符串
                        layer.alert(JSON.stringify(arr));
                        break;
                    case "getCheckLength":
                        // 获取被选中的记录的数组
                        var arr = checkStatus.data;
                        layer.msg("选中了" + arr.length + "条记录!")
                        break;
                    case "isAll":
                        // 通过isAll属性判断是否全选
                        var flag = checkStatus.isAll;
                        var str = flag ? '全选' : '未全选';
                        layer.msg(str);
                        break;
                    case "LAYTABLE_TIPS":
                        layer.alert("这是一个自定义的图标按钮");
                        break;
                }
            });

        })
    </script>
</body>

在这里插入图片描述

在这里插入图片描述



11.6 监听行工具栏事件

官方文档:https://layuion.com/docs/modules/table.html#ontool

  • 语法:table.on(‘tool(filter)’,callback{})

    • filter 为容器 lay-filter 设定的值
  • 回调函数返回一个 object 参数

    • obj.data 获取当前行数据
    • obj.event 获取 lay-event 对应的值 (也可以是表头 event 参数对应的值)

obj.data 包含如下:

在这里插入图片描述

<body>
    <div id="demo" lay-filter="test"></div>

    <!-- 表格工具栏 -->
    <script type="text/html" id="toolbarDemo">
        <div class="layui-btn-container">
            <!-- lay-event 给元素绑定事件名 -->
            <button class="layui-btn layui-btn-sm" lay-event="getCheckData">
                获取选中行数据
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">
                获取选中数目
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="isAll">
                验证是否全选
            </button>
        </div>
    </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>

    <script type="text/javascript">
        layui.use('table', function() {
            var table = layui.table;

            table.render({
                elem: "#demo",
                url: 'js/user.json', // 数据接口
                cols: [
                    [
                        // 设置序列号列
                        {
                            field: 'aa',
                            type: "numbers"
                        },
                        // 设置复选框列
                        {
                            field: 'aa',
                            type: "checkbox"
                        }, {
                            field: 'id',
                            title: '用户编号',
                            sort: true,
                            width: 120,
                            hide: true
                        }, {
                            field: 'username',
                            title: '用户姓名',
                            width: 100,
                            
                        }, {
                            field: 'sex',
                            title: '性别',
                            width: 100,
                            sort: true
                        }, {
                            field: 'city',
                            title: '城市',
                            width: 100
                        }, {
                            field: 'sign',
                            title: '签名',
                            
                        },
                        // 设置表头工具栏
                        {
                            field: "操作",
                            toolbar: "#barDemo"
                        }
                    ]
                ],
                // 开启分页
                page: true,
                // 设置表格工具栏
                toolbar: "#toolbarDemo"
            })


            /**
             * 监听行工具栏事件
             */
            table.on('tool(test)', function(obj) {
                // 得到当前操作行的相关信息
                var tr = obj.data;
                console.log(tr);
                // 得到事件名
                var eventName = obj.event;

                // 判断事件名,执行对应的方法
                if (eventName == 'del') { // 删除
                    // 确认框
                    layer.confirm("您确认要删除吗?", function(index) {
                        // 删除指定tr  del()
                        obj.del();
                        // 关闭弹出层(index是当前弹出层的下标)
                        layer.close(index);

                    });

                } else if (eventName == 'edit') { // 编辑
                    // 输出框
                    layer.prompt({
                        // 表单元素的类型 0=文本框  1=密码框 2=文本域
                        formType: 0,
                        value: tr.username // 设置输入框的值
                    }, function(value, index) {
                        // 修改指定单元格的值
                        // value表示输入的值
                        obj.update({
                            username: value
                        });
                        // 关闭弹出层
                        layer.close(index);
                    });
                }
            });

        })
    </script>
</body>



11.7 监听单元格编辑

官方文档:https://layuion.com/docs/modules/table.html#onedit

  • 监听单元格编辑之前要先打开单元格的编辑

    • edit 类型String,单元格编辑类型(默认不开启)目前只支持:text(输入框)
  • 语法:table.on(‘edit(filter)’,callback)

    • filter 为容器 lay-filter 设定的值
  • 单元格被编辑,且值发生改变时触发,回调函数返回一个 object 参数

    • obj.value 获取修改后的值
    • obj.filed 获取编辑的字段名
    • obj.data 获取所在行的所有相关数据

在这里插入图片描述

<body>
    <!-- 准备一个容器,设置id属性值 -->
    <table id="demo"></table>
    <!-- 表格工具栏 -->
    <script type="text/html" id="toolbarDemo">
        <div class="layui-btn-container">
            <!-- lay-event 给元素绑定事件名 -->
            <button class="layui-btn layui-btn-sm" lay-event="getCheckData">
					获取选中行数据
		    	</button>
            <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">
					获取选中数目
		    	</button>
            <button class="layui-btn layui-btn-sm" lay-event="isAll">
					验证是否全选
		    	</button>
        </div>
    </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>


    <script type="text/javascript">
        // 加载 table 模块
        layui.use('table', function() {
            var table = layui.table;
            // 加载table 实例
            table.render({
                    elem: "#demo", // elem属性用来绑定容器的 id 属性值
                    url: "js/user.json", // 数据接口
                    cols: [
                        [
                            // 设置序列号列
                            {
                                field: 'aa',
                                type: "numbers"
                            },
                            // 设置复选框列
                            {
                                field: 'aa',
                                type: "checkbox"
                            }, {
                                field: 'id',
                                title: '用户编号',
                                sort: true,
                                width: 120,
                                hide: true
                            }, {
                                field: 'username',
                                title: '用户姓名',
                                width: 100,
                                edit: 'text'
                            }, {
                                field: 'sex',
                                title: '性别',
                                width: 100,
                                sort: true
                            }, {
                                field: 'city',
                                title: '城市',
                                width: 100
                            }, {
                                field: 'sign',
                                title: '签名',
                                edit: 'text'
                            },
                            // 设置表头工具栏
                            {
                                field: "操作",
                                toolbar: "#barDemo"
                            }
                        ]
                    ],
                    // 开启分页
                    page: true,
                    // 设置表格工具栏
                    toolbar: "#toolbarDemo"

                })
                /**
                 * 监听单元格编辑事件
                 * 		表头设置edit属性, 单元格编辑类型(默认不开启)目前只支持:text(输入框)
                 */
            table.on('edit(test)', function(obj) {
                console.log(obj);
                // 获取修改后的值
                var value = obj.value;
                // 得到当前修改的tr对象
                var data = obj.data;
                // 得到修改的字段名
                var field = obj.field;

                layer.msg("【ID:" + data.id + "】的" + field + "字段的值修改为:" + value);
            });



        })
    </script>
</body>



11.8 数据表格重载

官方文档:https://layuion.com/docs/modules/table.html#reload

  • 语法:table.reload(ID,options,deep)
    • 参数 ID 即为基础参数id对应的值
    • 参数 options 即为各项基础参数
    • 参数 deep:是否采用深度重载(即参数深度克隆,也就是重载时始终携带初始时及上一次重载时的参数),默认 false。注意:deep 参数为 layui 2.6.0 开始新增。
<body>

    <div class="demoTable">
        搜索ID:
        <div class="layui-inline">
            <input class="layui-input" name="id" id="demoReload" autocomplete="off">
        </div>
        <button class="layui-btn" id="searchBtn">搜索</button>
    </div>


    <!-- 准备一个容器,设置id属性值 -->
    <table id="demo"></table>
    <!-- 表格工具栏 -->
    <script type="text/html" id="toolbarDemo">
        <div class="layui-btn-container">
            <!-- lay-event 给元素绑定事件名 -->
            <button class="layui-btn layui-btn-sm" lay-event="getCheckData">
					获取选中行数据
		    	</button>
            <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">
					获取选中数目
		    	</button>
            <button class="layui-btn layui-btn-sm" lay-event="isAll">
					验证是否全选
		    	</button>
        </div>
    </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>


    <script type="text/javascript">
        // 加载 table 模块
        layui.use('table', function() {
            var table = layui.table;
            var $ = layui.jquery; // 获取jquery对象
            // 加载table 实例
            table.render({
                    elem: "#demo", // elem属性用来绑定容器的 id 属性值
                    url: "js/user.json", // 数据接口
                    cols: [
                        [
                            // 设置序列号列
                            {
                                field: 'aa',
                                type: "numbers"
                            },
                            // 设置复选框列
                            {
                                field: 'aa',
                                type: "checkbox"
                            }, {
                                field: 'id',
                                title: '用户编号',
                                sort: true,
                                width: 120,
                                hide: true
                            }, {
                                field: 'username',
                                title: '用户姓名',
                                width: 100,
                                edit: 'text'
                            }, {
                                field: 'sex',
                                title: '性别',
                                width: 100,
                                sort: true
                            }, {
                                field: 'city',
                                title: '城市',
                                width: 100
                            }, {
                                field: 'sign',
                                title: '签名',
                                edit: 'text'
                            },
                            // 设置表头工具栏
                            {
                                field: "操作",
                                toolbar: "#barDemo"
                            }
                        ]
                    ],
                    // 开启分页
                    page: true,
                    // 设置表格工具栏
                    toolbar: "#toolbarDemo"

                })
                /**
                 * 监听单元格编辑事件
                 * 		表头设置edit属性, 单元格编辑类型(默认不开启)目前只支持:text(输入框)
                 */
            table.on('edit(test)', function(obj) {
                console.log(obj);
                // 获取修改后的值
                var value = obj.value;
                // 得到当前修改的tr对象
                var data = obj.data;
                // 得到修改的字段名
                var field = obj.field;

                layer.msg("【ID:" + data.id + "】的" + field + "字段的值修改为:" + value);
            });

            /**
             * 给指定元素绑定事件
             */
            $(document).on('click', '#searchBtn', function(data) {
                // 获取搜索文本框对象
                var sreach = $("#demoReload");
                // 调用数据表格的重载方法  table.reload(ID, options)
                table.reload('demo', {
                    where: { // 设置需要传递的参数
                        id: sreach.val(),
                        name: "zhangsan"
                    },
                    page: {
                        // 表示让条件查询从第一页开始;如果未设置则从当前页开始查询,此页前面的所有数据不纳入条件筛选
                        curr: 1 // 从第一页开始
                    }
                });
            });

        })
    </script>
</body>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>12-数据表格</title>
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>

    <table id="demo"></table>

    <hr>
    <!-- 方法渲染 -->
    <!-- 准备容器(标签),设置id属性值 -->
    <table id="demo2"></table>


    <!--
        自动渲染
            (1)带有 class="layui-table" 的 <table> 标签
            (2)对标签设置属性 lay-data="" 用于配置一些基础参数

            (3)在*<th>* 标签中设置属性 lay-data="" 用于配置表头信息
    -->
    <hr>
    <table class="layui-table" lay-data="{url:'js/user.json', page:true}">
        <thead>
            <tr>
                <th lay-data="{field:'id',width:100}">ID</th>
                <th lay-data="{field:'username'}">用户名</th>
                <th lay-data="{field:'sex', sort:true}">性别</th>
            </tr>
        </thead>
    </table>


    <!-- 装换静态表格 -->
    <hr>
    <table lay-filter="demo" >
        <thead>
            <tr>
                <th lay-data="{field:'username', width:100}">昵称</th>
                <th lay-data="{field:'experiment', width:80, sort:true}">昵称</th>
                <th lay-data="{field:'sign'}">昵称</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>贤心</td>
                <td>66</td>
                <td>人生就像是一场修行</td>
            </tr>
        </tbody>
    </table>







    <script type="text/javascript">
        // 加载table模块
        layui.use("table", function () {
            var table = layui.table;


            //加载 table 实例
            table.render({
                elem: "#demo",          //elem属性用来绑定容器的ID属性值
                url: "js/user.json",    //数据接口
                cols:[[
                    {field: 'id', title: '用户编号', sort: true, width: 120},
                    {field: 'username', title: '用户姓名', width: 100},
                    {field: 'sex', title: '性别', sort: true, width: 100},
                    {field: 'city', title: '城市', width: 100},
                    {field: 'sign', title: '签名', width: 100},
                ]],

            })

            /* 方法渲染 */
            table.render({
                elem: "#demo2",
                url: 'js/user.json', // 数据接口
                height: 315, // 容器高度
                page:true, // 开启分页
                cols: [[  // 设置表头
                    {field: 'id', title: 'ID'},
                    {field: 'username', title: '用户名'},
                    {field: 'sex', title: '性别'}
                ]]
            })


            /* 抓换静态table */
            table.init('demo', {
                height: 315 //设置高度
                //支持所有基础参数
            })



        })

    </script>


</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>13-数据表格</title>
    <link rel="stylesheet" type="text/css" href="layui-v2.7.6/layui/css/layui.css">
    <script src="layui-v2.7.6/layui/layui.js" type="text/javascript" charset="UTF-8"></script>

</head>
<body>

    <div class="demoTable">
        搜索ID:
        <div class="layui-inline">
            <input class="layui-input" name="id" id="demoReload" autocomplete="off">
        </div>
        <button class="layui-btn" id="searchBtn">搜索</button>
    </div>

    <!-- 准备容器(标签),设置id属性值 -->
    <table id="demo" lay-filter="test"></table>

    <!-- 表格工具栏 -->
    <script type="text/html" id="toolbarDemo">
        <div class="layui-btn-container">
            <!-- lay-event 给元素绑定事件名 -->
            <button class="layui-btn layui-btn-sm" lay-event="getCheckData">
                获取选中行数据
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">
                获取选中数目
            </button>
            <button class="layui-btn layui-btn-sm" lay-event="isAll">
                验证是否全选
            </button>
        </div>
    </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>


    <script type="text/javascript">
        // 加载table模块
        layui.use("table", function () {
            var table = layui.table;
            var $ = layui.jquery; //获取jquery对象


            //加载 table 实例
            table.render({
                elem: "#demo",          //elem属性用来绑定容器的ID属性值
                url: "js/user.json",    //数据接口
                cols: [[
                    //设置序列号
                    {field: 'aa', type:'numbers'},
                    //设置复选框列
                    {field: 'aa', type:'checkbox'},
                    {field: 'id', title: '用户编号', sort: true, width: 120, hide: true},
                    {field: 'username', title: '用户姓名', width: 100, edit:'text'},
                    {field: 'sex', title: '性别', sort: true, width: 100},
                    {field: 'city', title: '城市', width: 100},
                    {field: 'sign', title: '签名', width: 100, edit: true},
                    //设置表头工具栏
                    {field: '操作', toolbar:'#barDemo'},
                ]],

                //开启分页
                page: true,
                // 设置表格工具栏
                toolbar: "#toolbarDemo"

            })

            /**
             *
             * 头监听事件
             *  语法:                 filter
             *      table.on('toolbar(demo)', function(obj){
             *
             *
             *      })
             *      注意:demo表示的是容器上设置的lay-filter属性性
             */
            table.on('toolbar(test)', function(obj) {
                console.log(obj);

                // obj.config 对象中可以获取 id属性值,即表示当前容器的Id属性值,也就是demo
                // 获取当前表格被选中记录对象,返回数据
                var checkStatus = table.checkStatus(obj.config.id);
                console.log(checkStatus);

                // 获取事件名
                var eventName = obj.event;
                // 根据事件名的,执行对应的代码
                switch (eventName) {
                    case "getCheckData":
                        //获取被选中的数组
                        var arr = checkStatus.data;
                        // 将数组解析成字符串
                        layer.alert(JSON.stringify(arr));
                        break;
                    case "getCheckLength":
                        //获取被选中的数组
                        var arr = checkStatus.data;
                        layer.msg("选中了" + arr.length + "条记录!")
                        break
                    case "isAll":
                        //通过 isAll 属性判断是否全选
                        var flag = checkStatus.isAll;
                        var str = flag ? '全选' : '未全选';
                        layer.msg(str);
                        break
                    default:
                        break;
                }
            });

            /**
             * 监听行工具栏事件
             *
             */
            table.on('tool(test)', function (obj) {

                //得到当前操作行的相关信息
                var tr = obj.data;
                console.log(obj);
                console.log(tr);

                // 得到事件名
                var eventName = obj.event;

                // 判断事件名,执行对应的方法
                if(eventName == 'del') {//删除
                    //确认框   确认就执行右边的方法
                    layer.confirm("你确认要删除吗", function (index) {
                        //删除指定tr del()
                        obj.del();
                        //关闭弹出层 (index 是当前弹出层的下标)
                        layer.close(index);
                    });
                } else if (eventName == 'edit'){ //编辑
                    // 输出框
                    layer.prompt({
                        // 表单元素的类型 0=文本框 1=密码框 2=文本域
                        formType: 0,
                        value: tr.username, //设置输入框的值
                    },function (value,index) { //layer的方法
                        // 修改指定单元格的值
                        // value 表示输入的值
                        obj.update({
                            username:value
                        });
                        //关闭弹出层
                        layer.close(index);
                    })

                }

            });


            /**
             * 监听单元格编辑事件
             *  表头设置edit属性   单元格编辑类型 (默认不开启) 目前只支持: text(输入框)
             *
             */
            table.on('edit(test)', function(obj) {
                console.log(obj);
                console.log("didndid");
                //获取修改后的值
                var value = obj.value;
                // 得到当前修改的tr 对象
                var data = obj.data;
                // 得到修改的字段名
                var field = obj.field;
                //
                layer.msg("[ID:" + data.id + "]的" + field + "字段的值修改为:" + value);

            });


            /**
             * 给指定元素绑定事件
             */
            $(document).on('click', '#searchBtn', function(data) {
                // 获取搜索文本框对象
                var search = $("#demoReload");
                //调用数据表格的重载方法  table.reload(ID,options)
                table.reload('demo', {
                    where:{//设置需要传递的参数
                        id: search.val(),
                        name: "zhangsan"
                    },
                    page: {
                        //表示让条件查询从第一页开始,
                        // 如果为未设置则从当前页开始查询,此页前面的所有的数据不纳入筛选
                        curr: 1 //从第一页开始

                    }
                })

            });



        })
    </script>

</body>
</html>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaoming很上心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值