This commit is contained in:
2024-10-29 14:04:59 +08:00
commit 48bf3e6f33
2839 changed files with 762707 additions and 0 deletions

View File

@@ -0,0 +1,214 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>完整库使用 - layui</title>
<link rel="stylesheet" href="../dist/css/layui.css">
<style>
body{padding: 10px;}
</style>
</head>
<body>
<textarea style="
position: fixed;
top: 0;
bottom: 0;
right:0;
width: 100px;
background-color:#666;
z-index:100;
resize: none;">
</textarea>
<div id="demo1"></div>
<div class="layui-btn-container">
<button class="layui-btn demo" test-active="test-form">测试弹出式 Form</button>
<button class="layui-btn demo" test-active="test-use">测试是否重复加载内置组件</button>
</div>
<div class="layui-inline">
<input class="layui-input" id="date1" placeholder="日期">
</div>
<div class="layui-tab" lay-filter="tabDemo">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="1">标题1</li>
<li lay-id="2">标题2</li>
<li lay-id="3">标题3</li>
<li lay-id="4">标题4</li>
<li lay-id="5">标题5</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form">
<select name="city" lay-verify="">
<option value="">请选择一个城市</option>
<option value="010">北京</option>
<option value="021">上海</option>
<option value="0571">杭州</option>
</select>
</div>
</div>
<div class="layui-tab-item">
<div id="test2" class="demo-transfer"></div>
</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 src="../dist/layui.js"></script>
<script>
console.log(layui.$);
//(function(){
layui.use(function(){
var $ = layui.jquery
,layer = layui.layer
,form = layui.form
,laypage = layui.laypage
,element = layui.element
,transfer = layui.transfer
,util = layui.util
,laydate = layui.laydate;
layer.msg('hello layui');
//layer.closeAll();
//自动测试
(function(run){
if(!run) return;
var timer = setInterval(function(){
location.reload();
}, 1000);
$.ajax({
url: './all.html'
,beforeSend: function(){
layer.load();
}
,success: function(){
layer.closeAll('loading', function(){
setTimeout(function(){
if($('.layui-layer-loading').length){
console.error('layer close 异常');
clearInterval(timer);
}
}, 200);
});
}
});
})(0);
laypage.render({
elem: 'demo1'
,count: 100 //总页数
});
console.log(lay('#footer').html());
laydate.render({
elem: '#date1'
})
//测试加载非内置模块
/*
layui.config({
base: 'extends/'
}).extend({
mod1: 'mod1'
,mod2: 'mod2'
}).use('mod1');
*/
//定义标题及数据源
transfer.render({
elem: '#test2'
,title: ['候选文人', '获奖文人'] //自定义标题
,data: [
{"value": "1", "title": "李白"}
,{"value": "2", "title": "杜甫"}
,{"value": "3", "title": "苏轼"}
,{"value": "4", "title": "李清照"}
,{"value": "5", "title": "鲁迅", "disabled": true}
,{"value": "6", "title": "巴金"}
,{"value": "7", "title": "冰心"}
,{"value": "8", "title": "矛盾"}
,{"value": "9", "title": "贤心"}
]
//,width: 150 //定义宽度
,height: 210 //定义高度
});
//触发事件
util.event('test-active', {
'test-form': function(){
layer.open({
type: 1
,resize: false
,content: ['<ul class="layui-form" style="margin: 10px;">'
,'<li class="layui-form-item">'
,'<label class="layui-form-label">输入框</label>'
,'<div class="layui-input-block">'
,'<input class="layui-input" name="field1">'
,'</div>'
,'</li>'
,'<li class="layui-form-item">'
,'<label class="layui-form-label">选择框</label>'
,'<div class="layui-input-block">'
,'<select name="field2">'
,'<option value="A">A</option>'
,'<option value="B">B</option>'
,'<select>'
,'</div>'
,'</li>'
,'<li class="layui-form-item" style="text-align:center;">'
,'<button type="submit" lay-submit lay-filter="*" class="layui-btn">提交</button>'
,'</li>'
,'</ul>'].join('')
,success: function(layero){
layero.find('.layui-layer-content').css('overflow', 'visible');
form.render().on('submit(*)', function(data){
layer.msg(JSON.stringify(data.field));
});
}
});
}
,'test-use': function(othis){
layui.use(['laytpl','laypage','laydate','jquery','layer','util','element','upload','slider','colorpicker','form','tree','transfer','table','carousel','rate','flow','code'], function(){
layer.tips('请观察 Network 是否有重复加载 js 文件。如果没有任何新的请求,则代表正常。', othis, {
time: 10*1000
});
});
}
});
});
//})();
</script>
<span class="layui-breadcrumb" lay-separator="-">
<a href="">首页</a>
<a href="">国际新闻</a>
<a href="">亚太地区</a>
<a><cite>正文</cite></a>
</span>
<div id="footer">© footer</div>
</body>
</html>

View File

@@ -0,0 +1,128 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>基础方法测试用例 - layui</title>
<link href="../src/css/layui.css" rel="stylesheet">
</head>
<body>
<div class="layui-container" style="padding: 30px 0;">
<div class="" style="padding: 30px 0;">
<blockquote class="layui-elem-quote" style="color: #666;">
点击按钮开始测试,测试结果打开浏览器控制台查看
</blockquote>
<div class="layui-btn-container">
<button class="layui-btn" lay-on="sort">layui.sort</button>
<button class="layui-btn" lay-on="type">layui.type</button>
<button class="layui-btn" lay-on="isArray">layui.isArray</button>
<button class="layui-btn" lay-on="extend">lay.extend</button>
</div>
</div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use(['lay', 'util'], function(){
var lay = layui.lay
,util = layui.util;
//事件
var style = 'color: orange; font-size: 16px;';
util.event('lay-on', {
sort: function(){
//sort
console.log('%c> layui.sort: ', style);
console.log(
'数字-整数型',
layui.sort([{a: 3},{a: 0},{a: 0},{a: -1},{a: -5},{a: 6},{a: 9},{a: -333333}], 'a')
);
console.log(
'数字-浮点型',
layui.sort([{a: 3.5},{a: 0.5},{a: 0.5},{a: -1.5},{a: -5.5},{a: 6.5},{a: 9.5},{a: -333333.5}], 'a')
);
console.log(
'数字-混合型',
layui.sort([{a: 1},{a: 20.5},{a: 20.3},{a: 3},{a: 52},{a: 4.3}], 'a')
);
console.log(
'中文',
layui.sort([{a: '男'},{a: '女'},{a: '男'},{a: '女'},{a: '男'}], 'a')
);
console.log(
'英文',
layui.sort([{a: 'E'},{a: 'B'},{a: 'D'},{a: 'C'},{a: 'A'}], 'a')
);
console.log(
'混合'
,layui.sort([
{a: 3}
,{a: '男'}
,{a: 0}
,{a: 66}
,{a: 99}
,{a: 'C'}
,{a: '女'}
,{a: 3.5}
,{a: 0}
,{a: -1}
,{a: 'B'}
,{a: 5.5}
,{a: '男'}
,{a: 'A'}
,{a: -5}
,{a: '男'}
,{a: 6}
,{a: 9}
], 'a')
);
console.log(
'数组成员全为数字',
layui.sort([1, 20.5, 19.5, 52, 4.5])
);
console.log(
'数组成员为混合型',
layui.sort([1, {a: 32}, 20.5, {a: 6}, 52, 5.5], 'a') //按成员对象的 key 为 a 进行比较
);
}
,type: function(){
console.log('%c> layui.type: ', style);
console.log(
'new RegExp()', layui.type(new RegExp()),
'\nnew Date()', layui.type(new Date()),
'\n[]', layui.type([])
);
}
,isArray: function(){
console.log('%c> layui.isArray: ', style);
console.log(
'[1,6]', layui.isArray([1,6]),
'\nlay("div")', layui.isArray(lay('div')),
'\ndocument.querySelectorAll("div")', layui.isArray(document.querySelectorAll('div')),
'\n{"key": "value"}', layui.isArray({key: 'value'})
);
}
,extend: function(){
console.log('%c> lay.extend: ', style);
console.log(
lay.extend(
{},
{a: 123, c: {ccc: 'ccc'}, arr: [1,3]},
{a: 111, b: 1, c: {bbb: 'bbb'}},
{a: 222222, arr: [5]}
)
);
console.log(
lay.extend([], [1,3,5])
);
}
})
});
</script>
</body>
</html>

View File

@@ -0,0 +1,133 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>按钮 - layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 10px;}
</style>
</head>
<body>
<div class="layui-container">
<span>按钮色系:</span>
<hr>
<div class="layui-btn-container">
<a href="" class="layui-btn layui-btn-primary">原始按钮</a>
<div class="layui-btn">默认按钮</div>
<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>
</div>
<div class="layui-btn-container">
<a href="" class="layui-btn layui-btn-primary layui-border">原始按钮</a>
<a href="" class="layui-btn layui-btn-primary layui-border-green">主色按钮</a>
<button class="layui-btn layui-btn-primary layui-border-blue">百搭按钮</button>
<button class="layui-btn layui-btn-primary layui-border-orange">暖色按钮</button>
<button class="layui-btn layui-btn-primary layui-border-red">警告按钮</button>
<button class="layui-btn layui-btn-primary layui-border-black">深色按钮</button>
</div>
<br><br>
<span>按钮图标:</span>
<hr>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe603;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe602;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe654;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe642;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe640;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe641;</i></button>
</div>
<br><br>
<span>按钮尺寸:</span>
<hr>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-lg">大型按钮</button>
<button class="layui-btn">默认按钮</button>
<button class="layui-btn layui-btn-sm">小型按钮</button>
<button class="layui-btn layui-btn-xs">迷你按钮</button>
</div>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-primary layui-btn-lg">大型按钮</button>
<button class="layui-btn layui-btn-primary">默认按钮</button>
<button class="layui-btn layui-btn-primary layui-btn-sm">小型按钮</button>
<button class="layui-btn layui-btn-primary layui-btn-xs">迷你按钮</button>
</div>
<br><br>
<span>按钮圆角:</span>
<hr>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-primary layui-btn-radius">原始按钮</button>
<button class="layui-btn 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>
</div>
<br><br>
<span>按钮图文:</span>
<hr>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-big layui-btn-primary layui-btn-radius">大型加圆角</button>
<button class="layui-btn layui-btn-sm layui-btn-normal"><i class="layui-icon layui-icon-delete"></i> 删除</button>
<button class="layui-btn layui-btn-xs layui-btn-disabled"><i class="layui-icon layui-icon-share"></i> 禁分享</button>
</div>
<br><br>
<span>按钮组:</span>
<hr>
<div class="layui-btn-group">
<button class="layui-btn">增加</button>
<button class="layui-btn ">编辑</button>
<button class="layui-btn">删除</button>
</div>
<div class="layui-btn-group">
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe654;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe642;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe640;</i></button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe602;</i></button>
</div>
<div class="layui-btn-group">
<button class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon">&#xe654;</i></button>
<button class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon">&#xe642;</i></button>
<button class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon">&#xe640;</i></button>
<button class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon">&#xe602;</i></button>
</div>
<br><br><br>
</div>
<script src="../src/layui.js"></script>
<script>
</script>
</body>
</html>

View File

