Fork me on GitHub

LayUI学习

LayUI开始使用

国人开发的前端框架,好看,又好用

  1. 官网首页下载 layui 的最新版,下载后解压出来的目录如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ├─css //css目录
    │ │─modules //模块css目录(一般如果模块相对较大,我们会单独提取,比如下面三个:)
    │ │ ├─laydate
    │ │ ├─layer
    │ │ └─layim
    │ └─layui.css //核心样式文件
    ├─font //字体图标目录
    ├─images //图片资源目录(目前只有layim和编辑器用到的GIF表情)
    │─lay //模块核心目录
    │ └─modules //各模块组件
    │─layui.js //基础核心库
    └─layui.all.js //包含layui.js和所有模块的合并文件

从官方文档中复制的

  1. 快速上手:
    获得 layui 后,将其完整地部署到你的项目目录(或静态资源服务器),你只需要引入下述两个文件:
    1
    2
    ./layui/css/layui.css
    ./layui/layui.js //提示:如果是采用非模块化方式(最下面有讲解),此处可换成:./layui/layui.all.js

博主的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>开始使用</title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>
</head>
<body>
<!-- 你的HTML代码 -->
<script>
//一般直接写在一个js文件中
layui.use(['layer', 'form'], function(){
var layer = layui.layer,form = layui.form;

layer.msg('Hello World');
});

</script>
</body>
</html>

注意:引入css外部样式是这样:,并且前面那个rel=”stylesheet”不能少,不懂自行去百度

可能有人注意到我在script中写了代码,当然这个不是我写的,是从人家官方文档中复制的,但同样能说明问题

layui是采用模块化的方式来构建的,也就是说我们在使用layui的时候需要什么模块就去加载什么模块就好了,上面这段代码就代表这我去加载了模块

1
2
3
4
5
layui.use(['layer', 'form'], function(){
var layer = layui.layer,form = layui.form;

layer.msg('Hello World');
});

image
加载所需模块:

方法:layui.use([mods], callback)

Layui的内置模块并非默认就加载的,他必须在你执行该方法后才会加载。另外请注意,mods里面必须是一个合法的模块名,不能包含目录。

图标使用

可以看出我跳过了layui的栅格布局,因为这个它的用处不是很大,反正我觉得是这样,颜色也就不多说了,官方文档说的很清楚

当下比较流行的就是使用文字的形式来显示一个图标,就像阿里巴巴那样,而layui也是这样

  layui 的所有图标全部采用字体形式,取材于阿里巴巴矢量图标库(iconfont)。因此你可以把一个 icon 看作是一个普通的文字,这意味着你直接用 css 控制文字属性,如 color、font-size,就可以改变图标的颜色和大小。你可以通过 font-class 或 unicode 来定义不同的图标。

使用方式
1
<i class="layui-icon layui-icon-face-smile"></i>

image
我们可以使用文字的样式来修饰它,比如大小和颜色,如下:

1
<i class="layui-icon layui-icon-face-smile" style="font-size: 55px;color: red"></i>

image

动画和按钮

学过CSS的都知道我们可以使用CSS来实现很多动画的效果,那么LayUI给吗提供了一些动态效果,来供我们使用,那我们来看看如何使用好吗

动画使用方式

动画的使用非常简单,直接对元素赋值动画特定的 class 类名即可。如:

1
2
3
4
5
其中 layui-anim 是必须的,后面跟着的即是不同的动画类
<div class="layui-anim layui-anim-up"></div>

循环动画,追加:layui-anim-loop
<div class="layui-anim layui-anim-up layui-anim-loop"></div>

来我们对我们之前的那个红色笑脸加一个动画:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>开始使用</title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>
</head>
<body>
<script>

</script>

<!--其中 layui-anim 是必须的,后面跟着的即是不同的动画类-->
<i class="layui-icon layui-icon-face-smile layui-anim layui-anim-rotate layui-anim-loop" style="font-size: 55px;color: red"></i>
<!--<div class="layui-anim layui-anim-up" style="color: #0C0C0C">asdsa</div>-->
</body>
</html>

image
按钮使用方式

我们先复制官方文档的代码来看一下:

1
2
<button class="layui-btn">一个标准的按钮</button>
<a href="http://www.layui.com" class="layui-btn">一个可跳转的按钮</a>

image

官方文档中还给我们提供了很多,注意,我们只需要改变class属性即可,不必去在乎标签是什么

还有按钮组:

1
2
3
4
5
<div class="layui-btn-group">
<button class="layui-btn">增加</button>
<button class="layui-btn">编辑</button>
<button class="layui-btn">删除</button>
</div>

image

表单和导航

表单使用方式

复制文档代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>开始使用</title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>
</head>
<body>
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">输入框</label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码框</label>
<div class="layui-input-inline">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">辅助文字</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">选择框</label>
<div class="layui-input-block">
<select name="city" lay-verify="required">
<option value=""></option>
<option value="0">北京</option>
<option value="1">上海</option>
<option value="2">广州</option>
<option value="3">深圳</option>
<option value="4">杭州</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">复选框</label>
<div class="layui-input-block">
<input type="checkbox" name="like[write]" title="写作">
<input type="checkbox" name="like[read]" title="阅读" checked>
<input type="checkbox" name="like[dai]" title="发呆">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开关</label>
<div class="layui-input-block">
<input type="checkbox" name="switch" lay-skin="switch">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单选框</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="男" title="男">
<input type="radio" name="sex" value="女" title="女" checked>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">文本域</label>
<div class="layui-input-block">
<textarea name="desc" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>

