layui
内置模块
一.弹出层
1.使用场景
1.1 作为独立组件使用
- 只是单独想使用 layer,去 layer 独立版本官网下载组件包。
- 你需要在你的页面引入jQuery1.8以上的任意版本,并引入layer.js。
<link rel="stylesheet" href="layer/layer.css" />
<script type="text/javascript" src="js/jquery-3.2.1.js" ></script>
<script type="text/javascript" src="layer/layer.js" ></script>
- 通过script标签引入layer.js后,直接用即可
<script type="text/javascript">
//使用layer
layer.msg("Hello");
</script>
1.2 layui 模块化使用
- 在官网下载 layui 框架即可,无需引入 jQuery 和 layer.js,但需要引入layui.css和layui.js
<link rel="stylesheet" href="layui-v2.6.8/layui/css/layui.css" />
<script type="text/javascript" src="layui-v2.6.8/layui/layui.js" ></script>
- 通过layui.use(‘layer’, callback)加载模块
<script type="text/javascript">
//加载模块
layui.use('layer',function(){
var layer = layui.layer;
});
//使用layer
layer.msg("Hi,zhangsan!!!");
</script>
2.基础参数
2.1 type-基本层类型
- 类型:Number,默认:0
可传入的值有:
- 0(信息框,默认)
- 1(页面层)
- 2(iframe层)
- 3(加载层)
- 4(tips层)
2.2 title-标题
- 类型:String/Array/Boolean,默认:‘信息’
title支持三种类型的值:
- 若传入的是普通的字符串,如title :‘我是标题’,那么只会改变标题文本;
- 若需要自定义标题区域样式,可以title: [‘文本’, ‘font-size:18px;’],数组第二项可以写任意css样式;
- 如果不想显示标题栏,你可以title: false
2.3 content-内容
- 类型:String/DOM/Array,默认:’’
- content可传入的值是灵活多变的,不仅可以传入普通的html内容,还可以指定DOM。
2.4 area - 宽高
- 类型:String/Array,默认:‘auto’
- 在默认状态下,layer是宽高都自适应的
- 当定义宽度时,可以area: ‘500px’,高度仍然是自适应的。
- 当宽高都要定义时,可以area: [‘500px’, ‘300px’]
<body>
<span>内容1</span>
<span>内容2</span>
<span>内容3</span>
<span id="sp">内容4</span>
<!--
两种使用方式:
1.作为独立组件使用
在layer独立版本官网下载组件包,在需要使用layer的页面加载1.8版本以上的jquery的js文件和layer.js文件
2.layui模块化使用
只需要引入layui的css与js文件,在script中使用layui.use()加载模块
-->
<script type="text/javascript">
//使用layer
//layer.msg("Hello");
//加载模块
layui.use('layer',function(){
var layer = layui.layer;
});
//使用layer
// layer.msg("Hi,zhangsan!!!");
//信息框
layer.open({
type:0,
//title:"系统消息",
title:false,//不显示标题
title:['标题','color:red;'],
//content可以传入任意的文本或html
content:"Hello"
});
//页面层
layer.open({
type:1,
title:"系统消息",
//content可以传入任意文本或html
content:"<div style="height: 200px;width: 400px;">Hello</div>"
});
//iframe
layer.open({
type:1,
title:"系统消息",
//content是一个URL,如果你不想让iframe出现滚动条,你还可以content:['url','no']
content:"http://www.baidu.com"
//content:["http://www.baidu.com",'no']
//,area:'500px'//设置宽度,高度自适应
,area:['800px','400px']//设置宽高
});
//tips层
layer.open({
type: 4,
content: ['内容','#sp']//数组第二项即吸附元素选择器或者DOM
});
</script>
</body>
2.5 icon - 图标
- 信息框和加载层的私有参数
- 类型:Number,默认:-1(信息框)/0(加载层)
- 信息框默认不显示图标。当你想显示图标时,默认皮肤可以传入0-6如果是加载层,可以传入0-2。
//eg1
layer.alert('酷毙了', {icon: 2});
//eg2
layer.msg('不开心', {icon: 5});
//eg3
layer.load(1); //风格1的加载
//eg1
layer.alter('很高兴见到你😊',{icon: 6});
//eg2
layer.msg('你愿意和我做朋友吗?',{
time: 0,//不自动关闭
btn:['当然愿意','狠心拒绝'],//按钮
yes: function(index){
layer.close(index);//关闭当前弹出框
layer.msg('新朋友,你好!',{
icon: 6,//图标
btn:['开心','快乐']
});
}
});
//eg3
layer.msg('这是常用的弹出层');
//eg4
layer.msg('有点不开心',{icon: 5});
//eg5
layer.msg('玩命加载中...',function(){
//关闭后操作
layer.msg('关闭');
});
弹出层详细请查看官方文档:https://www.layui.com/doc/modules/layer.html#icon
二.日期与时间选择
- layDate 包含了大量的更新,其中主要以:年选择器、年月选择器、日期选择器、时间选择器、日期时间选择器 五种类型的选择方式。
1.使用场景
1.1 作为独立组件使用
-
去 layDate 独立版本官网下载组件包,引入 laydate.js 。
-
去 layDate 独立版本官网下载组件包,引入 laydate.js
<link rel="stylesheet" href="layui-v2.6.8/layui/css/layui.css" />
<script type="text/javascript" src="js/laydate.js" ></script>
<link rel="stylesheet" href="css/laydate.css" />
- 通过script标签引入layer.js后,直接用即可
<div class="layui-inline">
<input type="text" class="layui-input" id="date1" />
</div>
<script>
laydate.render({
elem: '#date1'//指定元素
});
</script>
结果展示:
1.2 layui 模块化使用
- 下载 layui 后,引入layui.css和layui.js即可
<link rel="stylesheet" href="layui-v2.6.8/layui/css/layui.css" />
<script type="text/javascript" src="layui-v2.6.8/layui/layui.js" ></script>
- 通过layui.use(‘laydate’, callback)加载模块后,再调用方法
<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示例
laydate.render({
elem: '#date1'//指定元素
});
});
</script>
结果展示:
2.基础参数
2.1 elem - 绑定元素
- 类型:String/DOM,默认值:无
- 必填项,用于绑定执行日期渲染的元素,值一般为选择器,或DOM对象
laydate.render({
elem: '#date1' //或 elem: document.getElementById('date1')、elem: lay('#date1') 等
});
2.2 type-控件选择类型
-
类型:String,默认值:date
-
用于单独提供不同的选择器类型,可选值如下表:
type可选值 | 名称 | 用途 |
---|---|---|
year | 年选择器 | 只提供年列表选择 |
month | 年月选择器 | 只提供年、月选择 |
date | 日期选择器 | 可选择:年、月、日。type默认值,一般可不填 |
time | 时间选择器 | 只提供时、分、秒选择 |
datetime | 日期时间选择器 | 可选择:年、月、日、时、分、秒 |
<div class="layui-inline">
<input type="text" style="border-color: #00FFFF;" class="layui-input" id="date1" />
</div>
<hr>
<div class="layui-inline">
<input type="text" style="border-color: #00FFFF;" class="layui-input" id="date2" />
</div>
<hr>
<div class="layui-inline">
<input type="text" style="border-color: #00FFFF;" class="layui-input" id="date3" />
</div>
<hr>
<div class="layui-inline">
<input type="text" style="border-color: #00FFFF;" class="layui-input" id="date4" />
</div>
<hr>
<div class="layui-inline">
<input type="text" style="border-color: #00FFFF;" class="layui-input" id="date5" />
</div>
<hr>
<div class="layui-inline">
<input type="text" style="border-color: #00FFFF;" class="layui-input" id="date6" />
</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',//绑定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为date3的元素
type:"datetime"//年月日时分秒选择器
});
});
</script>
结果展示:
2.3 range - 开启左右面板范围选择
- 类型:Boolean/String/Array,默认值:false
- 如果设置 true,将默认采用 “ - ” 分割。 你也可以直接设置 分割字符。五种选择器类型均支持左右面板的范围选择。
//日期时间范围选择
laydate.render({
elem: '#date7',
type: 'datetime',
range: true
});
结果展示:
2.4format - 自定义格式
- 类型:String,默认值:yyyy-MM-dd
- 通过日期时间各自的格式符和长度,来设定一个你所需要的日期格式。layDate 支持的格式如下:
格式符 | 说明 |
---|---|
yyyy | 年份,至少四位数。如果不足四位,则前面补零 |
y | 年份,不限制位数,即不管年份多少位,前面均不补零 |
MM | 月份,至少两位数。如果不足两位,则前面补零。 |
M | 月份,允许一位数。 |
dd | 日期,至少两位数。如果不足两位,则前面补零。 |
d | 日期,允许一位数。 |
HH | 小时,至少两位数。如果不足两位,则前面补零。 |
H | 小时,允许一位数。 |
mm | 分钟,至少两位数。如果不足两位,则前面补零 |
m | 分钟,允许一位数 |
ss | 秒数,至少两位数。如果不足两位,则前面补零。 |
s | 秒数,允许一位数。 |
例如:
格式 | 示例值 |
---|---|
yyyy-MM-dd HH:mm:ss | 2021-08-12 21:12:45 |
yyyy年MM月dd日 HH时mm分ss秒 | 2021年08月18日 20时08分08秒 |
yyyyMMdd | 20190818 |
dd/MM/yyyy | 16/09/2021 |
yyyy年M月 | 2021年8月 |
M月d日 | 8月15日 |
北京时间:HH点mm分 | 北京时间:20点08分 |
yyyy年的M月某天晚上,大概H点 | 2018年的8月某天晚上,大概20点 |
//自定义日期格式
laydate.render({
elem: '#date8',
//format: 'yyyy/MM月dd日'
format: 'yyyy年MM月dd日' //可任意组合
});
结果展示:
2.5 value - 初始值
- 类型:String,默认值:new Date()
- 支持传入符合format参数设定的日期格式字符,或者 new Date()
//传入符合format格式的字符给初始值
laydate.render({
elem: '#date9',
value: '2018-08-18' //必须遵循format参数设定的格式
});
//传入Date对象给初始值
laydate.render({
elem: '#date10',
value: new Date(1534766888000) //参数即为:2018-08-20 20:08:08 的时间戳
});
日期与时间选择详细请查看官方文档:https://www.layui.com/doc/modules/laydate.html
三.分页
1.引入layui.css和layui.js
<link rel="stylesheet" href="layui-v2.6.8/layui/css/layui.css" />
<script type="text/javascript" src="layui-v2.6.8/layui/layui.js" ></script>
2.加载模块
<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','pagee','next','limit','count'],//自定义排版
groups:10,//连续显示的页码数
});
});
</script>
结果展示:
3.基础参数
参数选项 | 说明 | 类型 | 默认值 |
---|---|---|---|
elem | 指向存放分页的容器,值可以是容器ID、DOM对象。如: 1.elem: ‘id’ 注意:这里不能加 # 号 2. elem: document.getElementById(‘id’) | String/Object | - |
count | 数据总数(一般通过服务端得到) | Number | - |
limit | 每页显示的条数。laypage将会借助 count 和 limit 计算出分页数。 | Number | 10 |
limits | 每页条数的选择项。如果 layout 参数开启了 limit,则会出现每页条数的select选择框 | Array | [10, 20, 30, 40, 50] |
curr | 起始页。一般用于刷新类型的跳页以及HASH跳页。如: //开启location.hash的记录 laypage.render({ elem: ‘test1’, count: 500, curr: location.hash.replace(’#!fenye=’, ‘’), //获取起始页 hash: ‘fenye’ //自定义hash值 }); | Number | 1 |
groups | 连续出现的页码个数 | Number | 5 |
prev | 自定义“上一页”的内容,支持传入普通文本和HTML | String | 上一页 |
next | 自定义“下一页”的内容,支持传入普通文本和HTML | String | 下一页 |
first | 自定义“首页”的内容,支持传入普通文本和HTML | String | 1 |
last | 自定义“尾页”的内容,支持传入普通文本和HTML | String | 总页数值 |
layout | 自定义排版。可选值有:count(总条目输区域)、prev(上一页区域)、page(分页区域)、next(下一页区域)、limit(条目选项区域)、refresh(页面刷新区域。注意:layui 2.3.0 新增) 、skip(快捷跳页区域) | Array | [‘prev’, ‘page’, ‘next’] |
theme | 自定义主题。支持传入:颜色值,或任意普通字符。如: 1. theme: '#c00’ 2. theme: ‘xxx’ //将会生成 class=“layui-laypage-xxx” 的CSS类,以便自定义主题 | String | - |
hash | 开启location.hash,并自定义 hash 值。如果开启,在触发分页时,会自动对url追加:#!hash值={curr} 利用这个,可以在页面载入时就定位到指定页 | String/Boolean | false |
4.jump - 切换分页的回调
- 当分页被切换时触发,函数返回两个参数:obj(当前分页的所有选项值)、first(是否首次,一般用于初始加载的判断)
<script type="text/javascript">
//加载laypage模块
layui.use('laypage',function(){
var laypage = layui.laypage;
//切换分页的回调
laypage.render({
elem:"page",//elem属性绑定的是容器的ID属性值,不需要加#
count:100,//总数量,一般通过服务端获取
limits:[5,10,20],//每页条数的选择项
layout:['prev','page','next','limit','count'],//自定义排版
groups:10,//连续显示的页码数
jump:function(obj,first){
//obj包含了当前分页的所有参数,比如
console.log(obj.curr);//得到当前页,以便向服务端请求对应页的数据
console.log(obj.limit);//得到每页显示的条数
//首次不执行
if(!first){
}
}
});
});
</script>
结果展示:
分页详细请查看官方文档:https://www.layui.com/doc/modules/laypage.html