@@ -0,0 +1,123 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>轮播组件 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 20px;}
/* 为了区分效果 */
div[carousel-item]>*{text-align: center; line-height: 280px; color: #fff;}
div[carousel-item]>*:nth-child(2n){background-color: #009688;}
div[carousel-item]>*:nth-child(2n+1){background-color: #5FB878;}
#test2 div[carousel-item]>*{line-height: 120px;}
</style>
</head>
<body>
<div class="layui-carousel" id="test1" lay-filter="test1">
<div carousel-item>
<div>条目1</div>
<div>条目2</div>
<div>条目3</div>
<div>条目4</div>
</div>
</div>
<br>
<div class="layui-carousel" id="test2">
<div carousel-item>
<div>条目1</div>
<div>条目2</div>
</div>
</div>
<br>
<div class="layui-carousel" id="test3">
<div carousel-item>
<div>条目1</div>
<div>条目2</div>
<div>条目3</div>
<div>条目4</div>
</div>
</div>
<br>
<div class="layui-carousel" id="test4">
<div carousel-item>
<div><img src="https://unpkg.com/outeres/demo/carousel/720x360-1.jpg"></div>
<div><img src="https://unpkg.com/outeres/demo/carousel/720x360-2.jpg"></div>
<div><img src="https://unpkg.com/outeres/demo/carousel/720x360-3.jpg"></div>
<div><img src="https://unpkg.com/outeres/demo/carousel/720x360-4.jpg"></div>
<div><img src="https://unpkg.com/outeres/demo/carousel/720x360-5.jpg"></div>
</div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use('carousel', function(){
var carousel = layui.carousel;
//建造实例
carousel.render({
elem: '#test1'
,index: 2
//,full: true
,arrow: 'always'
,autoplay: 'always'
,change: function(obj){
console.log(obj)
}
//,interval: 5000
//,autoplay: false
//,indicator: 'outside'
//,trigger: 'hover'
});
//事件
/*
carousel.on('change(test1)', function(obj){
console.log(obj)
});
*/
carousel.render({
elem: '#test2'
,interval: 1800
//,full: true
,anim: 'fade'
,height: '120px'
});
carousel.render({
elem: '#test3'
//,full: true
,arrow: 'always'
//,autoplay: false
//,indicator: 'outside'
//,trigger: 'hover'
,anim: 'updown'
//,full: true
});
// 图片轮播
carousel.render({
elem: '#test4'
,width: '720px'
,height: '360px'
,interval: 5000
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,273 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Code blocks adorn - Layui</title>
<link href="../src/css/layui.css" rel="stylesheet">
<style>
body{padding: 32px;}
pre{margin: 16px 0;}
</style>
</head>
<body>
<pre id="test" class="layui-test">
<textarea class="layui-hide">
<div class="layui-btn-container">
<button type="button" class="layui-btn">默认按钮</button>
</div>
<p class="layui-padding-3">
AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaA
</p>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-primary layui-border-green">主色按钮</button>
</div>
<script type="text/html">
<h3>{{= d.title }}</h3>
<ul>
{{# layui.each(d.list, function(index, item){ }}
<li>
<span>{{= item.modname }}</span>
<span>{{= item.alias }}</span>
<span>{{= item.site || '' }}</span>
</li>
{{# }); }}
<p>{{# if(d.list.length === 0){ }}
无数据
{{# } }}</p>
</ul>
</script>
<script>
layui.use(function () {
var layer = layui.layer;
const a = '1'
function aa(a, b) {
return '11'
}
layer.msg(layui.v)
})
</script>
</textarea>
</pre>
<pre><code class="layui-code" lay-options="{header: true}">
code line
code line
code line
</code></pre>
<pre class="layui-code" lay-options="{style: 'height: 300px'}" id="ID-multi-line"></pre>
<script type="module">
// 生成批量行,测试行结构
const elem = document.getElementById('ID-multi-line');
elem.innerHTML = Array(1001).fill().map(v => {
return Math.random().toString(32).substring(2).toUpperCase();
}).join('\n');
</script>
<pre class="layui-code" lay-options="{title: '不显示行号', ln: false}">
code line
code line
code line
code line
code line
code line
</pre>
<pre class="layui-code" lay-options="{title: '深色风格', skin: 'dark'}">
code line
code line
code line
code line
code line
code line
</pre>
<pre class="layui-code" lay-options="{title: '嵌套', encode: false}">
code line
code line
code line
code line
<pre class="layui-code" lay-options="{ln: false, encode: false}">
code line
code line
code line
<pre class="layui-code">
code line
code line
code line
</pre>
</pre>
</pre>
<pre class="layui-code" lay-options="{skin: 'dark', encode: false}">
code line
code line
code line
code line
code line
code line
<pre class="layui-code" lay-options="{skin: 'dark', encode: false}">
code line
code line
code line
code line
code line
code line
<pre class="layui-code" lay-options="{skin: 'dark', ln: false, encode: false}">
code line
code line
code line
code line
code line
code line
</pre>
</pre>
</pre>
</pre>
<pre class="layui-code" lay-options="{encode: true}">
<div>
123
</div>
</pre>
<pre class="layui-code" lay-options="{about: 'About info'}">
About
</pre>
<script src="../src/layui.js"></script>
<script src="https://cdn.staticfile.org/highlight.js/11.8.0/highlight.min.js"></script>
<script src="https://cdn.staticfile.org/prism/1.29.0/prism.min.js"></script>
<script>
layui.use(['code', 'dropdown'], function(){
var dropdown = layui.dropdown;
var $ = layui.$;
// return;
// 高亮主题 css 库
var themeData = $.map([
// hljs 主题库
'https://cdn.staticfile.org/highlight.js/11.8.0/styles/vs2015.min.css',
'https://cdn.staticfile.org/highlight.js/11.8.0/styles/vs.min.css',
'https://cdn.staticfile.org/highlight.js/11.8.0/styles/github-dark.min.css',
'https://cdn.staticfile.org/highlight.js/11.8.0/styles/github.min.css',
'https://cdn.staticfile.org/highlight.js/11.8.0/styles/base16/google-dark.min.css',
'https://cdn.staticfile.org/highlight.js/11.8.0/styles/base16/google-light.min.css',
'https://cdn.staticfile.org/highlight.js/11.8.0/styles/monokai-sublime.min.css',
'-',
// prism 主题库
'https://cdn.staticfile.org/prism/1.29.0/themes/prism-dark.min.css',
'https://cdn.staticfile.org/prism/1.29.0/themes/prism.min.css'
], function(v, index) {
return {
title: v,
link: v,
highlighter: v.indexOf('prism') === -1 ? 'hljs' : 'prism',
type: v === '-' ? '-' : 'normal'
};
});
var codeInst = layui.code({
elem: '#test',
preview: true,
codeStyle: 'height: 510px;',
previewStyle: 'word-wrap: break-word;',
// theme: 'dark',
// header: true,
// wordWrap: false, // 是否自动换行
lang: 'html',
highlighter: "hljs",
/*codeRender: function (code, opts) {
layui.link(themeData[1].link, 'layui-code-theme');
return hljs.highlight(code, {language: opts.lang}).value;
},*/
tools: [
'full',
{
title: ['文字换行'],
type: 'form',
event: function(obj) {
dropdown.render({
elem: obj.elem,
data: [{title: '自动换行', wordWrap: true}, {title: '不自动换行', wordWrap: false}],
show: true,
click: function(data, othis) {
codeInst.reload({
wordWrap: data.wordWrap
});
}
});
}
},
{
title: ['切换高亮主题'],
type: 'theme',
event: function(obj) {
dropdown.render({
elem: obj.elem,
data: themeData,
show: true,
click: function(data, othis) {
$('#layuicss-layui-code-theme').remove();
layui.link(data.link, 'layui-code-theme');
// 若高亮器有变化,则重载
if (data.highlighter !== codeInst.config.highlighter) {
var highlighter = {
hljs: function(code, opts) {
return hljs.highlight(code, {
language: opts.lang
}).value;
},
prism: function(code, opts) {
return Prism.highlight(
code,
Prism.languages[opts.lang],
opts.lang
);
}
};
// 重载
codeInst.reload({
highlighter: data.highlighter,
codeRender: function (code, opts) {
return highlighter[data.highlighter](code, opts);
}
});
}
}
});
}
}
]
});
// 仅重载 code
layui.debounce(function() {
codeInst.reloadCode({
codeRender: function(code, opts) {
layui.link(themeData[1].link, 'layui-code-theme');
return hljs.highlight(code, {language: opts.lang}).value;
}
});
}, 300)();
// 通用实例,根据元素属性定制化参数
layui.code({
elem: '.layui-code',
tools: ['tips'],
langMarker: true,
lang: 'html',
// preview: true
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,128 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>颜色选择器 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding:20px;}
.test-box{margin-bottom: 50px;}
</style>
</head>
<body>
<div class="layui-container">
<div class="test-box">
<div class="layui-inline">
<input class="layui-input" id="LAY-test1">
</div>
<div id="test1"></div>
</div>
<div class="test-box">
<div id="test2"></div>
</div>
<div class="test-box">
<div id="test3"></div>
</div>
<div class="test-box">
<div id="test4"></div>
</div>
<div class="test-box">
<div id="test5"></div>
</div>
<div class="test-box">
<div id="test6"></div>
</div>
<div class="test-box">
<div class="test-more" lay-options="{color: '#FF0000'}"></div>
<div class="test-more" lay-options="{color: '#008000'}"></div>
<div class="test-more" lay-options="{color: '#0000FF'}"></div>
</div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use(['colorpicker', 'layer'], function(){
var colorpicker = layui.colorpicker;
colorpicker.render({
elem: '#test1'
//,predefine: true //开启预定义颜色
//,colors: ['#F00','#0F0','#00F','rgb(255, 69, 0)','rgba(255, 69, 0, 0.5)']
,change: function(color){
this.done(color);
}
,done: function(color){
layui.$('#LAY-test1').val(color);
document.body.style.backgroundColor = color;
}
,cancel: function(color){
this.done(color);
console.log('cancel', color);
}
,close: function(color){
console.log('close', color);
}
});
colorpicker.render({
elem: '#test2'
,color: 'rgba(218, 121, 157, 1)' //设置默认色
,predefine: true
,alpha: true //开启透明度
,format: 'rgb'
,change: function(color){
console.log(color)
}
});
colorpicker.render({
elem: '#test3'
,color: '#000'
//,alpha: true
//,format: 'rgb' //设置输入显示格式为rgb
});
colorpicker.render({
elem: '#test4'
,color: '#06eeb8'
,predefine: true //开启预定义色
,format: 'rgb'
});
colorpicker.render({
elem: '#test5'
,color: '#ffd900'
,predefine: true
,size: 'lg'
});
colorpicker.render({
elem: '#test6'
,color: '#F00'
,predefine: true
,colors: ['#F00','#0F0','#00F','rgb(255, 69, 0)','rgba(255, 69, 0, 0.5)']
,size: 'xs'
});
// 同时绑定多个
colorpicker.render({
elem: '.test-more',
done: function(color){
console.log(this.elem, color);
}
});
})
</script>
</body>
</html>

View File

@@ -0,0 +1,261 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>下拉菜单 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
</head>
<body>
<div class="layui-container">
<div class="layui-btn-container" style="padding: 30px 0;">
<button class="layui-btn" id="demo1">
按钮下拉
<i class="layui-icon layui-icon-down layui-font-12"></i>
</button>
<button class="layui-btn layui-btn-primary" id="demo2">
按钮下拉
<i class="layui-icon layui-icon-down layui-font-12"></i>
</button>
</div>
<div class="layui-text">
<a href="javascript:;" id="demo3">文字下拉 <i class="layui-icon layui-icon-down"></i></a>
</div>
<div class="layui-bg-gray" style="margin-top: 30px; width: 100%; height: 300px; text-align: center;" id="demo20">
<span class="layui-font-gray" style="position: relative; top:50%;">鼠标右键菜单</span>
</div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use('dropdown', function(){
var dropdown = layui.dropdown;
dropdown.render({
elem: '#demo1'
,shade: [0.1, '#ddd']
//,align: 'right'
,data: [{
title: 'menu item 1'
,templet: '<i class="layui-icon layui-icon-light"></i> {{= d.title }} <span class="layui-badge-dot"></span>'
,id: ''
,href: ''
,type: '' //菜单类型支持normal/group/parent
},{
title: 'menu item <strong>2</strong>'
,templet: '<img src="https://unpkg.com/outeres@0.1.1/demo/avatar/0.png" style="width: 16px;"> {{- d.title }}'
,id: ''
,href: 'https://www.layui.com/'
,target: '_blank'
},{type: '-'},{},{
title: 'menu item 3 <hello>'
,id: ''
,type: 'group'
,child: [{
title: 'menu item 3-1'
,id: ''
},{
title: 'menu item 3-2'
,id: ''
,child: [{
title: 'menu item 3-2-1'
,id: ''
},{
title: 'menu item 3-2-2'
,id: ''
,type: 'group'
,child: [{
title: 'menu item 3-2-2-1'
,id: ''
},{
title: 'menu item 3-2-2-2'
,id: ''
}]
},{
title: 'menu item 3-2-3'
,id: ''
}]
},{
title: 'menu item 3-3'
,id: ''
,type: 'group'
,child: [{
title: 'menu item 3-3-1'
,id: ''
},{
title: 'menu item 3-3-2'
,id: ''
,child: [{
title: 'menu item 3-3-2-1'
,id: ''
},{
title: 'menu item 3-3-2-2'
,id: ''
},{
title: 'menu item 3-3-2-3'
,id: ''
}]
},{
title: 'menu item 3-3-3'
,id: ''
}]
}]
}
,{type: '-'}
,{
title: 'menu item 4'
,id: ''
},{
title: 'menu item 5'
,id: ''
,child: [{
title: 'menu item 5-1'
,id: ''
,child: [{
title: 'menu item 5-1-1'
,id: ''
},{
title: 'menu item 5-1-2'
,id: ''
},{
title: 'menu item 5-1-3'
,id: ''
}]
},{
title: 'menu item 5-2'
,id: ''
},{
title: 'menu item 5-3'
,id: ''
}]
},{type:'-'},{
title: 'menu item 6'
,id: ''
,type: 'group'
,isSpreadItem: false
,child: [{
title: 'menu item 6-1'
,id: ''
},{
title: 'menu item 6-2'
,id: ''
},{
title: 'menu item 6-3'
,id: ''
}]
}]
,id: 'demo1'
// 触发点击事件的元素范围 --- default: 仅子菜单触发点击事件(默认,可不填); all: 所有父子菜单均触发点击事件
,clickScope: 'all'
// 菜单被点击的事件
,click: function(obj){
console.log(obj);
}
});
var inst = dropdown.render({
elem: '#demo2'
// ,show: true
,data: [{
title: 'menu item 1'
,href: '#1'
,disabled: true
},{
title: 'menu item 2(点击不关闭)'
,href: '#2'
,id: 'bbb'
},{
title: 'menu item 3'
,href: '#3'
}]
,click: function(data, othis){
console.log(data);
if(data.id === 'bbb'){
return false;
}
}
,ready: function(){
console.log(arguments);
}
});
dropdown.render({
elem: '#demo3'
,content: '自定义内容 123 '
,style: 'background:#666;color:#fff;padding:15px;'
,align: 'center'
,trigger: 'hover'
});
//右键
dropdown.render({
elem: document//'#demo20' //也可绑定到 document从而重置整个右键
,trigger: 'contextmenu' //contextmenu
,isAllowSpread: false
//,style: 'width: 200px'
,customName: {
children: 'children'
}
,data: [{
title: 'menu item 1'
,id: '#1'
},{
title: 'menu item 2'
,id: 'reload'
},{type:'-'},{
title: 'menu item 3'
,id: '#3'
,children: [{
title: 'menu item 3-1'
,id: '#1'
},{
title: 'menu item 3-2'
,id: '#2'
},{
title: 'menu item 3-3'
,id: '#3'
}]
},{type:'-'},{
title: 'menu item 4'
,id: ''
},{
title: 'menu item 5'
,id: '#1'
},{
title: 'menu item 6'
,id: '#1'
}]
,click: function(obj, othis){
if(obj.id === 'reload'){
location.reload();
}
}
});
return;
dropdown.render({
elem: document
,content: '123'
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,192 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>常用元素 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding:20px;}
</style>
</head>
<body>
<ul class="layui-timeline">
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
<div class="layui-timeline-content layui-text">
<h2 class="layui-timeline-title">2.0.0</h2>
<p>杜甫的思想核心是儒家的仁政思想,他有“致君尧舜上,<em>再使风俗淳”的宏伟抱负</em>。杜甫虽然在世时名声并不显赫,但后来声名</p>
<ul>
<li>思想</li>
<li>虽然在</li>
</ul>
哈哈哈
</div>
</li>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
<div class="layui-timeline-content layui-text">
<h2 class="layui-timeline-title">1.0.9</h2>
哈哈哈
</div>
</li>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">标题</div>
内容
</div>
</li>
</ul>
<hr>
徽章:
<span class="layui-badge-dot"></span>
<span class="layui-badge-dot layui-bg-orange"></span>
<span class="layui-badge-dot layui-bg-green"></span>
<span class="layui-badge-dot layui-bg-cyan"></span>
<span class="layui-badge-dot layui-bg-blue"></span>
<span class="layui-badge-dot layui-bg-black"></span>
<span class="layui-badge-dot layui-bg-gray"></span>
<span class="layui-badge">6</span>
<span class="layui-badge">99</span>
<span class="layui-badge">61728</span>
<span class="layui-badge"></span>
<span class="layui-badge layui-bg-orange"></span>
<span class="layui-badge layui-bg-green">绿</span>
<span class="layui-badge layui-bg-cyan"></span>
<span class="layui-badge layui-bg-blue"></span>
<span class="layui-badge layui-bg-black"></span>
<span class="layui-badge layui-bg-gray"></span>
<span class="layui-badge-rim">Hot</span>
<hr>
<div class="layui-collapse" lay-filter="test" lay-accordion>
<div class="layui-colla-item">
<h2 class="layui-colla-title">杜甫</h2>
<div class="layui-colla-content layui-show">
<p>杜甫的思想核心是儒家的仁政思想他有“致君尧舜上再使风俗淳”的宏伟抱负。杜甫虽然在世时名声并不显赫但后来声名远播对中国文学和日本文学都产生了深远的影响。杜甫共有约1500首诗歌被保留了下来大多集于《杜工部集》。</p>
</div>
</div>
<div class="layui-colla-item">
<h2 class="layui-colla-title">李清照</h2>
<div class="layui-colla-content">
<p>李清照出生于书香门第,早期生活优裕,其父李格非藏书甚富,她小时候就在良好的家庭环境中打下文学基础。出嫁后与夫赵明诚共同致力于书画金石的搜集整理。金兵入据中原时,流寓南方,境遇孤苦。所作词,前期多写其悠闲生活,后期多悲叹身世,情调感伤。形式上善用白描手法,自辟途径,语言清丽。</p>
</div>
</div>
<div class="layui-colla-item">
<h2 class="layui-colla-title">鲁迅</h2>
<div class="layui-colla-content">
<p>鲁迅一生在文学创作、文学批评、思想研究、文学史研究、翻译、美术理论引进、基础科学介绍和古籍校勘与研究等多个领域具有重大贡献。他对于五四运动以后的中国社会思想文化发展具有重大影响,蜚声世界文坛,尤其在韩国、日本思想文化领域有极其重要的地位和影响,被誉为“二十世纪东亚文化地图上占最大领土的作家”。</p>
</div>
</div>
</div>
<br><br>
<div class="layui-progress" lay-showPercent="true" lay-filter="demo-progress-1">
<div class="layui-progress-bar" lay-percent="1/3"></div>
</div>
<br>
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-red" lay-percent="20%"></div>
</div>
<br>
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-orange" lay-percent="30%"></div>
</div>
<br>
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-green" lay-percent="40%"></div>
</div>
<br>
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-blue" lay-percent="50%"></div>
</div>
<br>
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-cyan" lay-percent="60%"></div>
</div>
<br>
<div class="layui-progress layui-progress-big" lay-filter="demo" lay-showPercent="true">
<div class="layui-progress-bar" lay-percent="100%"></div>
</div>
<br>
<div class="layui-progress layui-progress-big" lay-filter="demo" lay-showPercent="true">
<div class="layui-progress-bar" lay-percent="1700 / 2000"></div>
</div>
<br><br>
<blockquote class="layui-elem-quote layui-text">
<p>Layui - 原生态模块化前端 UI 组件库</p>
<p>Layui - 原生态模块化前端 UI 组件库</p>
</blockquote>
<blockquote class="layui-elem-quote layui-quote-nm">
Layui - 原生态模块化前端 UI 组件库
Layui - 原生态模块化前端 UI 组件库
Layui - 原生态模块化前端 UI 组件库
Layui - 原生态模块化前端 UI 组件库
Layui - 原生态模块化前端 UI 组件库
</blockquote>
<fieldset class="layui-elem-field">
<legend>字段集区块 - 默认风格</legend>
<div class="layui-field-box">
内容区域
</div>
</fieldset>
默认分割线
<hr>
赤色分割线
<hr class="layui-bg-red">
橙色分割线
<hr class="layui-bg-orange">
墨绿分割线
<hr class="layui-bg-green">
青色分割线
<hr class="layui-bg-cyan">
蓝色分割线
<hr class="layui-bg-blue">
黑色分割线
<hr class="layui-bg-black">
灰色分割线
<hr class="layui-bg-gray">
<script src="../src/layui.js"></script>
<script>
layui.use(['element', 'form'], function(){
var element = layui.element;
element.on('collapse(test)', function(data){
console.log(data);
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,269 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>导航 - 常用元素 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 16px;}
.demo-nav-tree>.layui-inline{vertical-align: top;}
</style>
</head>
<body>
<ul class="layui-nav">
<li class="layui-nav-item"><a href="">最新活动</a></li>
<li class="layui-nav-item">
<a href="javascript:;">产品</a>
</li>
<li class="layui-nav-item"><a href="">大数据<span class="layui-badge-dot"></span></a></li>
<li class="layui-nav-item">
<a href="javascript:;">方案</a>
<dl class="layui-nav-child layui-nav-child-c">
<dd><a href="">移动模块</a></dd>
<dd class="layui-this"><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=""><img src="http://t.cn/RCzsdCq" class="layui-nav-img"></a>
<dl class="layui-nav-child layui-nav-child-r">
<dd><a href="">Your organizations</a></dd>
<dd><a href="">Settings</a></dd>
<hr>
<dd><a href="">Sign out</a></dd>
</dl>
</li>
</ul>
<br>
<ul class="layui-nav layui-bg-cyan">
<li class="layui-nav-item layui-this"><a href="">最新活动</a></li>
<li class="layui-nav-item">
<a href="javascript:;">产品</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 class="layui-this"><a href="">后台模版</a></dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
<br>
<ul class="layui-nav layui-bg-green">
<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="">选项1</a></dd>
<dd><a href="">选项2</a></dd>
<dd><a href="">选项3</a></dd>
</dl>
</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 class="layui-this"><a href="">后台模版</a></dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
<br>
<ul class="layui-nav layui-bg-blue" lay-bar="disabled">
<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="">选项1</a></dd>
<dd><a href="">选项2</a></dd>
<dd><a href="">选项3</a></dd>
</dl>
</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 class="layui-this"><a href="">后台模版</a></dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
<br>
<ul class="layui-nav layui-bg-gray">
<li class="layui-nav-item"><a href="">最新活动</a></li>
<li class="layui-nav-item">
<a href="javascript:;">产品</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 class="layui-this"><a href="">后台模版</a></dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
<br>
<div class="demo-nav-tree">
<div class="layui-inline">
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item">
<a class="" href="javascript:;">产品</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">移动模块</a></dd>
<dd>
<a href="javascript:;">后台模版</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">组件一</a></dd>
<dd>
<a href="javascript:;">组件二</a>
</dd>
<dd><a href="javascript:;">组件三</a></dd>
</dl>
</dd>
<dd><a href="javascript:;">电商平台</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="javascript:;">移动模块</a></dd>
<dd>
<a href="javascript:;">后台模版</a>
</dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="javascript:;">云市场</a></li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
</div>
<div class="layui-inline">
<ul class="layui-nav layui-nav-tree layui-bg-gray" lay-filter="test">
<li class="layui-nav-item">
<a class="" href="javascript:;">产品</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">移动模块</a></dd>
<dd>
<a href="javascript:;">后台模版</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">组件一</a></dd>
<dd>
<a href="javascript:;">组件二</a>
</dd>
<dd><a href="javascript:;">组件三</a></dd>
</dl>
</dd>
<dd><a href="javascript:;">电商平台</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="javascript:;">移动模块</a></dd>
<dd>
<a href="javascript:;">后台模版</a>
</dd>
<dd><a href="">电商平台</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="javascript:;">云市场</a></li>
<li class="layui-nav-item"><a href="">社区</a></li>
</ul>
</div>
<div class="layui-inline">
<ul class="layui-nav layui-bg-cyan layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">产品</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">移动模块</a></dd>
<dd>
<a href="javascript:;">后台模版</a>
</dd>
<dd><a href="javascript:;">电商平台</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="javascript:;">移动模块</a></dd>
<dd><a href="javascript:;">后台模版</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>
</div>
</div>
<br>
<br>
<span class="layui-breadcrumb">
<a href="">首页</a>
<a href="">国际新闻</a>
<a href="">亚太地区</a>
<a><cite>正文</cite></a>
</span>
<br><br>
<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>
<br><br><br><br><br><br>
<script src="../src/layui.js"></script>
<script>
layui.use(['element', 'form'], function(){
var element = layui.element;
element.on('nav(test)', function(elem){
console.log(elem)
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>选项卡 - 常用元素 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding:20px;}
</style>
</head>
<body>
<div class="layui-tab" lay-filter="tabDemo" lay-allowClose="true">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="1">标题1</li>
<li lay-id="2">标题2</li>
<li lay-id="3">标题3</li>
<li lay-id="4">标题4</li>
<li lay-id="5">标题5</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>
<button class="layui-btn" onclick="layui.element.tabChange('tabDemo', 3)">手工切换到“标题3”</button>
<button class="layui-btn" onclick="layui.element.tabAdd('tabDemo', {title:'新标题', content:'新内容', id: +new Date, change: true})">添加Tab</button>
<button class="layui-btn" onclick="layui.element.tabDelete('tabDemo', 4)">删除“标题4”</button>
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title">
<li class="layui-this">标题1</li>
<li>标题2</li>
<li>标题3</li>
<li>标题4</li>
<li>标题5</li>
<li>标题6</li>
</ul>
</div>
<div class="layui-inline">
<div class="layui-tab layui-tab-card">
<ul class="layui-tab-title">
<li class="layui-this">标题一</li>
<li>标题2</li>
<li>标题3</li>
<li>标题4</li>
<li>标题5</li>
<li>标题6</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form">
<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
</select>
</div>
</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 class="layui-tab-item">6</div>
</div>
</div>
</div>
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this"><a href="#1">标题题题题题题1</a></li>
<li><a href="#2">标题题题2</a></li>
<li><a href="#3">标题3</a></li>
<li><a href="#4">标题题题题题题题4</a></li>
<li><a href="#5">标题5</a></li>
<li><a href="#6">标题6</a></li>
<li><a href="#7">标题7</a></li>
<li><a href="#8">标题题题题题题题8</a></li>
</ul>
</div>
<div class="layui-tab" lay-filter="test" lay-allowClose="true">
<ul class="layui-tab-title">
<li class="layui-this">标题1</li>
<li>标题2</li>
<li>标题3</li>
<li>标题4</li>
<li>标题5</li>
<li>标题6</li>
<li>标题7</li>
<li>标题8</li>
</ul>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use(['element', 'form'], function(){
var element = layui.element;
element.on('tab(test)', function(data){
console.log(this, data);
});
element.on('tabDelete(tabDemo)', function(data){
console.log(this, data);
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>自定义模块 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
</style>
</head>
<body>
<script src="../src/layui.js"></script>
<script>
layui.config({
base: './js/'
}).extend({
index: 'index'
,test: 'child/test'
}).use('test');
layui.use('index')
</script>
</body>
</html>

View File

@@ -0,0 +1,12 @@
/**
扩展模块,且依赖 mod2
**/
layui.define('mod2', function(exports){
var $ = layui.jquery;
console.log(layui.mod2, layui.layer, layui.form)
exports('mod1', {
name: 'mod1'
})
});

View File

@@ -0,0 +1,11 @@
/**
扩展模块,只依赖内置模块
**/
layui.define(function(exports){
console.log('mod2.js')
exports('mod2', {
name: 'mod2'
})
});

View File

@@ -0,0 +1,143 @@
/**
@Namelayui.modDemo XX组件
@Author贤心
@LicenseMIT
*/
layui.define(['laytpl'], function(exports){
"use strict";
var $ = layui.$
,laytpl = layui.laytpl
//模块名
,MOD_NAME = 'modDemo'
//外部接口
,modeDemo = {
config: {}
,index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0
//设置全局项
,set: function(options){
var that = this;
that.config = $.extend({}, that.config, options);
return that;
}
//事件监听
,on: function(events, callback){
return layui.onevent.call(this, MOD_NAME, events, callback);
}
}
//操作当前实例
,thisModule = function(){
var that = this
,options = that.config
,id = options.id || that.index;
thisModule.that[id] = that; //记录当前实例对象
thisModule.config[id] = options; //记录当前实例配置项
return {
config: options
//重置实例
,reload: function(options){
that.reload.call(that, options);
}
}
}
//获取当前实例配置项
,getThisModuleConfig = function(id){
var config = thisModule.config[id];
if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');
return config || null;
}
//字符常量
,ELEM = 'layui-modeDemo'
//主模板
,TPL_MAIN = ['<div class="ayui-border-box">'
,'</div>'].join('')
//构造器
,Class = function(options){
var that = this;
that.index = ++transfer.index;
that.config = $.extend({}, that.config, transfer.config, options);
that.render();
};
//默认配置
Class.prototype.config = {
};
//重载实例
Class.prototype.reload = function(options){
var that = this;
layui.each(options, function(key, item){
if(item.constructor === Array) delete that.config[key];
});
that.config = $.extend(true, {}, that.config, options);
that.render();
};
//渲染
Class.prototype.render = function(){
var that = this
,options = that.config;
//解析模板
that.elem = $(TPL_MAIN);
var othis = options.elem = $(options.elem);
if(!othis[0]) return;
//索引
that.key = options.id || that.index;
//插入组件结构
othis.html(that.elem);
that.events(); //事件
};
//事件
Class.prototype.events = function(){
var that = this;
};
//记录所有实例
thisModule.that = {}; //记录所有实例对象
thisModule.config = {}; //记录所有实例配置项
//重载实例
modeDemo.reload = function(id, options){
var that = thisModule.that[id];
that.reload(options);
return thisModule.call(that);
};
//核心入口
modeDemo.render = function(options){
var inst = new Class(options);
return thisTransfer.call(inst);
};
exports(MOD_NAME, modeDemo);
});

View File

@@ -0,0 +1,92 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>流加载 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 15px;}
.flow-default{ font-size: 0;}
.flow-default li{display: inline-block; margin-right: 10px; font-size: 14px; width: 48%; margin-bottom: 10px; height: 200px; line-height: 200px; text-align: center; background-color: #eee;}
img{width: 500px; height: 300px;}
.flow-default img{width: 100%; height: 100%;}
</style>
</head>
<body>
<ul class="flow-default" id="test1"></ul>
<div class="layui-hide">
<ul class="flow-default" id="test2"></ul>
</div>
<div class="demo" style="height: 300px; overflow: auto;">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/error.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
<img src="https://sentsin.gitee.io/res/images/demo/loading.gif" lay-src="https://sentsin.gitee.io/res/images/demo/layer.png">
</div>
<script src="../src/layui.js"></script>
<script>
layui.use('flow', function(){
var flow = layui.flow;
flow.load({
elem: '#test1' //流加载容器
//,scrollElem: '.flow-default' //滚动条所在元素默认document
//,isAuto: false
//,end: '没了'
,isLazyimg: true
,done: function(page, next){ //加载下一页
console.log('done:', page)
setTimeout(function(){
var lis = [];
for(var i = 0; i < 6; i++){
lis.push('<li><img lay-src="https://sentsin.gitee.io/res/images/demo/layer.png?v='+ (page+i) +'"></li>')
}
next(lis.join(''), page < 3);
}, 500);
}
});
flow.load({
elem: '#test2' //流加载容器
//,scrollElem: '.flow-default' //滚动条所在元素默认document
//,isAuto: false
//,end: '没了'
,isLazyimg: true
,done: function(page, next){ //加载下一页
setTimeout(function(){
var lis = [];
for(var i = 0; i < 6; i++){
lis.push('<li><img lay-src="https://sentsin.gitee.io/res/images/demo/layer.png?v='+ (page+i) +'"></li>')
}
next(lis.join(''), page < 3);
}, 500);
}
});
//按屏加载图片
flow.lazyimg({
elem: '.demo img'
,scrollElem: '.demo'
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,529 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>表单模块 - layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 16px;}
</style>
</head>
<body>
<form class="layui-form" method="get" lay-filter="top">
<div class="layui-row layui-col-space16">
<div class="layui-col-md3">
<div class="layui-input-group">
<div class="layui-input-split layui-input-prefix">
前置信息
</div>
<input type="text" name="arr[]" required lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input" lay-affix="clear">
<div class="layui-input-split layui-input-suffix">
后置信息
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<input type="text" name="arr[]" required placeholder="请输入" autocomplete="off" class="layui-input">
<div class="layui-input-split">
<i class="layui-icon layui-icon-down"></i>
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-username"></i>
</div>
<input type="text" name="arr[]" value="" required placeholder="请输入" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
</div>
<input type="password" name="arr[]" value="" required placeholder="请输入" autocomplete="off" class="layui-input" lay-affix="eye">
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<input type="text" name="arr[]" value="" required placeholder="自定义动态点缀图标" autocomplete="off" class="layui-input" lay-affix="set" lay-filter="set">
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<div class="layui-input-prefix layui-input-split">
<i class="layui-icon layui-icon-username"></i>
</div>
<input type="text" name="arr[]" value="" required placeholder="请输入" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<input type="text" name="arr[]" value="" required placeholder="请输入" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<input type="text" name="arr[]" value="禁用或只读状态" disabled placeholder="请输入" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-date"></i>
</div>
<input type="text" name="arr[]" required placeholder="前缀和后缀" autocomplete="off" class="layui-input">
<div class="layui-input-suffix">
<i class="layui-icon layui-icon-down"></i>
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<input type="text" name="arr[]" required placeholder="后缀+clear" lay-affix="clear" autocomplete="off" class="layui-input">
<div class="layui-input-suffix">
<i class="layui-icon layui-icon-more-vertical"></i>
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-username"></i>
</div>
<select name="selectdemo">
<option value="">在 select 中使用</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="广州">广州</option>
<option value="深圳">深圳</option>
</select>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-date"></i>
</div>
<input type="text" name="arr[]" required placeholder="前缀和后缀+动态点缀" autocomplete="off" class="layui-input" lay-affix="clear">
<div class="layui-input-suffix">
<i class="layui-icon layui-icon-down"></i>
</div>
</div>
</div>
<div class="layui-col-md3">
<input type="number" value="1.1" name="arr[]" required placeholder="数字输入框" lay-affix="number" autocomplete="off" class="layui-input">
</div>
<div class="layui-col-md3">
<input type="number" step="0.01" min="0" max="10" name="arr[]" required placeholder="数字输入框" lay-affix="number" autocomplete="off" class="layui-input">
</div>
<div class="layui-col-md3">
<input type="number" step="0.01" min="0" max="10" name="arr[]" required placeholder="系统自带数字输入框" autocomplete="off" class="layui-input">
</div>
<div class="layui-col-md3">
<input type="number" disabled name="arr[]" required placeholder="数字输入框 禁用状态" lay-affix="number" autocomplete="off" class="layui-input">
</div>
<div class="layui-col-md12">
<div class="layui-input-wrap">
<textarea class="layui-textarea" lay-affix="clear"></textarea>
</div>
</div>
<div class="layui-col-md12">
<button class="layui-btn" id="testSubmit">立即提交</button>
</div>
</div>
</form>
<hr>
<form class="layui-form layui-form-pane1" action="" lay-filter="first">
<div class="layui-form-item">
<label class="layui-form-label">输入框</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required|title" lay-reqText="标题不能为空" required placeholder="请输入标题" autocomplete="off" class="layui-input" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机</label>
<div class="layui-input-block">
<input type="tel" name="phone" lay-verify="required|phone" autocomplete="off" class="layui-input demo-phone">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">验证码</label>
<div class="layui-input-inline">
<input type="text" name="vercode" lay-verify="required" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid" style="padding: 0!important;">
<button type="button" class="layui-btn layui-btn-primary" lay-on="get-vercode">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<input type="email" name="email" lay-verify="email" lay-vertype="alert" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">生日</label>
<div class="layui-input-block">
<input type="text" name="date" id="date" lay-verify="date" placeholder="yyyy-MM-dd" 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" lay-verify="required|pass" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">请务必填写用户名</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">范围</label>
<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-block">
<select name="quiz" lay-verify="required" lay-vertype="tips" lay-filter="quiz111">
<option value="">请"选择"问题</option>
<option value="0">你工"作"的 第一个城市</option>
<option value="1" disabled>你的工号</option>
<option value="2">
你最喜欢的老师
</option>
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">select分组</label>
<div class="layui-input-block">
<select name="quiz" lay-filter="quiz">
<option value="">请选择问题</option>
<optgroup label="城市记忆">
<option value="0">你工作的第一个城市</option>
</optgroup>
<optgroup label="学生时代">
<option value="1" disabled>你的工号</option>
<option value="2">你最喜欢的老师</option>
</optgroup>
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">选择框</label>
<div class="layui-input-block">
<select name="interest" lay-filter="interest">
<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">
<div class="layui-inline">
<label class="layui-form-label">搜索选择框</label>
<div class="layui-input-block">
<select name="interest-search" lay-filter="interest-search" lay-search="">
<option value="">请搜索</option>
<option value="写作">写"作"</option>
<option value="阅读" disabled>阅读</option>
<option value="游戏" disabled>游戏</option>
<option value="音乐">音乐</option>
<option value="旅行">旅行</option>
<option value="读书">读书</option>
<option value="1">layer</option>
<option value="2" disabled>laydate</option>
<option value="3">3</option>
<option value="4">layim</option>
<option value="5">laypage</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">搜索分组框</label>
<div class="layui-input-block">
<select name="interest-search-group" lay-filter="interest-search-group" lay-search="">
<option value="">请搜索</option>
<optgroup label="分组a">
<option value="a1">a1</option>
<option value="a2">a2</option>
</optgroup>
<optgroup label="分组aa">
<option value="aa1">aA1</option>
<option value="aa2">aA2</option>
</optgroup>
<optgroup label="分组b">
<option value="b1">b1</option>
<option value="b2">b2</option>
</optgroup>
<optgroup label="分组bb">
<option value="bb1">bb1</option>
<option value="bb2">bb2</option>
</optgroup>
<optgroup label="分组bbb">
<option value="bbb1">bBb1</option>
<option value="bbb2">bBB2</option>
</optgroup>
<optgroup label="分组c">
<option value="c1">c1</option>
<option value="c2">c2</option>
</optgroup>
<optgroup label="分组cc">
<option value="cc1">cc1</option>
<option value="cc2">cc2</option>
</optgroup>
<optgroup label="分组ccc">
<option value="ccc1">ccc1</option>
<option value="ccc2">ccc2</option>
</optgroup>
<optgroup label="分组cccc">
<option value="cccc1">cccc1</option>
<option value="cccc2">cccc2</option>
</optgroup>
</select>
</div>
</div>
</div>
<div class="layui-form-item" pane>
<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="阅读">
<input type="checkbox" name="like[game]" title="游戏" disabled>
<input type="checkbox" name="like[indeterminate]" id="ID-indeterminate" lay-filter="filter-indeterminate" title="半选">
</div>
</div>
<div class="layui-form-item" pane>
<label class="layui-form-label">标签框</label>
<div class="layui-input-block">
<input type="checkbox" name="like1[write]" lay-skin="tag" title="写作">
<input type="checkbox" name="like1[read]" lay-skin="tag" title="阅读">
<input type="checkbox" name="like1[game]" lay-skin="tag" title="游戏" disabled>
</div>
</div>
<div class="layui-form-item" pane>
<label class="layui-form-label">开关关</label>
<div class="layui-input-block">
<input type="checkbox" name="close" lay-skin="switch" title="开关">
<input type="checkbox" name="close2" lay-skin="switch" title="|OFF" disabled>
</div>
</div>
<div class="layui-form-item" pane>
<label class="layui-form-label">开关开</label>
<div class="layui-input-block">
<input type="checkbox" checked name="open" lay-skin="switch" lay-filter="switchTest" title="ON|OFF">
<input type="checkbox" name="open2" lay-skin="switch" lay-filter="switchTest" title="已绑定|绑定">
</div>
</div>
<div class="layui-form-item" pane>
<label class="layui-form-label">单选框</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="1" title="男">
<input type="radio" name="sex" value="0" title="女" checked>
<input type="radio" name="sex" value="-1">
<div lay-radio>
保密 <i class="layui-icon layui-icon-user"></i>
</div>
<input type="radio" name="sex" value="" title="禁用" disabled>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">请填写描述</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" class="layui-textarea" name="desc"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="*">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
<br><br><br>
<script src="../src/layui.js" src1="https://cdn.staticfile.org/layui/2.6.8/layui.js"></script>
<script>
layui.use(['form', 'util', 'laydate'], function(){
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
var util = layui.util;
var laydate = layui.laydate;
// 自定义验证规则
form.verify({
title: function(value){
if(value && value.length < 5){ // 值若填写时才校验
return '标题也太短了吧';
}
},
pass: function(value) {
if (!/(.+){6,12}$/.test(value)) {
return '密码必须 6 到 12 位';
}
},
amount: function(value) {
if (value && !/^\d+\.\b\d{2}\b$/.test(value)) { // 值若填写时才校验
return '金额必须为小数保留两位';
}
}
});
/*
form.on('submit(top)', function(data){
console.log(data);
return false;
});
*/
//方法提交
$('#testSubmit').on('click', function(){
form.submit('top', function(data){
layer.confirm('确定提交么?', function(index){
layer.close(index);
// 验证均通过后执行提交
setTimeout(function(){
alert(JSON.stringify(data.field));
})
});
});
return false;
});
//日期
laydate.render({
elem: '#date'
});
//初始赋值
var thisValue = form.val('first', {
'title': '测试测试测试'
//,'phone': 11111111111
,'email': 'xu@sentsin.com'
,'date': '2021-05-30'
,'password': 123123
//,'quiz': 2
,'interest': 3
,'like[write]': true
//,'open': false
,'sex': '0'
,'desc': 'form 是我们非常看重的一块'
,xxxxxxxxx: 123
});
// 自定义动态点缀事件
form.on('input-affix(set)', function(data){
var elem = data.elem;
elem.value = '通过自定义事件设置的值';
});
//事件
form.on('select(quiz111)', function(data){
console.log('select: ', this, data);
});
form.on('select(quiz)', function(data){
console.log('select.quiz', this, data);
});
form.on('select(interest)', function(data){
console.log('select.interest: ', this, data);
});
form.on('checkbox', function(data){
console.log(this.checked, data.elem.checked);
});
form.on('switch', function(data){
console.log(data);
});
form.on('radio', function(data){
console.log(data);
});
// 提交事件
form.on('submit(*)', function(data){
console.log(data)
alert(JSON.stringify(data.field));
return false;
});
// 设置半选
$('#ID-indeterminate').prop('indeterminate', true);
form.render('checkbox');
// 普通事件
util.on('lay-on', {
"get-vercode": function(othis){
var isvalid = form.validate('.demo-phone');
// 验证通过
if(isvalid){
layer.msg('手机号验证通过,执行发送验证码的操作');
}
}
});
});
</script>
<h3>原始表单调试:</h3>
<hr>
<form id="test1" action="" target="_blank">
<input type="radio" value="girl" disabled>
<input type="checkbox" name="love[a]">
<input type="checkbox" name="love[b]">
<input value="1">
<input name="as">
<input name="=" value="2">
<select name="quiz">
<option value="">请选择问题</option>
<option disabled value="你工作的第一个城市">你工作的第一个城市</option>
<option value="你的工号">你的工号</option>
<option value="你最喜欢的老师">你最喜欢的老师</option>
<option value="你的工号" selected>你的工号</option>
<option value="你的工号">你的工号</option>
</select>
<button type="submit">原始表单,测试提交</button>
</form>
</body>
</html>

View File

@@ -0,0 +1,8 @@
layui.define(function(exports){
exports('test', {
title: '子目录模块加载'
})
});

View File

@@ -0,0 +1,8 @@
layui.define(function(exports){
exports('index', {
title: '模块入口'
});
});

View File

@@ -0,0 +1,133 @@
{
"code": 0
,"msg": ""
,"count": 3000000
,"totalRow": {
"checkin": "777"
}
,"data1": []
,"data": [{
"id": "10001"
,"username": "杜甫123"
,"email": "test1@email.com"
,"sex": "<strong style=\"color: red\">男</strong>"
,"city": "浙江杭州"
,"sign": "舍南舍北皆春水,但见群鸥日日来。花径不曾缘客扫,蓬门今始为君开。盘飧市远无兼味,樽酒家贫只旧醅。肯与邻翁相对饮,隔篱呼取尽余杯。"
,"experience": 7
,"ip": "192.168.0.8"
,"checkin": 0
,"joinTime": "2016-10-14"
,"LAY_DISABLED": true
}, {
"id": "10002"
,"username": "李白"
,"email": "test2@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。"
,"experience": 9
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
,"LAY_CHECKED": true
}, {
"id": "10003"
,"username": "苏轼"
,"email": "test3@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。"
,"experience": 8
,"ip": "192.168.0.8"
,"checkin": null
,"joinTime": "2016-10-14"
}, {
"id": "10004"
,"username": "李清照"
,"email": "test4@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 6
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10005"
,"username": "冰心"
,"email": "test5@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 64
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10006"
,"username": "张三"
,"email": "test6@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 65
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10007"
,"username": "张三7"
,"email": "test7@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 49
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10008"
,"username": "张三8"
,"email": "test8@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 5
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10009"
,"username": "张三9"
,"email": "test9@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 5
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10010"
,"username": "张三10"
,"email": "test10@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 5
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10011"
,"username": "张三11"
,"email": "test11@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": 5
,"ip": "192.168.0.8"
,"checkin": "106"
,"joinTime": "2016-10-14"
}]
}

View File

@@ -0,0 +1,60 @@
{
"code": 0
,"msg": ""
,"count": 66
,"data": [{
"username": "张小三"
,"amount": 18
,"province": "浙江"
,"city": "杭州"
,"zone": "西湖区"
,"street": "西溪街道"
,"address": "西溪花园"
,"house": "30栋1单元"
}, {
"username": "李小四"
,"amount": 39
,"province": "江苏"
,"city": "苏州"
,"zone": "姑苏区"
,"street": "丝绸路"
,"address": "天墅之城"
,"house": "9幢2单元"
}, {
"username": "王小四"
,"amount": 8
,"province": "江西"
,"city": "南昌"
,"zone": "青山湖区"
,"street": "艾溪湖办事处"
,"address": "中兴和园"
,"house": "1幢3单元"
}, {
"username": "赵小六"
,"amount": 16
,"province": "福建"
,"city": "泉州"
,"zone": "丰泽区"
,"street": "南洋街道"
,"address": "南洋村"
,"house": "6幢1单元"
}, {
"username": "孙小七"
,"amount": 12
,"province": "湖北"
,"city": "武汉"
,"zone": "武昌区"
,"street": "武昌大道"
,"address": "两湖花园"
,"house": "16幢2单元"
}, {
"username": "周小八"
,"amount": 11
,"province": "安徽"
,"city": "黄山"
,"zone": "黄山区"
,"street": "汤口镇"
,"address": "温泉村"
,"house": "21号"
}]
}

View File

@@ -0,0 +1,75 @@
{
"status": 200
,"message": ""
,"total": 333333
,"data": {
"list": [{
"id": "10001"
,"username": "杜甫3"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "鼠标移动到此处,可以通过点击单元格右侧的下拉图标,查看到被隐藏的全部内容。"
,"experience": "7"
,"ip": "192.168.0.8"
,"logins": 0
,"joinTime": "2016-10-14"
}, {
"id": "10002"
,"username": "李白3"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。"
,"experience": "9"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
,"LAY_CHECKED": true
}, {
"id": "10003"
,"username": "王勃"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "8"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10004"
,"username": "李清照"
,"email": "test@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "6"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10005"
,"username": "冰心"
,"email": "test@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "64"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10006"
,"username": "贤心"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "65"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}]
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
{
"code": 0
,"msg": ""
,"data": {
"src": "http://tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"
,"title": "图片名称"
}
}

View File

@@ -0,0 +1,485 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>日期模块 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 50px 100px;}
.layui-inline{margin-right: 15px;}
</style>
</head>
<body>
<div class="layui-inline">
<input type="text" class="layui-input" id="test-first">
</div>
<br>
<hr>
范围选择1
<div class="layui-inline">
<input type="text" class="layui-input" id="test1">
</div>
<br>
<hr>
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">范围选择2</label>
<div class="layui-inline" id="test1-2">
<div class="layui-input-inline">
<input type="text" autocomplete="off" id="test-startDate-1" class="layui-input" placeholder="开始日期">
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" autocomplete="off" id="test-endDate-1" class="layui-input" placeholder="结束日期">
</div>
</div>
</div>
</div>
</div>
<br><hr>
日期选择器:
<div class="layui-inline">
<input type="text" class="layui-input" id="test2">
</div>
开启快捷面板:
<div class="layui-inline">
<input type="text" class="layui-input" id="test2-1">
</div>
<br><br><hr><br>
年选择器:
<div class="layui-inline">
<input type="text" class="layui-input" id="test3">
</div>
年月选择器:
<div class="layui-inline">
<input type="text" class="layui-input" id="test4">
</div>
时间时间器:
<div class="layui-inline">
<input type="text" class="layui-input" id="test5">
</div>
<br><br><hr><br>
时间范围选择
<div class="layui-inline">
<input type="text" class="layui-input" id="test55">
</div>
自定义重要日:
<div class="layui-inline">
<input type="text" class="layui-input" id="test555">
</div>
标注法定节假日及补班:
<div class="layui-inline">
<input type="text" class="layui-input" id="test5555">
</div>
<br><br><hr><br>
同时绑定多个:
<div class="layui-inline">
<input type="text" class="layui-input test-item">
</div>
<div class="layui-inline">
<input type="text" class="layui-input test-item">
</div>
<div class="layui-inline">
<input type="text" class="layui-input test-item">
</div>
<br><br><hr><br>
墨绿主题:
<div class="layui-inline">
<input type="text" class="layui-input" id="test6-1">
</div>
自定义头部背景色:
<div class="layui-inline">
<input type="text" class="layui-input" id="test6-2">
</div>
格子主题:
<div class="layui-inline">
<input type="text" class="layui-input" id="test6-3">
</div>
<br><br><hr><br>
<button class="layui-btn" id="test7">其它元素触发</button>
<div class="layui-inline">
<input type="text" class="layui-input" id="test6">
</div>
<textarea></textarea>
<button class="layui-btn" id="test9">外部事件触发</button>
<div class="layui-inline">
<input type="text" class="layui-input" id="test8">
</div>
<br><br><hr><br>
直接嵌套在指定容器中:<br><br>
<div class="layui-inline" id="test10"></div>
<div class="layui-inline" id="test11" style="margin-left: 30px;"></div>
<script src="../src/layui.js" src1="http://local.res.layui.com/layui/release/laydate/dist/laydate.js" charset="utf-8"></script>
<script>
layui.use('laydate', function(laydate){
//全局配置
laydate.set({
//trigger: 'focus'
});
// 第一个任意示例
laydate.render({
elem: '#test-first',
min: 0,
shade: [0.1, '#ddd'],
//max: '2016-12-30',
done: function(){
console.log('done',arguments);
},
onConfirm: function(){
console.log('confirm',arguments);
},
onNow: function(){
console.log('now',arguments);
},
onClear: function(){
console.log('clear',arguments);
}
});
// 范围选择1
laydate.render({
elem: '#test1', // 指定元素
type: 'datetime',
trigger: 'click',
// lang: 'en',
// theme: 'grid',
range: true, // 开启日期范围,默认使用“-”分割
// rangeLinked: true,
// min: '1970-1-1',
// max: '2021-5-9',
// value: '2021-05-09 12:06:09',
// value: '2021-05-08 - 2021-03-27',
done: function(value, date, endDate){
console.log(value, date, endDate);
//this.elem.val(123);
},
change: function(value, date, endDate){
console.log(value, date, endDate);
}
});
// return;
// 范围选择2
laydate.render({
elem: '#test1-2',
type: 'date',
range: ['#test-startDate-1', '#test-endDate-1'],
rangeLinked: true, // 是否开启日期范围选择时的区间联动标注模式
// value: ['2022-05-01', '2022-10-01'],
// value: '2022-05-01 - 2022-06-01',
done: function (value, date, endDate) {
console.log(value);
console.log(date);
console.log(endDate);
}
});
// 日期选择器(单面板)
laydate.render({
elem: '#test2'
//,format: 'yyyy年MM月dd日'
,value: new Date(1534766888000)
//,isInitValue: false
,format: 'yyyy/MM/dd'
,min: 7
//,max: 0
//,min: '2016-10-14'
//,max: -1
//,value: '1989年10月14日'
,ready: function(date){
console.log(date);
}
,done: function(value, date, endDate){
console.log(value, date, endDate);
//this.elem.val(111111);
}
,change: function(value){
console.log(value);
}
});
// 开启快捷面板
laydate.render({
elem: '#test2-1',
shortcuts: [
{
text: "昨天",
value: (function () {
var now = new Date();
now.setDate(now.getDate() - 1);
return now;
})()
},
{ text: "今天", value: Date.now() },
{
text: "明天",
value: (function () {
var now = new Date();
now.setDate(now.getDate() + 1);
return now;
})()
},
{
text: "上个月",
value: (function () {
var now = new Date();
// now.setDate(now.getDate() - 1);
now.setMonth(now.getMonth() - 1);
return [now];
})()
},
{
text: "上个月的前一天",
value: (function () {
var now = new Date();
now.setMonth(now.getMonth() - 1);
now.setDate(now.getDate() - 1);
return [now];
})()
},
{
text: "某一天",
value: "2020-12-12"
}
]
})
//年选择器
laydate.render({
elem: '#test3'
,type: 'year'
//,range: true
//,trigger: 'click'
//,min:'2021-01-01'
//,max:'2022-12-31'
,done: function(value, date, endDate){
console.log(value, date, endDate);
}
,change: function(value, date, endDate){
//this.elem.val(value)
}
});
//年月选择器
laydate.render({
elem: '#test4'
,type: 'month'
,range: true
,trigger: 'click'
,min:'2022-03-01'
,max:'2022-05-31'
,done: function(value, date, endDate){
console.log(value, date, endDate);
}
,change: function(value, date, endDate){
this.elem.val(value)
}
});
//时间选择器
laydate.render({
elem: '#test5'
,type: 'time'
//,range: true
//,trigger: 'click'
,min: '09:30:00'
,max: '17:30:00'
,done: function(value, date, endDate){
console.log(value, date, endDate);
}
,change: function(value, date, endDate){
//this.elem.val(value)
}
});
//时间范围选择器
laydate.render({
elem: '#test55'
,type: 'time'
,range: true
//,trigger: 'click'
,done: function(value, date, endDate){
console.log(value, date, endDate);
}
});
// 同时绑定多个
laydate.render({
elem: '.test-item',
trigger: 'click'
});
/*
lay('.test-item').each(function(){
laydate.render({
elem: this
,trigger: 'click'
});
});
*/
//自定义重要日
var ins555 = laydate.render({
elem: '#test555'
//,calendar: true //是否开启公历重要节日
,mark: { //标记重要日子
'0-10-14': '生日' //0代表每年
,'0-0-15': '中旬'
,'2017-8-20': 'v2'
,'2017-8-31': '月底'
}
,done: function(value, date, endDate){
if(date.year == 2016 && date.month == 10 && date.date == 14){
//console.log('Layui 诞生日');
}
}
,change: function(value, date, endDate){
console.log(value)
}
});
// 标注法定节假日及补班
laydate.render({
elem: '#test5555',
value: '2022-5-21',
holidays: [
['2022-1-1', '2022-1-2', '2022-1-3', '2022-1-31', '2022-2-1', '2022-2-2', '2022-2-3', '2022-2-4', '2022-2-5', '2022-2-6', '2022-4-3', '2022-4-4', '2022-4-5', '2022-4-30', '2022-5-1', '2022-5-2', '2022-5-3', '2022-5-4', '2022-6-3', '2022-6-4', '2022-6-5', '2022-9-10', '2022-9-11', '2022-9-12', '2022-10-1', '2022-10-2', '2022-10-3', '2022-10-4', '2022-10-5', '2022-10-6', '2022-10-7'],
['2022-1-29', '2022-1-30', '2022-4-2', '2022-4-24', '2022-5-7', '2022-10-8', '2022-10-9']
]
});
//墨绿主题
laydate.render({
elem: '#test6-1' //指定元素
,type: 'datetime'
,theme: 'molv'
,value: 20180115
,isInitValue: true
,lang: 'en'
//,range: true
,trigger: 'click'
});
//自定义背景色主题
laydate.render({
elem: '#test6-2' //指定元素
,type: 'datetime'
,theme: '#393D49'
//,range: true
,trigger: 'click'
});
//格子主题
laydate.render({
elem: '#test6-3' //指定元素
//,type: 'datetime'
,theme: 'grid'
//,range: true
,trigger: 'click'
});
//其它元素触发
laydate.render({
elem: '#test6' //指定元素
,eventElem: '#test7' //绑定执行事件的元素
,lang: 'en'
});
//外部事件
lay('#test9').on('click', function(e){
laydate.render({
elem: '#test8'
,type: 'datetime'
,show: true
//,min: '2017-08-12 00:10:00'
//,max: '2017-08-12 23:10:10'
,closeStop: '#test9' //点击 #test6 所在元素区域不关闭控件
,change: function(value, date){
console.log(value, date)
}
,done: function(value, date){
console.log(value, date)
}
});
});
//直接嵌套在指定容器中
var ins10 = laydate.render({
elem: '#test10'
,position: 'static'
,calendar: true //是否开启公历重要节日
,mark: { //标记重要日子
'2021-8-20': ''
,'2021-8-21': ''
}
,done: function(value, date, endDate){
if(date.year == 2021 && date.month == 8 && date.date == 20){
ins10.hint(value + ',活动日');
}
}
,change: function(value, date, endDate){
console.log(value,date)
}
});
laydate.render({
elem: '#test11'
,position: 'static'
,lang: 'en'
,type: 'datetime'
,calendar: true //是否开启公历重要节日
,done: function(value, date, endDate){
//console.log(value, date, endDate);
}
,change: function(value, date, endDate){
console.log(value)
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,233 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>layer 弹层 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 100px;}
#photos li{float: left; margin: 0 1px 1px;}
#photos img{max-height: 38px;}
</style>
</head>
<body>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-primary" lay-on="test">Alert</button>
<button class="layui-btn" lay-on="test2">Confirm</button>
<button class="layui-btn" lay-on="test3">Msg</button>
<button class="layui-btn" lay-on="test5">Page</button>
<button class="layui-btn" lay-on="test6">Iframe</button>
<button class="layui-btn" lay-on="testLoading">Loading</button>
<button class="layui-btn" lay-on="test4">Tips</button>
<button class="layui-btn" lay-on="test7">Prompt</button>
<button class="layui-btn" lay-on="test8">Tab</button>
<button class="layui-btn" lay-on="test9">Photo</button>
<button class="layui-btn" lay-on="testTime">自动关闭</button>
<a href="https://layui.dev/docs/2.8/layer/" target="_blank" class="layui-btn">更多例子</a>
</div>
<div id="test11111" style="display: none; padding: 16px;">
content 指向放置在页面的一段隐藏元素
</div>
<hr><br>
<div class="layui-list">
<ul class="layui-row" id="photos">
<li class="list"><img src="https://unpkg.com/outeres/demo/1.jpg" alt="123"></li>
<li class="list"><img src="https://unpkg.com/outeres/demo/2.jpg"></li>
</ul>
</div>
<script>
var LAYUI_GLOBAL = {
// path: '../src/',
// layerPath: '../release/layer/src/'
};
</script>
<script src="../src/layui.js"></script>
<!-- layer 独立版调试 -->
<script src1="//cdn.staticfile.org/jquery/1.12.3/jquery.min.js"></script>
<script src1="../release/layer/src/layer.js"></script>
<script>
var runTest = function(run, $, layer){
if(!run) return;
var timer = setInterval(function(){
//location.reload();
}, 1000);
layer.alert(123);
$.ajax({
url: './all.html'
,beforeSend: function(){
//layer.ready(function(){
//layer.load();
//});
}
,success: function(){
return;
layer.closeAll('loading', function(){
setTimeout(function(){
if($('.layui-layer-loading').length){
console.error('layer close 异常');
clearInterval(timer);
}
}, 200);
});
}
});
};
window.jQuery && runTest(1, window.jQuery, window.layer);
layui.use(['layer', 'util'], function(layer, util){
var $ = layui.jquery;
var util = layui.util;
//return
var index = layer.msg('Hello World');
//layer.close(index);
//runTest(1, $, layer);
// 触发事件
util.on('lay-on', {
test: function(){
var icon = -1;
(function changeIcon(){
var index = layer.alert('Hi你好 点击确认更换图标', {
icon: icon,
shadeClose: true,
title: icon === -1 ? 'Alert' : ('icon: '+ icon)
}, changeIcon);
if(icon++ > 6){
layer.close(index);
icon = -1;
}
}());
}
,test2: function(){
layer.confirm('一个询问层的测试示例?', {
btn: ['确定','关闭'] //按钮
}, function(){
layer.msg('第一个回调', {icon: 1});
}, function(){
layer.msg('第二个回调', {
time: 20000, //20s后自动关闭
btn: ['明白了', '知道了']
});
});
}
,test3: function(){
!0 ? layer.msg('一个常用消息框')
: layer.msg('一个常用消息框',{closeBtn: 0,time: 0, icon: 16});
}
,test4: function(){
layer.tips('Hi我是一个小提示', this, {tips: 1});
}
,test5: function(){
layer.open({
title:'自定义页面层',
type: 1,
skin: 'layui-layer-border',
area: ['1000px', '580px'],
content: $('#test11111'),
maxmin: true,
shade: false,
minStack: false, // 最小化不堆叠在左下角
id: 'page-1', // 定义 ID防止重复弹出
min: function(layero, index){
layer.msg('阻止了默认的最小化');
layer.style(index, {top: 'auto', bottom: 0});
return false;
}
});
}
,test6: function(){
layer.open({
type: 2,
content: 'https://www.aliyun.com/activity?userCode=ap0255is',
area: ['375px', '500px'],
id: 'iframe-1',
hideOnClose: true, // 关闭时是否隐藏弹层容器,下次打开时直接显示原来的弹层
maxmin: true
});
}
,testLoading: function(){
layer.load(0, {
time: 5*1000
//content: '123'
});
}
,test7: function(){
layer.prompt({title: '输入任何口令,并确认', formType: 1}, function(pass, index){
layer.close(index);
layer.prompt({title: '随便写点啥,并确认', formType: 2}, function(text, index){
layer.close(index);
layer.msg('演示完毕!您的口令:'+ util.escape(pass) +'<br>您最后写下了:'+ util.escape(text));
});
});
}
,test8: function(){
layer.tab({
area: ['600px', '300px'],
tab: [{
title: 'TAB1',
content: '内容1'
}, {
title: 'TAB2',
content: '内容2'
}, {
title: 'TAB3',
content: '内容3'
}]
});
}
,test9: function(){
layer.photos({
photos: {
"data": [{
"src": "https://unpkg.com/outeres/demo/layer.png"
}]
},
hideFooter: true // 是否隐藏图片底部栏v2.8.0 新增)
});
}
,testTime: function(){
layer.alert('你好么,体验者。<br>在标题栏显示自动关闭倒计秒数', {
time: 5*1000
,success: function(layero, index){
var timeNum = this.time/1000, setText = function(start){
layer.title((start ? timeNum : --timeNum) + ' 秒后关闭', index);
};
setText(!0);
this.timer = setInterval(setText, 1000);
if(timeNum <= 0) clearInterval(this.timer);
}
,end: function(){
clearInterval(this.timer);
}
});
}
});
// 相册层
layer.photos({
photos: '#photos', // $('#photos')
// toolbar: false,
// footer: false
});
//动态追加
$('#photos').append('<li class="list"><img src="https://unpkg.com/outeres/demo/3.jpg"></li>');
});
</script>
</body>
</html>

View File

@@ -0,0 +1,163 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>layout 管理系统大布局 - Layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
</head>
<body>
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo layui-hide-xs layui-bg-black">layout demo</div>
<!-- 头部区域可配合layui 已有的水平导航) -->
<ul class="layui-nav layui-layout-left">
<!-- 移动端显示 -->
<li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft">
<i class="layui-icon layui-icon-spread-left"></i>
</li>
<li class="layui-nav-item layui-hide-xs"><a href="">nav 1</a></li>
<li class="layui-nav-item layui-hide-xs"><a href="">nav 2</a></li>
<li class="layui-nav-item layui-hide-xs"><a href="">nav 3</a></li>
<li class="layui-nav-item">
<a href="javascript:;">nav groups</a>
<dl class="layui-nav-child">
<dd><a href="">menu 11</a></dd>
<dd><a href="">menu 22</a></dd>
<dd><a href="">menu 33</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item layui-hide layui-show-md-inline-block">
<a href="javascript:;">
<img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">
tester
</a>
<dl class="layui-nav-child">
<dd><a href="">Your Profile</a></dd>
<dd><a href="">Settings</a></dd>
<dd><a href="">Sign out</a></dd>
</dl>
</li>
<li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
<a href="javascript:;">
<i class="layui-icon layui-icon-more-vertical"></i>
</a>
</li>
</ul>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">menu group 1</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">menu 1</a></dd>
<dd><a href="javascript:;">menu 2</a></dd>
<dd><a href="javascript:;">menu 3</a></dd>
<dd><a href="">the links</a></dd>
</dl>
</li>
<li class="layui-nav-item">
<a href="javascript:;">menu group 2</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">list 1</a></dd>
<dd><a href="javascript:;">list 2</a></dd>
<dd><a href="">超链接</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="javascript:;">click menu item</a></li>
<li class="layui-nav-item"><a href="">the links</a></li>
</ul>
</div>
</div>
<div class="layui-body">
<!-- 内容主体区域 -->
<div style="padding: 15px;">
内容主体区域
<br><br>
<blockquote class="layui-elem-quote layui-text">
<ul>
<li>
你也可以单独打开管理界面大布局的演示页面:
<a class="layui-btn layui-btn-normal" href="layuiAdmin.html" target="_blank">单独打开</a>
</li>
<li>
该页面只是简单的管理系统的界面基础布局示例,并不是一整套界面布局方案,您可以关注基于 layui 的通用型管理系统界面模板解决方案:
<a href="/layuiadmin/" target="_blank" class="layui-btn">layuiAdmin</a>
</li>
<li>
layui 之所以赢得如此多人的青睐,更多是在于它“前后界面兼备”的能力。既可编织出绚丽的前台页面,又可满足繁杂的管理系统的界面需求。
<br>layui 管理基本布局, 致力于让每一位开发者都能轻松搭建自己的管理系统模板。
</li>
</ul>
</blockquote>
<a href="/doc/element/layout.html#admin" target="_blank" class="layui-btn">查看该布局代码</a>
<br><br><br>
<div class="layui-card layui-panel">
<div class="layui-card-header">
下面是充数内容,为的是出现滚动条
</div>
<div class="layui-card-body">
充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>充数内容<br>你还真滑到了底部呀
</div>
</div>
<br><br>
</div>
</div>
<div class="layui-footer">
<!-- 底部固定区域 -->
底部固定区域
</div>
</div>
<script src="../src/layui.js"></script>
<script>
//JS
layui.use(['element', 'layer', 'util'], function(){
var element = layui.element
,layer = layui.layer
,util = layui.util
,$ = layui.$;
//头部事件
util.event('lay-header-event', {
//左侧菜单事件
menuLeft: function(othis){
layer.msg('展开左侧菜单的操作', {icon: 0});
}
,menuRight: function(){
layer.open({
type: 1
,content: '<div style="padding: 15px;">处理右侧面板的操作</div>'
,area: ['260px', '100%']
,offset: 'rt' //右上角
,anim: 5
,shadeClose: true
});
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,333 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>layout 栅格布局 - Layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
/* 示例 */
.layui-field-title{margin-top: 30px;}
.grid-demo{padding: 10px; line-height: 50px; text-align: center; background-color: #79C48C; color: #fff;}
.grid-demo-bg1{background-color: #63BA79;}
.grid-demo-bg2{background-color: #49A761;}
.grid-demo-bg3{background-color: #38814A;}
</style>
</head>
<body>
<!-- 让IE8/9支持媒体查询从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<div class="layui-container">
<fieldset class="layui-elem-field layui-field-title">
<legend>始终等比例水平排列</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-xs6">
<div class="grid-demo grid-demo-bg1">50%</div>
</div>
<div class="layui-col-xs6">
<div class="grid-demo">50%</div>
</div>
</div>
<br>
<div class="layui-row">
<div class="layui-col-xs3">
<div class="grid-demo grid-demo-bg1">25%</div>
</div>
<div class="layui-col-xs3">
<div class="grid-demo">25%</div>
</div>
<div class="layui-col-xs3">
<div class="grid-demo grid-demo-bg1">25%</div>
</div>
<div class="layui-col-xs3">
<div class="grid-demo">25%</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>移动设备、桌面端的不同展现</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-xs12 layui-col-md8">
<div class="grid-demo grid-demo-bg1">移动设备100%、桌面60%</div>
</div>
<div class="layui-col-xs6 layui-col-md4">
<div class="grid-demo">移动设备50%、桌面40%</div>
</div>
<div class="layui-col-xs6 layui-col-md12">
<div class="grid-demo grid-demo-bg2">移动设备50%、桌面100%</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>移动设备、平板、桌面端的不同展现</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
<div class="grid-demo grid-demo-bg1">50% | 33.33% | 33.33%</div>
</div>
<div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
<div class="grid-demo layui-bg-red">50% | 66.67% | 33.33%</div>
</div>
<div class="layui-col-xs4 layui-col-sm12 layui-col-md4">
<div class="grid-demo layui-bg-blue">33.33% | 100% | 33.33%</div>
</div>
<div class="layui-col-xs4 layui-col-sm7 layui-col-md8">
<div class="grid-demo layui-bg-green">33.33% | 50% | 66.67%</div>
</div>
<div class="layui-col-xs4 layui-col-sm5 layui-col-md4">
<div class="grid-demo layui-bg-black">33.33% | 50% | 33.33%</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>从小屏幕堆叠到桌面水平排列</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-md1">
<div class="grid-demo grid-demo-bg1">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo grid-demo-bg1">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo grid-demo-bg1">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo grid-demo-bg1">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo grid-demo-bg1">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo grid-demo-bg1">1/12</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo">1/12</div>
</div>
</div>
<br>
<div class="layui-row">
<div class="layui-col-md9">
<div class="grid-demo grid-demo-bg1">75%</div>
</div>
<div class="layui-col-md3">
<div class="grid-demo">25%</div>
</div>
</div>
<br>
<div class="layui-row">
<div class="layui-col-md4">
<div class="grid-demo grid-demo-bg1">33.33%</div>
</div>
<div class="layui-col-md4">
<div class="grid-demo">33.33%</div>
</div>
<div class="layui-col-md4">
<div class="grid-demo grid-demo-bg1">33.33%</div>
</div>
</div>
<br>
<div class="layui-row">
<div class="layui-col-md6">
<div class="grid-demo grid-demo-bg1">50%</div>
</div>
<div class="layui-col-md6">
<div class="grid-demo">50%</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>分栏间隔</legend>
</fieldset>
<div class="layui-row layui-col-space1">
<div class="layui-col-md3">
<div class="grid-demo grid-demo-bg1">1/4</div>
</div>
<div class="layui-col-md3">
<div class="grid-demo">1/4</div>
</div>
<div class="layui-col-md3">
<div class="grid-demo grid-demo-bg1">1/4</div>
</div>
<div class="layui-col-md3">
<div class="grid-demo">1/4</div>
</div>
</div>
<br>
<div class="layui-row layui-col-space5">
<div class="layui-col-md4">
<div class="grid-demo grid-demo-bg1">1/3</div>
</div>
<div class="layui-col-md4">
<div class="grid-demo">1/3</div>
</div>
<div class="layui-col-md4">
<div class="grid-demo grid-demo-bg1">1/3</div>
</div>
</div>
<br>
<div class="layui-row layui-col-space10">
<div class="layui-col-md9">
<div class="grid-demo grid-demo-bg1">75%</div>
</div>
<div class="layui-col-md3">
<div class="grid-demo">25%</div>
</div>
</div>
<br>
<div class="layui-row layui-col-space15">
<div class="layui-col-md7">
<div class="grid-demo grid-demo-bg1">58.33%</div>
</div>
<div class="layui-col-md5">
<div class="grid-demo">41.67%</div>
</div>
</div>
<br>
<div class="layui-row layui-col-space20">
<div class="layui-col-md4">
<div class="grid-demo grid-demo-bg1">33.33%</div>
</div>
<div class="layui-col-md4">
<div class="grid-demo">33.33%</div>
</div>
<div class="layui-col-md4">
<div class="grid-demo">33.33%</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>列偏移</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-md4">
<div class="grid-demo grid-demo-bg1">33.33%</div>
</div>
<div class="layui-col-md4 layui-col-md-offset4">
<div class="grid-demo">偏移4列</div>
</div>
<div class="layui-col-md1 layui-col-md-offset5">
<div class="grid-demo grid-demo-bg1">偏移5列</div>
</div>
<div class="layui-col-md1">
<div class="grid-demo">不偏移</div>
</div>
</div>
<br>
<div class="layui-row">
<div class="layui-col-md3 layui-col-md-offset3">
<div class="grid-demo grid-demo-bg1">偏移3列</div>
</div>
<div class="layui-col-md3 layui-col-md-offset1">
<div class="grid-demo">偏移1列</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>嵌套</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-md5">
<div class="layui-row grid-demo">
<div class="layui-col-md3">
<div class="grid-demo grid-demo-bg1">内部列</div>
</div>
<div class="layui-col-md9">
<div class="grid-demo grid-demo-bg2">内部列</div>
</div>
<div class="layui-col-md12">
<div class="grid-demo grid-demo-bg3">内部列</div>
</div>
</div>
</div>
<div class="layui-col-md7">
<div class="layui-row grid-demo grid-demo-bg1">
<div class="layui-col-md12">
<div class="grid-demo">内部列</div>
</div>
<div class="layui-col-md9">
<div class="grid-demo grid-demo-bg2">内部列</div>
</div>
<div class="layui-col-md3">
<div class="grid-demo grid-demo-bg3">内部列</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-fluid">
<fieldset class="layui-elem-field layui-field-title">
<legend>流体容器(宽度自适应,不固定)</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-sm3">
<div class="grid-demo grid-demo-bg1">25%</div>
</div>
<div class="layui-col-sm3">
<div class="grid-demo">25%</div>
</div>
<div class="layui-col-sm3">
<div class="grid-demo grid-demo-bg1">25%</div>
</div>
<div class="layui-col-sm3">
<div class="grid-demo">25%</div>
</div>
</div>
</div>
<br><br>
</body>
</html>

View File

@@ -0,0 +1,189 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>分页 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 10px;}
</style>
</head>
<body>
总页数低于页码总数:<div id="demo0"></div>
总页数大于页码总数:<div id="demo1"></div>
自定义主题:<div id="demo2"></div>
自定义首页、尾页、上一页、下一页文本:<div id="demo3"></div>
不显示首页尾页:<div id="demo4"></div>
开启HASH<div id="demo5"></div>
只显示上一页、下一页:<div id="demo6"></div>
显示完整功能:<div id="demo7"></div>
自定义排版:<div id="demo8"></div>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 50px;">
<legend>将一段已知数组分页展示</legend>
</fieldset>
<div id="demo9"></div>
<ul id="biuuu_city_list"></ul>
<script src="../src/layui.js"></script>
<script>
layui.use(['laypage', 'layer'], function(){
var laypage = layui.laypage
,layer = layui.layer;
//总页数低于页码总数
laypage.render({
elem: 'demo0'
,count: 50 //数据总数
});
//总页数大于页码总数
laypage.render({
elem: 'demo1'
,count: 70 //数据总数
,jump: function(obj){
console.log(obj)
}
});
//自定义样式
laypage.render({
elem: 'demo2'
,count: 100
,theme: '#1E9FFF'
});
//自定义首页、尾页、上一页、下一页文本
laypage.render({
elem: 'demo3'
,count: 100
,first: '首页'
,last: '尾页'
,prev: '<em>←</em>'
,next: '<em>→</em>'
});
//不显示首页尾页
laypage.render({
elem: 'demo4'
,count: 100
,first: false
,last: false
});
//开启HASH
laypage.render({
elem: 'demo5'
,count: 500
,curr: location.hash.replace('#!fenye=', '') //获取hash值为fenye的当前页
,hash: 'fenye' //自定义hash值
});
//只显示上一页、下一页
laypage.render({
elem: 'demo6'
,count: 50
,layout: ['prev', 'next']
,jump: function(obj, first){
if(!first){
layer.msg('第 '+ obj.curr +' 页');
}
}
});
//完整功能
laypage.render({
elem: 'demo7'
,count: 100
//,groups: 0
,layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip', ]
,jump: function(obj){
console.log(obj)
}
});
//自定义排版
laypage.render({
elem: 'demo8'
,count: 1000
,layout: ['limit', 'prev', 'page', 'next']
//,limits: [100, 200, 300]
,limit: 200
});
//将一段数组分页展示
//测试数据
var data = [
'北京',
'上海',
'广州',
'深圳',
'杭州',
'长沙',
'合肥',
'宁夏',
'成都',
'西安',
'南昌',
'上饶',
'沈阳',
'济南',
'厦门',
'福州',
'九江',
'宜春',
'赣州',
'宁波',
'绍兴',
'无锡',
'苏州',
'徐州',
'东莞',
'佛山',
'中山',
'成都',
'武汉',
'青岛',
'天津',
'重庆',
'南京',
'九江',
'香港',
'澳门',
'台北'
];
//调用分页
laypage.render({
elem: 'demo9'
,count: data.length
,layout: ['prev', 'page', 'next', 'refresh', 'skip']
,jump: function(obj){
//模拟渲染
document.getElementById('biuuu_city_list').innerHTML = function(){
var arr = []
,thisData = data.concat().splice(obj.curr*obj.limit - obj.limit, obj.limit);
layui.each(thisData, function(index, item){
arr.push('<li>'+ item +'</li>');
});
return arr.join('');
}();
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,240 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>视图模板引擎 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
.laytpl-demo{border: 1px solid #EBEBEB;}
.laytpl-demo>textarea{position: relative; display: block; width:100%; height: 300px; padding: 11px; border: 0; box-sizing: border-box; resize: none; background-color: #fff; font-family: Courier New; font-size: 13px;}
.laytpl-demo>div:first-child{height: 32px; line-height: 32px; padding: 6px 11px; border-bottom: 1px solid #EBEBEB; background-color: #F8F9FA;}
</style>
</head>
<body>
<div>
<div class="layui-row">
<div class="layui-col-xs6 laytpl-demo">
<div>模板</div>
<textarea id="demoTPL1"><h1>{{ d.title }}</h1>
<p>转义输出(HTML){{ d.desc }}</p>
<p>转义输出(HTML){{= d.desc }}</p>
<p>原始输出(HTML){{- d.desc }}</p>
{{#}}
<div class="layui-section">
<hr>
<ul>
{{# var str = "a b c";
layui.each(d.items, function(index, item){ }}
<li class="{{ index > 0 ? 'list' : '' }}">
<strong>{{ item.title }}</strong>
{{# if(item.content){ }}
<span>{{ item.content }}</span>
{{# } }}
<span>{{ item.time || '' }}</span>
{{ str }}
</li>
{{# }); if(d.items.length === 0){ }}
无数据
{{# } }}
</ul>
<hr>
</div>
<div>
{{ d.content || '' }}
{{ }} {{}}
{{ }}
\a
'12'"""""
"哈''哈"
</div>
<p>渲染时间:{{ layui.util.toDateString(new Date()) }}</p></textarea>
</div>
<div class="layui-col-xs6 laytpl-demo">
<div class="layui-row">
<div class="layui-col-xs3">数据</div>
<div class="layui-col-xs9" style="text-align: right">
<button class="layui-btn layui-btn-sm layui-btn-primary" lay-on="createData">生成数据</button>
</div>
</div>
<textarea id="demoData1">
{
"title": "标题",
"desc": "<a href=\"\" style=\"color:blue;\">一段描述</a>",
"items": [
{
"title": "list 1",
"child": [{
"title": "list 1-1",
"child": [{
"title": "list 1-1-1"
}]
}]
},
{
"title": "list 2",
"child": [{
"title": "list 2-1"
}]
},
{"title": "list 3"}
]
}</textarea>
</div>
<div class="layui-col-xs12 laytpl-demo">
<div class="layui-row">
<div class="layui-col-xs4">视图</div>
<div class="layui-col-xs4" style="text-align: center">
<button class="layui-btn layui-btn-sm layui-btn-primary" lay-on="test1">性能测试</button>
</div>
<div class="layui-col-xs4" style="text-align: right">
<span id="demoViewTime"></span>
</div>
</div>
<div class="layui-padding-sm" id="demoView1"></div>
</div>
</div>
<script type="type/html" template id="demoTplCommon">
公共模板 - {{ d.title }}
</script>
<script type="type/html" template id="demoTplList">
{{# if(d.items && d.items.length > 0){ }}
<ul>
{{# layui.each(d.items, function(index, item){ }}
<li><strong>{{ item.title }}</strong>{{ laytpl.include('demoTplList', {items: item.child}) }}</li>
{{# }); }}
</ul>
{{# } }}
</script>
<script type="type/html" template id="laytplTestTpl">
{{# for(var i = 0; i < d.items.length; i++){ }}
{{= d.items[i].index }}Name: {{- d.items[i].name }} Number: {{= d.items[i].number }}
{{# } }}
</script>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use(['laytpl', 'util'], function(){
var laytpl = layui.laytpl;
var util = layui.util;
var $ = layui.$;
//获取模板和数据
var get = function(type){
return {
template: $('#demoTPL1').val() //获取模板
,data: function(){ //获取数据
try {
return JSON.parse($('#demoData1').val());
} catch(e){
$('#demoView1').html(e);
}
}()
};
};
var data = get();
//耗时计算
var startTime = new Date().getTime(), timer = function(startTime, title){
var endTime = new Date().getTime();
$('#demoViewTime').html((title || '模板解析耗时:')+ (endTime - startTime) + 'ms');
};
//渲染模板
var thisTpl = laytpl(data.template);
//执行渲染
thisTpl.render(data.data, function(view){
timer(startTime);
$('#demoView1').html(view);
});
//编辑
$('.laytpl-demo textarea').on('input', function(){
var data = get();
if(!data.data) return;
//计算模板渲染耗时
var startTime = new Date().getTime();
//若模板有变化,则重新解析模板;若模板没变,数据有变化,则从模板缓存中直接渲染(效率大增)
if(this.id === 'demoTPL1'){
thisTpl.parse(data.template, data.data); //解析模板
}
//执行渲染
thisTpl.render(data.data, function(view){
timer(startTime);
$('#demoView1').html(view);
});
});
//事件
util.event('lay-on', {
//性能测试
test1: function(){
var dataLen = 1000 //数据量
,renderTimes = 1000; //渲染次数
//初始化数据
var data = {
title: '性能测试'
,items: function(items){
for(var i = 0; i < dataLen; i++){
items.push({
index: i
,name: '<strong style="color: red;">张三</strong>'
,number: 100+i
});
}
return items;
}([])
};
//模板
var startTime = new Date();
for(var j = 0; j < renderTimes; j++){
var template = document.getElementById('laytplTestTpl').innerHTML;
var html = laytpl(template).render(data);
}
timer(startTime, '本次测试耗时:');
$('#demoView1').html(html);
}
});
// 自定义标签符
laytpl(`
<%# var job = ["前端工程师"]; %>
<%= d.name %>是一名<%= job[d.type] %>。
`, {
open: '<%',
close: '%>'
}).render({
name: '张三',
type: 0
}, function(str){
console.log(str); // 张三是一名前端工程师。
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,199 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>菜单元素 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
</head>
<body>
<div class="layui-container" style="padding-top: 30px;">
<div class="layui-btn-container">
<button type="button" class="layui-btn" lay-active="lg">大尺寸</button>
<button type="button" class="layui-btn" lay-active="normal">常规尺寸</button>
</div>
<div class="layui-row layui-col-space30" id="demo-box" style="padding: 30px 0;">
<div class="layui-col-xs9 layui-col-md3">
<div class="layui-panel">
<ul class="layui-menu" id="demo1">
<li lay-options="{id: 100}">
<div class="layui-menu-body-title">menu item 1</a></div>
</li>
<li lay-options="{id: 101}">
<div class="layui-menu-body-title">
<a href="">menu item 2 <span class="layui-badge-dot"></span></a>
</div>
</li>
<li class="layui-menu-item-divider"></li>
<li class="layui-menu-item-group layui-menu-item-down" lay-options="{type: 'group'}">
<div class="layui-menu-body-title">
menu group <i class="layui-icon layui-icon-up"></i>
</div>
<ul>
<li lay-options="{id: 103}">
<div class="layui-menu-body-title">menu item 3-1</div>
</li>
<li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: false}">
<div class="layui-menu-body-title">menu group 2</div>
<ul>
<li class="layui-menu-item-checked">
<div class="layui-menu-body-title">menu item 3-2-1</div>
</li>
<li><div class="layui-menu-body-title">menu item 3-2-2</div></li>
</ul>
</li>
<li><div class="layui-menu-body-title">menu item 3-3</div></li>
</ul>
</li>
<li class="layui-menu-item-divider"></li>
<li><div class="layui-menu-body-title">menu item 4 <span class="layui-badge">1</span></div></li>
<li><div class="layui-menu-body-title">menu item 5</div></li>
<li><div class="layui-menu-body-title">menu item 6</div></li>
<li class="layui-menu-item-parent" lay-options="{type: 'parent'}">
<div class="layui-menu-body-title">
menu item 7 Children
<i class="layui-icon layui-icon-right"></i>
</div>
<div class="layui-panel layui-menu-body-panel">
<ul>
<li class="layui-menu-item-parent" lay-options="{type: 'parent'}">
<div class="layui-menu-body-title">
menu item 7-1
<i class="layui-icon layui-icon-right"></i>
</div>
<div class="layui-panel layui-menu-body-panel">
<ul>
<li><div class="layui-menu-body-title">menu item 7-2-1</div></li>
<li><div class="layui-menu-body-title">menu item 7-2-2</div></li>
<li><div class="layui-menu-body-title">menu item 7-2-3</div></li>
<li><div class="layui-menu-body-title">menu item 7-2-4</div></li>
</ul>
</div>
</li>
<li><div class="layui-menu-body-title">menu item 7-2</div></li>
<li><div class="layui-menu-body-title">menu item 7-3</div></li>
</ul>
</div>
</li>
<li>menu item 8</li>
<li class="layui-menu-item-divider"></li>
<li class="layui-menu-item-group" lay-options="{type: 'group'}">
<div class="layui-menu-body-title">menu group 9</div>
<ul>
<li><div class="layui-menu-body-title">menu item 9-1</div></li>
<li class="layui-menu-item-parent" lay-options="{type: 'parent'}">
<div class="layui-menu-body-title">
menu item 9-2
<i class="layui-icon layui-icon-right"></i>
</div>
<div class="layui-panel layui-menu-body-panel">
<ul>
<li><div class="layui-menu-body-title">menu item 9-2-1</div></li>
<li><div class="layui-menu-body-title">menu item 9-2-2</div></li>
<li><div class="layui-menu-body-title">menu item 9-2-3</div></li>
</ul>
</div>
</li>
<li><div class="layui-menu-body-title">menu item 9-31</div></li>
</ul>
</li>
<li class="layui-menu-item-divider"></li>
<li><div class="layui-menu-body-title">menu item 10</div></li>
</ul>
</div>
</div>
<div class="layui-col-xs9 layui-col-md3">
<div class="layui-panel">
<ul class="layui-menu" id="docDemoMenu1">
<li lay-options="{id: 100}">
<div class="layui-menu-body-title">menu item 1</div>
</li>
<li lay-options="{id: 101}">
<div class="layui-menu-body-title">
<a href="">menu item 2 <span class="layui-badge-dot"></span></a>
</div>
</li>
<li class="layui-menu-item-divider"></li>
<li class="layui-menu-item-group layui-menu-item-down" lay-options="{type: 'group', isAllowSpread: false}">
<div class="layui-menu-body-title">
menu group
</div>
<ul>
<li lay-options="{id: 1031}"><div class="layui-menu-body-title">menu item 3-1</div></li>
<li lay-options="{id: 1032}">
<div class="layui-menu-body-title">menu item 3-2</div>
</li>
</ul>
</li>
<li class="layui-menu-item-divider"></li>
<li class="layui-menu-item-group layui-menu-item-down" lay-options="{type: 'group', isAllowSpread: false}">
<div class="layui-menu-body-title">menu group 2</div>
<ul>
<li lay-options="{id: 1031}"><div class="layui-menu-body-title">menu item 4-1</div></li>
<li lay-options="{id: 1032}">
<div class="layui-menu-body-title">menu item 4-2</div>
</li>
</ul>
</li>
<li class="layui-menu-item-divider"></li>
<li class="layui-menu-item-parent" lay-options="{type: 'parent'}">
<div class="layui-menu-body-title">
menu item 5
<i class="layui-icon layui-icon-right"></i>
</div>
<div class="layui-panel layui-menu-body-panel">
<ul>
<li lay-options="{id: 1051}">
<div class="layui-menu-body-title">menu item 5-1</div>
</li>
<li lay-options="{id: 1051}">
<div class="layui-menu-body-title">menu item 5-2</div>
</li>
</ul>
</div>
</li>
<li lay-options="{id: 106}">
<div class="layui-menu-body-title">menu item 6</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use(['dropdown', 'util'], function(){
var dropdown = layui.dropdown
,util = layui.util
,$ = layui.jquery;
dropdown.on('click(demo1)', function(options){
var thisElem = $(this);
console.log(thisElem, options);
});
util.event('lay-active', {
normal: function(){
$('#demo-box').children().addClass('layui-col-md3').removeClass('layui-col-md4');
$('#demo-box').find('.layui-menu').removeClass('layui-menu-lg');
}
,lg: function(){
$('#demo-box').children().addClass('layui-col-md4').removeClass('layui-col-md3')
$('#demo-box').find('.layui-menu').addClass('layui-menu-lg');
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,118 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>评分 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding:20px;}
</style>
</head>
<body>
<div class="layui-container">
<div class="layui-row">
<!-- 基础评分用法 -->
<div class="layui-rate-div layui-col-xm4 layui-col-xm-offset4 ">
<h3>基础用法</h3>
<hr>
<div id="test1"></div>
</div>
<!-- 半星评分用法 -->
<div class="layui-rate-div layui-col-xm4 layui-col-xm-offset4 ">
<h3>选中半星</h3>
<hr>
<div id="test2"></div>
</div>
<!-- 显示提示文字 -->
<div class="layui-rate-div layui-col-xm4 layui-col-xm-offset4 ">
<h3>显示提示文字</h3>
<hr>
<div id="test3"></div>
<span></span>
</div>
<!-- 只读 -->
<div class="layui-rate-div layui-col-xm4 layui-col-xm-offset4 ">
<h3>只读</h3>
<hr>
<div id="test4"></div>
</div>
</div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use(['rate'], function(){
var rate = layui.rate;
//渲染
// rate.set({
// elem: '#test1'
// ,length: 7
// ,value: 4.7
// ,theme: '#c00'
// ,half: true
// ,text: true
// ,reader: true
// })
rate.render({
elem: '#test1'
,length: 5
,value: 5
,text: true
,half: true
,setText1: function(value){
var arrs = {
'0.5': '极差'
, '1' : '一般'
,'1.5': '满意'
,'2': '极满意'
};
this.span.text(arrs[value] || ( value + "星"));
}
})
rate.render({
elem: '#test2'
,length: 6
,value: 2
,half: true
,theme: '#5FB878'
,choose: function(value){
if( value > 3) alert("111")
}
})
rate.render({
elem: '#test3'
,length: 3
,value: 2.8
,text: true
,half: true
,theme: '#FF5722'
})
//只读
rate.render({
elem: '#test4'
,value: 3.5
,half: true
,readonly: true
})
});
</script>
</body>
</html>

View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>响应式测试 - Layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 20px;}
</style>
</head>
<body>
<!-- 让IE8/9支持媒体查询从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<div class="layui-hide-xs layui-show-sm-inline layui-show-md-block">
移动:隐藏
<br>平板inline
<br>PCblock
</div>
</body>
</html>

View File

@@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>滑块 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding:100px 0;}
</style>
</head>
<body>
<div class="layui-container">
<div id="slideTest1"></div>
<br>
<div id="slideTest2" style="margin: 45px 30px; display: inline-block;"></div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use('slider', function(){
var slider = layui.slider;
var sliderInst = slider.render({
elem: '#slideTest1'
//,type: 'vertical'
//,min: -20 //最小值
//,max: 20 //最大值
//,value: 11 //[40, 60] //初始值
//,step: 1 //间隔值
//,showstep: true //间隔点
//,tips: false //关闭提示文本
,input: true //输入框
//,range: true //范围选择
//,theme: '#FF5722'
,change: function(value){ // 选中值发生改变的回调
console.log('change', value)
}
,done: function(value){ // 值完成选中的回调 -- v2.8.0 新增
console.log('done', value);
}
,setTips: function(value){ //自定义提示文本
return value + '%';
}
//,setTips: function(value){ //自定义提示文本
//return '离世界末日还有 ' + value + ' 天';
//}
//,height: '300' //配合 type:'vertical' 参数使用默认200px
//,disabled: true //禁用滑块
//,theme: '#c00' //主题色
});
//sliderInst.setValue(30);
slider.render({
elem: '#slideTest2',
type: 'vertical'
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,107 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>静态表格 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body {padding: 32px;}
</style>
</head>
<body>
<div class="layui-btn-container">
<a href="table.html" class="layui-btn">表格综合</a>
<a href="table-test.html" class="layui-btn">表格操作</a>
<a href="table-static.html" class="layui-btn layui-btn-primary layui-border-green">静态表格</a>
</div>
<table class="layui-table">
<colgroup>
<col width="150">
<col width="150">
<col>
</colgroup>
<thead>
<tr>
<th>人物</th>
<th>民族</th>
<th>格言</th>
</tr>
</thead>
<tbody>
<tr>
<td>孔子</td>
<td>华夏</td>
<td>有朋至远方来,不亦乐乎</td>
</tr>
<tr>
<td>孟子</td>
<td>华夏</td>
<td>穷则独善其身,达则兼济天下</td>
</tr>
</tbody>
</table>
<br>
<table class="layui-table" lay-size="sm">
<colgroup>
<col width="150">
<col width="150">
<col>
</colgroup>
<thead>
<tr>
<th>人物</th>
<th>民族</th>
<th>格言</th>
</tr>
</thead>
<tbody>
<tr>
<td>孔子</td>
<td>华夏</td>
<td>有朋至远方来,不亦乐乎</td>
</tr>
<tr>
<td>孟子</td>
<td>华夏</td>
<td>穷则独善其身,达则兼济天下</td>
</tr>
</tbody>
</table>
<br>
<table class="layui-table" lay-size="lg">
<colgroup>
<col width="150">
<col width="150">
<col>
</colgroup>
<thead>
<tr>
<th>人物</th>
<th>民族</th>
<th>格言</th>
</tr>
</thead>
<tbody>
<tr>
<td>孔子</td>
<td>华夏</td>
<td>有朋至远方来,不亦乐乎</td>
</tr>
<tr>
<td>孟子</td>
<td>华夏</td>
<td>穷则独善其身,达则兼济天下</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,148 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>表格边框测试</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body {
padding: 32px; /*overflow-y: scroll;*/
}
.layui-table-view {
margin: 8px 0;
}
</style>
</head>
<body>
<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>
<blockquote class="layui-elem-quote">
无统计、无分页
</blockquote>
<table id="test"></table>
<blockquote class="layui-elem-quote">
有统计、无分页
</blockquote>
<table id="test1"></table>
<blockquote class="layui-elem-quote">
无统计、有分页
</blockquote>
<table id="test2"></table>
<blockquote class="layui-elem-quote">
有统计、有分页
</blockquote>
<table id="test3"></table>
<script src="../src/layui.js" src1="https://cdn.staticfile.org/layui/2.7.6/layui.js"></script>
<script>
layui.use(['table', 'laydate'], function () {
var $ = layui.$;
var table = layui.table;
var url = 'json/table/demo1.json';
// 无统计、无分页
table.render({
elem: '#test'
, url: url
// , totalRow: true
, height: 300
, cellMinWidth: 80
//,skin: 'line'
//,size: 'lg'
// , toolbar: true
, cols: [[
{field: 'id', hide: true}
, {field: 'username', title: '用户名'}
, {field: 'email', title: '邮箱'}
, {title: '操作', align: 'center', toolbar: '#barDemo'}
]]
});
// 有统计、无分页
table.render({
elem: '#test1'
, url: url
, totalRow: true
, height: 300
, cellMinWidth: 80
//,skin: 'line'
//,size: 'lg'
// , toolbar: true
, cols: [[
{field: 'id', hide: true}
, {field: 'username', title: '用户名'}
, {field: 'email', title: '邮箱'}
, {title: '操作', align: 'center', toolbar: '#barDemo'}
]]
});
// 无统计、有分页
table.render({
elem: '#test2'
, url: url
//,contentType: 'application/json' // 参数为 json 格式传递
, page: { // 详细参数可参考 laypage 组件文档
curr: 5
, groups: 1
, first: false
, last: false
, layout: ['limit', 'prev', 'page', 'next', 'count'] //自定义分页布局
}
// , totalRow: true
, height: 300
, cellMinWidth: 80
//,skin: 'line'
//,size: 'lg'
// , toolbar: true
, cols: [[
{field: 'id', hide: true}
, {field: 'username', title: '用户名'}
, {field: 'email', title: '邮箱'}
, {title: '操作', align: 'center', toolbar: '#barDemo'}
]]
});
// 有统计、有分页
table.render({
elem: '#test3'
, url: url
//,contentType: 'application/json' // 参数为 json 格式传递
, page: { // 详细参数可参考 laypage 组件文档
curr: 5
, groups: 1
, first: false
, last: false
, layout: ['limit', 'prev', 'page', 'next', 'count'] //自定义分页布局
}
, totalRow: true
, height: 300
, cellMinWidth: 80
//,skin: 'line'
//,size: 'lg'
// , toolbar: true
, cols: [[
{field: 'id', hide: true}
, {field: 'username', title: '用户名'}
, {field: 'email', title: '邮箱'}
, {title: '操作', align: 'center', toolbar: '#barDemo'}
]]
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,563 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>表格操作 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body {padding: 32px; /*overflow-y: scroll;*/}
</style>
</head>
<body>
<div class="layui-btn-container">
<a href="table.html" class="layui-btn">表格综合</a>
<a href="table-test.html" class="layui-btn layui-btn-primary layui-border-green">表格操作</a>
<a href="table-static.html" class="layui-btn">静态表格</a>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
<button class="layui-btn layui-btn-sm" lay-event="getData">获取当前页数据</button>
<button class="layui-btn layui-btn-sm" id="setRowChecked">
设置行选中状态
<i class="layui-icon layui-icon-down layui-font-12"></i>
</button>
<button class="layui-btn layui-btn-sm" id="reloadTest">
重载测试
<i class="layui-icon layui-icon-down layui-font-12"></i>
</button>
<button class="layui-btn layui-btn-sm layui-btn-primary" lay-event="multi-row"> 多行 </button>
<button class="layui-btn layui-btn-sm layui-btn-primary" lay-event="default-row"> 单行 </button>
<button class="layui-btn layui-btn-sm" id="moreTest">
更多测试
<i class="layui-icon layui-icon-down layui-font-12"></i>
</button>
</div>
</script>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
{{# if(layui.$.trim(d.email)){ }}
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
{{# } }}
<input type="checkbox" name="demoTableSwitch" lay-skin="switch" {{ d.demoTableSwitch }}>
</script>
<script type="text/html" id="usernameTpl">
<a href="" class="layui-table-link">{{d.username || ''}}</a>
</script>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="yyy" lay-skin="switch" lay-text="女|男">
</script>
<script type="text/html" id="cityTpl">
<select id="demoCity1" lay-unrow lay-ignore>
<option value="浙江杭州">浙江杭州</option>
<option value="江西南昌">江西南昌</option>
<option value="湖北武汉">湖北武汉</option>
</select>
</script>
<script type="text/html" id="checkboxTpl">
<input type="checkbox" name="" title="锁定" checked>
</script>
<script type="text/html" id="pagebarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="footerDemoBtn1">底部按钮1</button>
<button class="layui-btn layui-btn-sm" lay-event="footerDemoBtn2">底部按钮2</button>
</div>
</script>
<table id="test"></table>
<script src="../src/layui.js"></script>
<script>
(function(off){
if(!off) return;
layui.disuse('table').extend({
table: '{/}https://cdn.staticfile.org/layui/2.7.6/layui.js'
});
})();
layui.use(['table', 'dropdown'], function(){
var $ = layui.$;
var table = layui.table;
var laytpl = layui.laytpl;
var dropdown = layui.dropdown;
var form = layui.form;
// 仅用于各类测试的表头
var test_cols = [[
{type: 'checkbox', fixed: 'left'},
{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'},
{field:'username', title:'用户名', width:120, edit: 'text'},
{field:'email', title:'邮箱 <i class="layui-icon layui-icon-email"></i>', hide: 0, width:150, edit: 'text'},
{field:'sex', title:'性别', width:80, edit: 'text', sort: true},
{field:'city', title:'城市', width: 120},
{field:'sign', title:'签名'},
{field: 'experience', title: '积分', width:80, sort: true, align:'center', totalRow: '{{ d.TOTAL_NUMS }} 😊'},
{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
]];
// 全局设定某参数
table.set({
where: {
token: '默认 token 参数'
},
// defaultToolbar: ['filter'],
limit: 30,
// url: 'list',
// height: 300
});
// 渲染
window.ins1 = table.render({
elem: '#test',
height: 520,
// width: 600,
title: '用户数据表',
url: 'json/table/demo1.json',
// method: 'post',
// lineStyle: 'height: 95px;', // 行样式
css: [ // 自定义样式
'.layui-table-page{text-align: right;}',
'.layui-table-pagebar{float: left;}'
].join(''),
// className: '.demo-table-view',
// size: 'sm',
// skin: 'line',
// even: true,
// loading: false,
totalRow: true,
pagebar: '#pagebarDemo', // 分页栏模板
page: !1 ? false : {
// curr: layui.data('tableCache').curr || 1 // 读取记录中的页码,赋值给起始页
},
limit: 30,
toolbar: '#toolbarDemo',
defaultToolbar: ['filter', 'exports', 'print', {
title: '帮助',
layEvent: 'LAYTABLE_TIPS',
icon: 'layui-icon-tips'
}],
// escape: false,
editTrigger: 'dblclick',
// cellMaxWidth: 320
// cellExpandedWidth: 160, // 单元格默认展开后的宽度
// cellExpandedStyle: 'tips', // 单元格默认展开风格
cols: !1 ? test_cols : [[
{type: 'checkbox', fixed: 'left'},
// {type: 'numbers', fixed: 'left'},
{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'},
{field:'username', expandedStyle: 'tips', title:'用户名 <i class="layui-icon layui-icon-username" lay-event="username"></i>', width:120, edit: function(d){
return !d.LAY_DISABLED;
}, templet: '#usernameTpl'},
{field:'xxx', title:'测试', edit: 'text'},
{field:'email', minWidth: 160, maxWidth: 320, title:'邮箱 <i class="layui-icon layui-icon-email" lay-event="email"></i>', fieldTitle: '邮箱', hide: 0, edit: 'text', style: 'background-color: #fafafa; color: red;', templet: function(d){
return '<em>'+ layui.util.escape(d.email) +'</em>'
}},
{field:'sex', title:'性别', width:80, edit: 'text', sort: true, escape: false},
{field:'city', title:'城市', width:120, templet: '#cityTpl', exportTemplet: function(d, obj){
// return '=HYPERLINK("https://abc.com/a.jpg","截图")'; // 测试内容存在特殊符
// console.log(obj)
var td = obj.td(this.field); //获取当前 td
return td.find('select').val();
}},
{field:'sign', title:'签名', minWidth: 200, style:'color: #5FB878', edit: 'textarea'},
{field: 'experience', title: '积分', width: 100, sort: true, align:'center', totalRow: !1 ? true : '{{= d.TOTAL_NUMS }} 分 😊', templet: '<div><a href="" class="layui-table-link">{{= d[d.LAY_COL.field] }}</a> 分</div>'},
{field:'ip', title:'IP', width: 120, align: 'right'},
{field:'checkin', title:'打卡', width: 100, sort: true, totalRow: '{{= d.TOTAL_ROW.checkin }} 次'},
{field:'joinTime', title:'加入时间', width: 120},
{fixed: 'right', title:'操作', toolbar: '#barDemo', width: 180}
]],
// autoSort: false // 禁用前端自动排序,由服务的完成排序
initSort111: { // 初始排序状态
field: 'experience', // 排序字段,对应 cols 设定的各字段名
type: 'desc' // 排序方式 asc: 升序、desc: 降序、null: 默认排序
},
headers: {headers_token: 'sasasas'},
where: {
test: '初始 test 参数',
token: '初始 token',
key: 'experience',
order: 'asc'
},
before: function(options){
options.where.AAAAA = 123;
// console.log(options)
},
done: function(res, curr, count){
var id = this.id;
// 记录当前页码
/*
layui.data('tableCache', {
key: 'curr',
value: curr
});
*/
// 设置选中行状态
dropdown.render({
elem: '#setRowChecked', // 可绑定在任意元素中,此处以上述按钮为例
data: [{
id: 'checked',
title: '选中某行'
},{
id: 'unchecked',
title: '取消选中某行'
},{
id: 'reset-checked',
title: '给选中行取消选中状态'
}],
// 菜单被点击的事件
click: function(obj){
if(obj.id === 'reset-checked'){
// 给选中行取消选中状态
table.setRowChecked(id, {
index: 'all',
checked: false
});
} else {
layer.prompt({
title: '请输入表格行号',
value: 1,
shade: false
}, function(value, i){
switch(obj.id){
case 'checked':
table.setRowChecked(id, {
index: value,
checked: true
});
break;
case 'unchecked':
table.setRowChecked(id, {
index: value,
checked: false
});
break;
}
layer.close(i);
});
}
}
});
// 重载测试
dropdown.render({
elem: '#reloadTest', // 可绑定在任意元素中,此处以上述按钮为例
data: [{
id: 'reload',
title: '重载'
},{
id: 'reload-deep',
title: '重载 - 参数叠加'
},{
id: 'reloadData',
title: '仅重载数据'
},{
id: 'reloadData-deep',
title: '仅重载数据 - 参数叠加'
}],
// 菜单被点击的事件
click: function(obj){
switch(obj.id){
case 'reload':
// 重载 - 默认(参数重置)
table.reload('test', {
where: {
abc: '123456',
// test: '新的 test2',
// token: '新的 token2'
},
height: 'full-130', // 重载高度
/*
cols: [[ // 重置表头
{type: 'checkbox', fixed: 'left'},
{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'},
{field:'sex', title:'性别', width:80, edit: 'text', sort: true},
{field:'experience', title:'积分', width:80, sort: true, totalRow: true, templet: '<div>{{ d.experience }} 分</div>'},
{field:'logins', title:'登入次数', width:100, sort: true, totalRow: true},
{field:'joinTime', title:'加入时间', width:120}
]]
*/
});
break;
case 'reload-deep':
// 重载 - 深度(参数叠加)
table.reload('test', {
where: {
abc: 123,
test: '新的 test1'
},
//,defaultToolbar: ['print'] // 重载头部工具栏右侧图标
page: {curr: 5, limit: 20}
//,cols: ins1.config.cols
}, true);
break;
case 'reloadData':
// 数据重载 - 参数重置
table.reloadData('test', {
where: {
abc: '123456',
// test: '新的 test2',
// token: '新的 token2'
},
height: 2000, // 测试无效参数
// url: '404',
// elem: null,
// page: {curr: 5, limit: 20},
scrollPos: 'fixed' // 保持滚动条位置不变
});
break;
case 'reloadData-deep':
// 数据重载 - 参数叠加
table.reloadData('test', {
where: {
abc: 123,
test: '新的 test1'
}
}, true);
break;
}
layer.msg('可观察 Network 请求参数的变化');
}
});
// 更多测试
dropdown.render({
elem: '#moreTest', // 可绑定在任意元素中,此处以上述按钮为例
data: [{
id: 'add',
title: '添加'
},{
id: 'update',
title: '编辑'
},{
id: 'delete',
title: '删除'
}],
// 菜单被点击的事件
click: function(obj){
var checkStatus = table.checkStatus(id)
var data = checkStatus.data; // 获取选中的数据
switch(obj.id){
case 'add':
layer.open({
title: '添加',
type: 1,
area: ['80%','80%'],
content: '<div style="padding: 16px;">自定义表单元素</div>'
});
break;
case 'update':
layer.open({
title: '编辑',
type: 1,
area: ['80%','80%'],
content: '<div style="padding: 16px;">自定义表单元素</div>'
});
break;
case 'delete':
if(data.length === 0){
return layer.msg('请选择一行');
}
layer.msg('delete event');
break;
}
}
});
},
/*
request: { // 自定义请求参数名称
pageName: 'curr', // 页码的参数名称默认page
limitName: 'nums' // 每页数据量的参数名默认limit
},
parseData: function(res){ // 任意数据格式的解析
return {
"status": res.status,
"msg": res.message,
"count": res.total,
"data": res.data.list
};
},
*/
error: function(res, msg){
console.log(res, msg)
}
});
// 排序事件
table.on('sort(test)', function(obj){
// console.log(obj);
// return;
layer.msg('服务端排序。order by '+ obj.field + ' ' + obj.type);
// 服务端排序
table.reloadData('test', {
// initSort: obj,
// page: {curr: 1}, // 重新从第一页开始
where: { // 向服务端传入排序参数
key: obj.field, // 排序字段
order: obj.type // 排序方式
}
});
});
// 头部工具栏事件
table.on('toolbar(test)', function(obj){
var id = obj.config.id;
var checkStatus = table.checkStatus(id);
switch(obj.event){
case 'getCheckData':
var data = checkStatus.data;
layer.alert(layui.util.escape(JSON.stringify(data)));
break;
case 'getData':
var getData = table.getData(id);
console.log(getData);
layer.alert(layui.util.escape(JSON.stringify(getData)));
break;
case 'isAll':
layer.msg(checkStatus.isAll ? '全选': '未全选')
break;
case 'multi-row':
table.reload('test', {
// 设置行样式,此处以设置多行高度为例。若为单行,则没必要设置改参数 - 注v2.7.0 新增
lineStyle: 'height: 95px;'
});
layer.msg('即通过设置 lineStyle 参数可开启多行');
break;
case 'default-row':
table.reload('test', {
lineStyle: null // 恢复单行
});
layer.msg('已设为单行');
break;
case 'LAYTABLE_TIPS':
layer.alert('Table for layui-v'+ layui.v);
break;
};
});
// 表头自定义元素工具事件
table.on('colTool(test)', function(obj){
console.log(obj);
});
// 触发单元格工具事件
table.on('tool(test)', function(obj){ // 双击 toolDouble
var data = obj.data;
// console.log(obj)
if (obj.event === 'edit') {
layer.prompt({
formType: 2
,value: data.email
}, function(value, index){
obj.update({
email: value
}, true); // 参数 true 为新版新增功能,详见文档
/*
// 上述 obj.update() 只是在前端临时更新数据视图
// 在实际业务中,当发送修改请求成功后,可再执行 reloadData 来重载数据
table.reloadData('test', {
scrollPos: 'fixed' // 保持滚动条位置不变
});
*/
layer.close(index);
});
} else if (obj.event === 'del') {
layer.confirm('真的删除行么', function(index){
obj.del();
layer.close(index);
});
}
});
// 触发表格复选框选择
table.on('checkbox(test)', function(obj){
console.log(obj)
});
// 触发表格单选框选择
table.on('radio(test)', function(obj){
console.log(obj)
});
// 行单击事件
table.on('row(test)', function(obj){
console.log(obj);
// layer.closeAll('tips');
obj.setRowChecked({
// type: 'radio'
});
// layer.msg('row 事件')
});
// 行双击事件
table.on('rowDouble(test)', function(obj){
console.log(obj);
});
// 单元格编辑事件
table.on('edit(test)', function(obj){
var field = obj.field // 得到字段
var value = obj.value // 得到修改后的值
var oldValue = obj.oldValue // 得到修改前的值 -- v2.8.0 新增
var data = obj.data; // 得到当前编辑所在行的数据
var col = obj.getCol(); // 得到当前列的表头配置属性
// 值的校验
if(field === 'email'){
if(!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(obj.value)){
layer.tips('输入的'+ col.fieldTitle +'格式不正确,请重新编辑', this, {tips: 1});
return obj.reedit(); // 重新编辑 -- v2.8.0 新增
}
}
// 编辑后续操作,如提交更新请求,以完成真实的数据更新
// …
layer.msg('编辑成功', {icon: 1});
// 其他更新操作
var update = {};
update[field] = value;
obj.update(update, true); // 参数 true 为 v2.7.4 新增功能,即同步更新其他包含自定义模板并可能存在关联的列视图
});
// 列拖拽宽度后的事件 -- v2.8.0 新增
table.on('colResized(test)', function(obj){
console.log(obj);
});
// 列拖拽宽度后的事件 -- v2.8.0 新增
table.on('colToggled(test)', function(obj){
console.log(obj);
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,339 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>表格操作 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 32px; /*overflow-y: scroll;*/}
.layui-table-view{margin: 8px 0;}
</style>
</head>
<body>
<div class="layui-btn-container">
<a href="table.html" class="layui-btn layui-btn-primary layui-border-green">表格综合</a>
<a href="table-test.html" class="layui-btn">表格操作</a>
<a href="table-static.html" class="layui-btn">静态表格</a>
</div>
<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>
<table id="test"></table>
<table id="test-data"></table>
<table id="test-arr"></table>
<table id="test-json"></table>
<div style="display: none1;">
<table class="layui-table" lay-data="{width:800, height: 300, url:'json/table/demo2.json', page: true, even: true, limit: 6, toolbar: true}">
<thead>
<tr>
<th lay-data="{checkbox:true, fixed:'left'}" rowspan="2"></th>
<th lay-data="{field:'username', width:80}" rowspan="2">联系人</th>
<th lay-data="{field:'amount', width:120}" rowspan="2">金额</th>
<th lay-data="{align:'center'}" colspan="5">地址</th>
<th lay-data="{fixed: 'right', width: 155, align: 'center', toolbar: '#barDemo'}" rowspan="2">操作</th>
</tr>
<tr>
<th lay-data="{field:'province', width:130}"></th>
<th lay-data="{field:'city', width:130}"></th>
<th lay-data="{field:'zone', width:200}"></th>
<th lay-data="{field:'address', width:120}">小区</th>
<th lay-data="{field:'house', width:150}">单元</th>
</tr>
</thead>
</table>
<table class="layui-table" lay-data="{url:'json/table/demo2.json', page: true, limit: 6, toolbar: true}">
<thead>
<tr>
<th lay-data="{field:'username'}" rowspan="3">联系人</th>
<th lay-data="{field:'amount', width:120,hide:1}" rowspan="3">金额</th>
<th lay-data="{align:'center'}" colspan="5">地址1</th>
<th lay-data="{align:'center'}" colspan="2">地址2</th>
<th lay-data="{fixed: 'right', width: 120, align: 'center', toolbar: '#barDemo'}" rowspan="3">操作</th>
</tr>
<tr>
<th lay-data="{field:'province', width:120,hide:1}" rowspan="2"></th>
<th lay-data="{field:'city', width:80,hide:1}" rowspan="2"></th>
<th lay-data="{align:'center'}" colspan="2">详细</th>
<th lay-data="{field:'zone'}" rowspan="2"></th>
<th lay-data="{field:'province', width:80}" rowspan="2"></th>
<th lay-data="{field:'city', width:80}" rowspan="2"></th>
</tr>
<tr>
<th lay-data="{field:'address', width:120,hide:1}">小区</th>
<th lay-data="{field:'house', width:150,hide:1}">单元</th>
</tr>
</thead>
</table>
<div class="layui-btn-group">
<button class="layui-btn" data-type="parseTable">转化为数据表格</button>
</div>
<table class="layui-table" lay-skin="line" lay-filter="parse-table-demo">
<thead>
<tr>
<th lay-data="{checkbox:true}"></th>
<th lay-data="{field:'username', width:200}">昵称</th>
<th lay-data="{field:'joinTime', width:150}">加入时间</th>
<th lay-data="{field:'sign'}">签名</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td>贤心1</td>
<td>2016-11-28</td>
<td>人生就像是一场修行a</td>
</tr>
<tr>
<td></td>
<td>贤心2</td>
<td>2016-11-29</td>
<td>人生就像是一场修行b</td>
</tr>
<tr>
<td></td>
<td>贤心3</td>
<td>2016-11-30</td>
<td>人生就像是一场修行c</td>
</tr>
</tbody>
</table>
<table class="layui-table" lay-filter="parse-table-demo">
<thead>
<tr>
<td rowspan="2" lay-data="{field:'louceng'}">楼层</td>
<td colspan="2">1单元</td>
<td colspan="2">2单元</td>
</tr>
<tr>
<td lay-data="{field:'men1', width:80}">1门</td>
<td lay-data="{field:'men2', width:80}">2门</td>
<td lay-data="{field:'men3', width:80}">1门</td>
<td lay-data="{field:'men4', width:80}">2门</td>
</tr>
</thead>
<tbody>
<tr>
<td>3楼</td>
<td>301</td>
<td>302</td>
<td>301</td>
<td>302</td>
</tr>
<tr>
<td>2楼</td>
<td>201</td>
<td>202</td>
<td>201</td>
<td>202</td>
</tr>
<tr>
<td>1楼</td>
<td>101</td>
<td>102</td>
<td>101</td>
<td>102</td>
</tr>
</tbody>
</table>
</div>
<script src="../src/layui.js" src1="https://cdn.staticfile.org/layui/2.7.6/layui.js"></script>
<script>
layui.use('table', function(){
var $ = layui.$;
var table = layui.table;
// 常规示例
table.render({
elem: '#test'
,url: 'json/table/demo1.json'
//,contentType: 'application/json' // 参数为 json 格式传递
,page: !1 ? false : { // 详细参数可参考 laypage 组件文档
curr: 5
,groups: 1
,first: false
,last: false
,layout: ['limit', 'prev', 'page', 'next', 'count'] //自定义分页布局
}
,height: 300
,cellMinWidth: 80
//,skin: 'line'
//,size: 'lg'
,toolbar: true
,cols: [[
{field: 'id', hide: true}
,{field: 'username', title: '用户名'}
,{field: 'email', title: '邮箱'}
,{title:'操作', align:'center', toolbar: '#barDemo'}
]]
});
//return;
// 直接赋值数据
table.render({
elem: '#test-data'
//,width: 900
//,height: 274
,toolbar: true
,cols: [[ //标题栏
//{type: 'space'},
{type: 'checkbox', LAY_CHECKED: true},
{field: 'id', title: 'ID', width: 80, sort: true},
{field: 'username', title: '用户名', width: 120},
{field: 'email', title: '邮箱', width: 150},
{field: 'sign', title: '签名', minWidth: 150},
{field: 'sex', title: '性别', width: 80},
{field: 'city', title: '城市', width: 100},
{field: 'experience', title: '积分', width: 80, sort: true, totalRow: '{{= parseInt(d.TOTAL_NUMS) }}'}
,{field:'ip', title:'IP', width: 120, align: 'right'}
,{field:'joinTime', title:'加入时间', width: 120}
]]
,data: [{
"id": "10001"
,"username": "杜甫"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "116"
,"ip": "192.168.0.8"
,"logins": "108"
,"joinTime": "2016-10-14"
}, {
"id": "10002"
,"username": "李白"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "12"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
,"LAY_CHECKED": true
}, {
"id": "10003"
,"username": "王勃"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "65"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10004"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "666"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10005"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "86"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10006"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "12"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10007"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "16"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10008"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "106"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}]
,skin: 'row' //表格风格
,even: true
//,size: 'lg' //尺寸
,page: true //是否显示分页
,limits: [3,5,10]
,limit: 3 //每页默认显示的数量
,totalRow: true
//,loading: false //请求数据时是否显示loading
});
// 渲染数组成员非对象的内容v2.8.0 新增)
table.render({
elem: '#test-arr',
data: ['a','b','c','d','e','f','g','h','i'],
page: true,
limit: 3,
cols: [[
{type: 'numbers', title: '序号'},
{field: 'LAY_KEY', title: '内容'}
]]
});
var $ = layui.jquery, active = {
parseTable: function(){
table.init('parse-table-demo', {
limit: 3
});
}
,add: function(){
table.addRow('test')
}
};
$('i').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
$('.layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,50 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>text for markdown - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
</head>
<body>
<div class="layui-container layui-row">
<div class="layui-col-md4 layui-text">
<h1>标题1</h1>
<h2>标题2</h2>
<h3>标题3</h3>
<h4>标题4</h4>
<h5>标题5</h5>
<h6>标题6</h6>
<p>段落1段落1段落1段落1段落1段落1段落1段落1段落1段落1段落1段落1段落1段落1段落1段落1 <sup class="footnote-ref"><a href="#ref-1">[1]</a></sup></p>
<p>段落2段落2段落2段落2段落2段落2段落2段落2段落2段落2段落2段落2段落2段落2段落2段落2</p>
<p>段落3段落3段落3段落3段落3段落3段落3段落3段落3段落3段落3段落3 <a href="">链接</a></p>
<ul>
<li>无序1</li>
<li>无序2</li>
<li>无序3</li>
</ul>
<ol>
<li>有序1</li>
<li>有序2</li>
<li>有序3</li>
</ol>
<br>
<blockquote>
<p>引用</p>
<blockquote>内嵌引用<blockquote>内嵌引用</blockquote></blockquote>
</blockquote>
<br>
<pre>
var cp = function(){
return gulp.src('./dist/**/*')
.pipe(gulp.dest(dest));
};</pre>
<p id="ref-1">REF-1</p>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,102 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>穿梭框</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 100px;}
#text1,#text2{padding-bottom: 60px;}
</style>
</head>
<body>
<div class="layui-btn-container">
<button type="button" class="layui-btn" lay-demo="getData">获取右侧数据</button>
<button type="button" class="layui-btn" lay-demo="reload">重载实例</button>
</div>
<div id="text1"></div>
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">职位</label>
<div class="layui-input-block">
<div id="text2"></div>
</div>
</div>
</div>
<div id="text3"></div>
<script src="../src/layui.js"></script>
<script>
layui.use(['transfer', 'util'], function(){
var $ = layui.$
,transfer = layui.transfer
,util = layui.util;
var ins1 = transfer.render({
elem: '#text1'
,title: ['候选文人', '获奖文人']
,data: [
{"value": "1", "title": "李白"}
,{"value": "2", "title": "杜甫"}
,{"value": "3", "title": "贤心"}
,{"value": "11", "title": "鲁迅", "disabled": true}
,{"value": "15", "title": "巴金"}
,{"value": "16", "title": "冰心"},
{"value": "6", "title": "冰心"},{"value": "6", "title": "冰心"},{"value": "6", "title": "冰心"},{"value": "6", "title": "冰心"},{"value": "6", "title": "冰心"},{"value": "6", "title": "Bbb"},{"value": "6", "title": "BB"},{"value": "6", "title": "Aa"},{"value": "6", "title": "aa"}
]
,id: 'demoId'
,value: ["1", "15", "16"]
,showSearch: true // 若区分大小写,设置 'cs'
});
//按钮事件
util.event('lay-demo', {
getData: function(othis){
alert(JSON.stringify(ins1.getData()))
}
,reload: function(){
transfer.reload('demoId', {
value: ["6"]
//,data: [{"value": "1", "title": "李白"}]
});
}
});
var ins2 = transfer.render({
elem: '#text2'
,showSearch: true
,onchange: function(obj){
console.log(obj)
}
,parseData: function(res){
return {
"value": res.id
,"title": res.label
,"disabled": res.disabled
,"checked": res.checked
}
}
,data: [
{"id": "1", "label": "瓦罐汤"}
,{"id": "2", "label": "油酥饼"}
,{"id": "3", "label": "炸酱面"}
,{"id": "4", "label": "串串香", "disabled": true}
,{"id": "5", "label": "豆腐脑"}
,{"id": "6", "label": "驴打滚"}
]
,value: ["1", "5"]
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,254 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>树组件 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css" media="all">
<style>
body{padding: 100px;}
#test1,#test2{margin-bottom: 100px; width: 400px;}
</style>
</head>
<body>
<div class="layui-btn-container">
<button type="button" class="layui-btn" lay-demo="getChecked">获取选中数据</button>
<button type="button" class="layui-btn" lay-demo="setChecked">设置节点勾选</button>
<button type="button" class="layui-btn" lay-demo="reload">重载实例</button>
</div>
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">表单内</label>
<div class="layui-input-block">
</div>
</div>
<div id="test1"></div>
<div id="test2"></div>
<script src="../src/layui.js"></script>
<script>
layui.use(['tree', 'layer', 'util'], function(){
var $ = layui.$
,tree = layui.tree
,layer = layui.layer
,util = layui.util
,index = 100;
//数据源
var data1 = [{
title: 'A-1'
,id: 1
,children: [{
title: 'B-1-1'
,id: 3
,href: 'https://www.layui.com/doc/'
,children: [{
title: 'C-1-1-3'
,id: 23
,children: [{
title: 'D-1-1-3-1'
,id: 24
,children: [{
title: 'E-1-1-3-1-1'
,id: 30
},{
title: 'E-1-1-3-1-2'
,id: 31
}]
}]
},{
title: 'C-1-1-1'
,id: 7
,checked: true
,children: [{
title: 'D-1-1-1-1'
,id: 15
//,checked: true
,href: 'https://www.layui.com/doc/base/infrastructure.html'
}]
},{
title: 'C-1-1-2'
,id: 8
,children: [{
title: 'D-1-1-2-1'
,id: 32
}]
}]
},{
title: 'B-1-2'
,id: 4
,spread: true
,children: [{
title: 'C-1-2-1'
,id: 9
,checked: true
,disabled: true
},{
title: 'C-1-2-2'
,id: 10
}]
},{
title: 'B-1-3'
,id: 20
,children: [{
title: 'C-1-3-1'
,id: 21
},{
title: 'C-1-3-2'
,id: 22
}]
}]
},{
title: 'A-2'
,id: 2
,spread: true
,children: [{
title: 'B-2-1'
,id: 5
,spread: true
,children: [{
title: 'C-2-1-1'
,id: 11
},{
title: 'C-2-1-2'
,id: 12
}]
},{
title: 'B-2-2'
,id: 6
,checked: true
,children: [{
title: 'C-2-2-1'
,id: 13
},{
title: 'C-2-2-2'
,id: 14
,disabled: true
}]
}]
},{
title: 'A-3'
,id: 16
,children: [{
title: 'B-3-1'
,id: 17
,fixed: true
,children: [{
title: 'C-3-1-1'
,id: 18
},{
title: 'C-3-1-2'
,id: 19
}]
},{
title: 'B-3-2'
,id: 27
,children: [{
title: 'C-3-2-1'
,id: 28
},{
title: 'C-3-2-2'
,id: 29
}]
}]
}];
//数据源
var data2 = [{
title: '控制台'
,id: '1000'
,spread: true
,checked: true
,children: [{
title: '概览'
,id: '1001'
,spread: true
,checked: true
},{
title: '域名'
,id: '1002'
,spread: true
,checked: true
}]
}]
tree.render({
elem: '#test1'
,data: data1
,id: 'demoId1'
,click: function(obj){
layer.msg(JSON.stringify(obj.data));
console.log(obj);
}
,oncheck: function(obj){
//console.log(obj);
}
,operate: function(obj){
var type = obj.type;
if(type == 'add'){
//ajax操作返回key值
return index++;
}else if(type == 'update'){
console.log(obj.elem.find('.layui-tree-txt').html());
}else if(type == 'del'){
console.log(obj);
};
}
,showCheckbox: true //是否显示复选框
,accordion: 0 //是否开启手风琴模式
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,isJump: 0 //点击文案跳转地址
,edit: true //操作节点图标
});
//按钮事件
util.event('lay-demo', {
getChecked: function(othis){
var checkedData = tree.getChecked('demoId1');
layer.alert(JSON.stringify(checkedData), {shade:0});
console.log(checkedData);
}
,setChecked: function(){
tree.setChecked('demoId1', [11,12]);
}
,reload: function(){
tree.reload('demoId1', {
});
}
});
tree.render({
elem: '#test2'
,data: data1
//,expandClick: false
,showLine: false //关闭连接线
,click: function(obj, state){
console.log(obj);
}
,oncheck: function(obj, checked, child){
if(checked){
console.log(obj[0]);
}
}
,onsearch: function(data, num){
console.log(num);
}
,dragstart: function(obj, parent){
console.log(obj, parent);
}
,dragend: function(state, obj, target){
console.log(state, obj, target);
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,114 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>树形表格 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body {padding: 32px;}
</style>
</head>
<body>
<table class="layui-hide" id="test"></table>
<script type="text/html" id="TPL-treeTable-demo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="getChecked">获取选中数据</button>
</div>
</script>
<script src="../src/layui.js"></script>
<script>
layui.use(['treeTable'], function(){
var treeTable = layui.treeTable;
// 渲染
treeTable.render({
elem: '#test',
url: './json/treeTable/demo-1.json',
maxHeight: 'full-32',
toolbar: '#TPL-treeTable-demo',
tree: {
customName: {
name: 'name'
},
view: {
iconLeaf: ''
}
},
cols: [[
{type: 'checkbox', fixed: 'left'},
{type: 'numbers', fixed: 'left'},
{field: 'id', title: 'ID', width: 145, sort: true, fixed: 'left', totalRow: '合计:'},
{field: 'name', title: '用户名', width: 180, fixed: 'left'},
{field: 'experience', title: '积分', width: 90, sort: true},
{field: 'sex', title: '性别', width: 80, sort: true},
{field: 'score', title: '评分', width: 80, sort: true},
{field: 'city', title: '城市', width: 150},
{field: 'description', title: '描述', minWidth: 200},
{field: 'createTime', title: '创建时间', width: 170, fixed: 'right'}
]],
page: true
});
// 单元格工具事件
treeTable.on('row(test)', function (obj) {
console.log(obj);
});
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Mock.js/1.0.0/mock-min.js"></script>
<script>
// 生成模拟数据
const createData = () => {
// 生成随机 ID 函数
const createId = (() => {
let nextId = 1
return () => nextId++
})()
// 生成节点函数
const createNode = (parentId = null, level = 0) => {
const id = createId()
const children = level < 3 ? Mock.mock({
'array|0-5': [
createNode.bind(null, id, level + 1)
]
}).array : []
return {
id,
name: `User-${id}`,
type: Mock.mock('@d6'),
status: Mock.Random.d4(),
score: Mock.Random.d100(),
experience: Mock.Random.integer(1000, 99999),
sex: Mock.Random.cword('男女', 1),
city: Mock.Random.city(),
description: '-',
createTime: Mock.mock('@datetime'),
parentId,
children,
isParent: !!children.length
}
}
// 生成树
const rootNodes = Mock.mock({
'array|10-20': [
createNode
]
}).array
const getTreeData = function (nodes) {
let result = []
nodes.forEach(node => {
result.push({...node, parentId: null, children: getTreeData(node.children)});
})
return result
};
return getTreeData(rootNodes);
};
</script>
</body>
</html>

View File

@@ -0,0 +1,350 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>上传组件 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 50px 100px;}
.layui-upload-img{width: 92px; height: 92px; margin: 0 10px 10px 0;}
hr{margin: 30px 0;}
</style>
</head>
<body>
<div class="layui-upload">
<button type="button" class="layui-btn" id="test1" name="123">上传图片</button>
<div class="layui-upload-list">
<img class="layui-upload-img" src="" id="demo1">
<p id="demoText"></p>
</div>
</div>
<div class="layui-progress layui-progress-big" lay-showPercent="yes" lay-filter="demo">
<div class="layui-progress-bar" lay-percent=""></div>
</div>
<hr>
<div class="layui-upload">
<button type="button" class="layui-btn" id="test2">多图片上传</button>
<div class="layui-upload-list" id="demo2"></div>
</div>
<hr>
<div class="layui-upload">
<button type="button" class="layui-btn layui-btn-normal" id="testList">选择多文件</button>
<div class="layui-upload-list">
<table class="layui-table">
<thead>
<th>文件名</th>
<th>大小</th>
<th>上传进度</th>
<th>操作</th>
</thead>
<tbody id="demoList"></tbody>
</table>
</div>
<button type="button" class="layui-btn" id="testListAction">开始上传</button>
</div>
<hr>
<div class="layui-btn-container">
<button type="button" class="layui-btn test333" lay-data="{size:10,url:'a'}" id="test3"><i class="layui-icon">&#xe67c;</i>上传文件</button>
<button type="button" class="layui-btn layui-btn-primary test333" lay-data="{size:20,url:'b'}" id="test33"><i class="layui-icon">&#xe67c;</i>换个样式</button>
<button type="button" class="layui-btn" id="test4"><i class="layui-icon">&#xe67c;</i>上传视频</button>
<button type="button" class="layui-btn" id="test5"><i class="layui-icon">&#xe67c;</i>上传音频</button>
</div>
<hr>
<div class="layui-btn-container">
<button class="layui-btn testm" lay-data="{url: '/a/'}">参数设在元素上</button>
<button class="layui-btn testm" lay-data="{url: '/b/', accept: 'file',size:5}">参数设在元素上</button>
</div>
<hr>
<div class="layui-btn-container">
<button type="button" class="layui-btn layui-btn-normal" id="test6">选择文件</button>
<button type="button" class="layui-btn" id="test7">开始上传</button>
</div>
<hr><br>
<div class="layui-upload-drag" id="test8">
<i class="layui-icon">&#xe67c;</i>
<p>点击上传,或将文件拖拽到此处</p>
</div>
<hr><br>
绑定原始文件域:<input type="file" name="file" id="test9">
<script src="../src/layui.js" src1="https://cdn.staticfile.org/layui/2.6.8/layui.js"></script>
<script>
layui.use(['upload', 'element'], function(){
var $ = layui.$;
var upload = layui.upload;
var element = layui.element;
var uploadInst = upload.render({
elem: '#test1',
url: 'https://httpbin.org/post',
// size: 2000, //限制文件大小,单位 KB
// accept: 'file',
method: 'get',
fileAccept: 'image/*',
exts: 'jpg|png|gif|bmp|jpeg|pdf',
data: { // 额外参数
a: 1,
b: function(){
return 2
}
},
choose: function(obj){
console.log('choose', obj);
},
before: function(obj){
//预读本地文件示例不支持ie8
obj.preview(function(index, file, result){
$('#demo1').attr('src', result); //图片链接base64
});
return;
layer.msg('不允许上传')
return false;
},
done: function(res, index){
//如果上传失败
if(res.code > 0){
return layer.msg('上传失败');
}
//上传成功
console.log(res, index);
},
error: function(index, upload){
this.item.html('重选上传');
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
uploadInst.upload();
});
element.progress('demo', '0%');
},
progress: function(n, elem, res, index){
console.log(n + '%', elem, res, index); //获取进度百分比
element.progress('demo', n + '%'); //可配合 layui 进度条元素使用
}
});
// 重置上述 upload 实例
uploadInst.reload({
name:'avatar',
accept: 'images', // 只允许上传图片
acceptMime: 'image/*', // 只筛选图片
//,size: 2
});
// 演示多图片上传
upload.render({
elem: '#test2',
url: 'https://httpbin.org/post',
multiple: true, // 多文件
unified: true, // 一起上传 --- 2.8.8+
accept: 'images',
number: 3, // 同时上传的数量
size: 1024,
before: function(obj){
// 预读本地文件示例不支持ie8
obj.preview(function(index, file, result){
$('#demo2').append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img">')
});
// this.files = obj.pushFile();
},
done: function(res, index){
// 上传完毕
console.log(res, index)
},
allDone: function(obj){
console.log(obj)
}
});
// 演示多文件列表 --- 本示例仅演示未开启 unified 属性的情况
var demoListView = $('#demoList');
var uploadListIns = upload.render({
elem: '#testList',
url: 'https://httpbin.org/post',
accept: 'file',
multiple: true,
number: 5,
auto: false,
bindAction: '#testListAction',
// size: 30,
choose: function(obj){
var files = this.files = obj.pushFile(); // 将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function(index, file, result){
var tr = $(['<tr id="upload-'+ index +'">'
,'<td>'+ file.name +'</td>'
,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
,'<td><div class="layui-progress" lay-filter="progress-'+ index +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
,'<td>'
,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
,'</td>'
,'</tr>'].join(''));
//单个重传
tr.find('.demo-reload').on('click', function(){
obj.upload(index, file);
});
//删除
var that = this;
tr.find('.demo-delete').on('click', function(){
console.log(files, index);
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
});
demoListView.append(tr);
element.render('progress');
});
},
done: function(res, index, upload){
//if(res.code == 0){ //上传成功
var tr = demoListView.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(3).html(''); //清空操作
delete this.files[index]; //删除文件队列已经上传成功的文件
return;
//}
this.error(index, upload);
},
allDone: function(obj){
console.log(obj)
},
error: function(index, upload){
var tr = demoListView.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
},
progress: function(n, elem, e, index){
console.log(n);
console.log(index);
element.progress('progress-'+ index, n + '%'); //进度条
}
});
upload.render({
elem: '.test333',
url: 'a',
accept: 'file',
before: function(obj){
console.log(this.item);
},
done: function(res){
console.log(res)
}
});
upload.render({
elem: '.testm',
done: function(res, index, upload){
//获取当前触发上传的元素,一般用于 elem 绑定 class 的情况,注意:此乃 layui 2.1.0 新增
var item = this.item;
}
})
/*
upload.render({
elem: '#test33',
url: '',
accept: 'file',
done: function(res){
console.log(res)
}
});*/
upload.render({
elem: '#test4',
url: '',
accept: 'video',
done: function(res){
console.log(res)
}
});
upload.render({
elem: '#test5',
url: '',
accept: 'audio',
done: function(res){
console.log(res)
}
});
//手动上传
upload.render({
elem: '#test6',
url: '',
auto: false,
// multiple: true,
bindAction: '#test7',
choose: function(obj){
var that = this;
obj.preview(function(index, file){
that.elem.after('<span class="layui-inline layui-upload-choose">'+ file.name +'</span>');
console.log(file.name);
//obj.resetFile(index, file, '123.jpg');
});
},
before: function(){
console.log(345);
},
done: function(res){
console.log(res);
}
});
upload.render({
elem: '#test8',
url: 'https://httpbin.org/post',
done: function(res){
console.log(res);
}
});
upload.render({
elem: '#test9',
url: '',
done: function(res){
console.log(res);
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,146 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>util 组件 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
<style>
body{padding: 50px;}
</style>
</head>
<body>
<button class="layui-btn" lay-active="e1">事件1</button>
<button class="layui-btn" lay-active="e2">事件2</button>
<button class="layui-btn" lay-active="e3">事件3</button>
<button class="layui-btn" lay-active2="e4">事件4</button>
<hr>
<div id="test"></div>
<hr>
<div id="test1"></div>
<hr>
请编辑格式:
<div class="layui-inline">
<input type="text" value="yyyy-MM-dd HH:mm:ss" class="layui-input" id="test2"/>
</div>
<span class="layui-word-aux" id="test3"></span>
<hr>
<div id="target-test" style1="position: relative; height: 300px; overflow: auto;">
1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use(['util', 'layer'], function(){
var $ = layui.$;
var util = layui.util;
var layer = layui.layer;
// 固定块
util.fixbar({
bars: [{ // 定义可显示的 bar 列表信息 -- v2.8.0 新增
type: 'share',
icon: 'layui-icon-share'
}, {
type: 'help',
icon: 'layui-icon-help'
}, {
type: 'cart',
icon: 'layui-icon-cart',
style: 'background-color: #FF5722;'
}, {
type: 'groups',
content: '群',
style: 'font-size: 21px;'
}],
// bar1: true,
// bar2: true,
// default: false, 是否显示默认的 bar 列表 -- v2.8.0 新增
// bgcolor: '#393D52', // bar 的默认背景色
// css: {right: 100, bottom: 100},
// target: '#target-test', // 插入 fixbar 节点的目标元素选择器
// duration: 300, // top bar 等动画时长(毫秒)
on: { // 任意事件 -- v2.8.0 新增
mouseenter: function(type){
layer.tips(type, this, {
tips: 4,
fixed: true
});
},
mouseleave: function(type){
layer.closeAll('tips');
}
},
// 点击事件
click: function(type){
console.log(this, type);
// layer.msg(type);
}
});
//倒计时
var endTime = new Date(2099,1,1).getTime() //假设为结束日期
,serverTime = new Date().getTime(); //假设为当前服务器时间,这里采用的是本地时间,实际使用一般是取服务端的
util.countdown(endTime, serverTime, function(date, serverTime, timer){
var str = date[0] + '天' + date[1] + '时' + date[2] + '分' + date[3] + '秒';
$('#test').html('距离2099年1月1日还有'+ str);
});
//某个时间在当前时间的多久前
var str = util.timeAgo(new Date(2017,7,15,2,58,0));
$('#test1').html('示例写于:'+ str);
//处理属性 为 lay-active 的所有元素事件
util.event('lay-active', {
e1: function(othis){
alert(othis.html())
}
,e2: function(othis){
alert(othis.html())
}
,e3: function(othis){
alert(othis.html())
}
});
//测试是否重复绑定
util.event('lay-active', {
e1: function(othis){
alert(othis.html() + '新事件')
}
});
//测试绑定新事件
util.event('lay-active2', {
e4: function(othis){
alert(othis.html())
}
});
// 转换日期格式
var timer = null
var toDateString = function (format) {
var dateString = util.toDateString(new Date(), format);
$('#test3').html(dateString)
}
timer = setInterval(() => {
toDateString($('#test2').val())
}, 50)
});
</script>
</body>
</html>