<script>
//Demo
layui.use('form', function(){
var form = layui.form;

//监听提交
form.on('submit(formDemo)',function(data){
layer.msg(JSON.stringify(data.field));
return false;
});
});
</script>
</body>
</html>

image
有人就说,这个表单怎么提交呢?

这样提交:

1
2
3
4
5
6
7
8
9
10
11
12
<script>
//Demo
layui.use('form', function(){
var form = layui.form;

//监听提交
form.on('submit(formDemo)',function(data){
layer.msg(JSON.stringify(data.field));
return true;
});
});
</script>

return true;

1
<form class="layui-form" action="/index.jsp">

在表单的action中写上提交的地址就ok了,简单吧!!!

导航栏使用方式

我们复制文档中的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>开始使用</title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>
</head>
<body>
<ul class="layui-nav" lay-filter="">
<li class="layui-nav-item"><a href="">最新活动</a></li>
<li class="layui-nav-item layui-this"><a href="">产品</a></li>
<li class="layui-nav-item"><a href="">大数据</a></li>
<li class="layui-nav-item">
<a href="javascript:;">解决方案</a>
<dl class="layui-nav-child"> <!-- 二级菜单 -->
<dd><a href="">移动模块</a></dd>
<dd><a href="">后台模版</a></dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
<script>
//注意:导航 依赖 element 模块,否则无法进行功能性操作
layui.use('element', function(){
var element = layui.element;

//…
});
</script>
</body>
</html>

注意:我们需要加载element模块,还有一些其他导航我就不说了

image

我们复制侧边导航栏的代码到我们的代码里面去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>开始使用</title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>
</head>
<body>
<ul class="layui-nav" lay-filter="">
<li class="layui-nav-item"><a href="">最新活动</a></li>
<li class="layui-nav-item layui-this"><a href="">产品</a></li>
<li class="layui-nav-item"><a href="">大数据</a></li>
<li class="layui-nav-item">
<a href="javascript:;">解决方案</a>
<dl class="layui-nav-child"> <!-- 二级菜单 -->
<dd><a href="">移动模块</a></dd>
<dd><a href="">后台模版</a></dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<!-- 侧边导航: <ul class="layui-nav layui-nav-tree layui-nav-side"> -->
<li class="layui-nav-item layui-nav-itemed">
<a href="javascript:;">默认展开</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">选项1</a></dd>
<dd><a href="javascript:;">选项2</a></dd>
<dd><a href="">跳转</a></dd>
</dl>
</li>
<li class="layui-nav-item">
<a href="javascript:;">解决方案</a>
<dl class="layui-nav-child">
<dd><a href="">移动模块</a></dd>
<dd><a href="">后台模版</a></dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">产品</a></li>
<li class="layui-nav-item"><a href="">大数据</a></li>
</ul>
<script>
//注意:导航 依赖 element 模块,否则无法进行功能性操作
layui.use('element', function(){
var element = layui.element;

//…
});
</script>
</body>
</html>

效果:

image

选项卡、进度条、表格

选项卡使用方式

老方法,复制文档代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>开始使用</title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>
</head>
<body>
<div class="layui-tab ">
<ul class="layui-tab-title">
<li class="layui-this">网站设置</li>
<li>用户管理</li>
<li>权限分配</li>
<li>商品管理</li>
<li>订单管理</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">内容1</div>
<div class="layui-tab-item">内容2</div>
<div class="layui-tab-item">内容3</div>
<div class="layui-tab-item">内容4</div>
<div class="layui-tab-item">内容5</div>
</div>
</div>

<script>
//注意:选项卡 依赖 element 模块,否则无法进行功能性操作
layui.use('element', function(){
var element = layui.element;

//…
});
</script>
</body>
</html>

image

同样需要加载element模块,否则无法进行功能性操作

当然还有其他一些Tabs的风格,我们只需要改变class的一些属性,再加一些属性即可改变风格:

1
2
3
4
5
6
7
8
9
10
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<ul class="layui-tab-title">
<li class="layui-this">网站设置</li>
<li>用户管理</li>
<li>权限分配</li>
<li>商品管理</li>
<li>订单管理</li>
</ul>
<div class="layui-tab-content"></div>
</div>

image
进度条使用方式

1
2
3
4
5
6
7
8
9
10
<div class="layui-progress">
<div class="layui-progress-bar" lay-percent="10%"></div>
</div>

<script>
//注意进度条依赖 element 模块,否则无法进行正常渲染和功能性操作
layui.use('element', function(){
var element = layui.element;
});
</script>

这个没啥说的,大家可以看一下。
面板使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<div class="layui-collapse">
<div class="layui-colla-item">
<h2 class="layui-colla-title">杜甫</h2>
<div class="layui-colla-content layui-show">内容区域</div>
</div>
<div class="layui-colla-item">
<h2 class="layui-colla-title">李清照</h2>
<div class="layui-colla-content layui-show">内容区域</div>
</div>
<div class="layui-colla-item">
<h2 class="layui-colla-title">鲁迅</h2>
<div class="layui-colla-content layui-show">内容区域</div>
</div>
</div>

<script>
//注意:折叠面板 依赖 element 模块,否则无法进行功能性操作
layui.use('element', function(){
var element = layui.element;

//…
});
</script>

image

image

image

表格使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<table class="layui-table" lay-skin="line" lay-size="lg">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<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>

这个不需要去加载什么模块

image