layui基础学习

这篇博客介绍了layui的基础学习,包括layui的简介、引入方式,特别是模块化与非模块化的使用。文章详细讲解了CSS内置基础类,如布局、辅助、文本等,并通过实例展示了选项卡、按钮、form表单、导航栏、日期、表单和菜单的使用方法。对于每个组件,作者提供了代码示例和截图,帮助读者快速理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

layui 部分学习参考

本文是对官方文档的部分归纳整理,仅供参考

1.简介

layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。
其风格简约轻盈,而组件优雅丰盈,从源代码到使用方法的每一处细节都经过精心雕琢,非常适合网页界面的快速开发。
layui 区别于那些基于 MVVM 底层的前端框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,它更多是面向后端开发者,你无需涉足前端各种工具,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。

2.引入

layui分为两种包(模块化、非模块化)
非模块化引的是 layui.all.js ,里面包含的所有组件
模块化引的是 layui.js ,引入你所需要的

在实际开发时,如果你一上来就引了个全包会加大与服务器HTTP时的通信压力,所以我推荐大家使用 layui 时使用模块化的方式去实现 layui 的功能,按模块去熟悉 layui 。

官网代码:

<!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="./layui/css/layui.css">
</head>
<body>
 
<!-- 你的 HTML 代码 -->
<script src="./layui/layui.js"></script>
<script>
layui.use(['layer', 'form'], function(){
  var layer = layui.layer
  ,form = layui.form;
  
  layer.msg('Hello World');
});
</script> 
</body>
</html>

3.CSS内置基础类

布局 / 容器

类名(class)说明
layui-main用于设置一个宽度为 1140px 的水平居中块(无响应式)
layui-inline用于将标签设为内联块状元素
layui-box用于排除一些UI框架(如Bootstrap)强制将全部元素设为box-sizing: border-box所引发的尺寸偏差
layui-clear用于消除浮动(一般不怎么常用,因为layui几乎没用到浮动)
layui-btn-container用于定义按钮的父容器。(layui 2.2.5 新增)
layui-btn-fluid用于定义流体按钮。即宽度最大化适应。(layui 2.2.5 新增)

辅助

类名(class)说明
layui-icon用于图标
layui-elip用于单行文本溢出省略
layui-unselect用于屏蔽选中
layui-disabled用于设置元素不可点击状态
layui-circle用于设置元素为圆形
layui-show用于显示块状元素
layui-hide用于隐藏元素

文本

类名(class)说明
layui-text定义一段文本区域(如文章),该区域内的特殊标签(如a、li、em等)将会进行相应处理
layui-word-aux灰色标注性文字,左右会有间隔

背景色

类名(class)说明
layui-bg-red用于设置元素赤色背景
layui-bg-orange用于设置元素橙色背景
layui-bg-green用于设置元素墨绿色背景(主色调)
layui-bg-cyan用于设置元素藏青色背景
layui-bg-blue用于设置元素蓝色背景
layui-bg-black用于设置元素经典黑色背景
layui-bg-gray用于设置元素经典灰色背景

字体大小和颜色

layui-font-12 (12px 的字体)
layui-font-14 (14px 的字体)
layui-font-16 (16px 的字体)
layui-font-18 (18px 的字体)
layui-font-20 (20px 的字体)
layui-font-red (红色字体)
layui-font-orange (橙色字体)
layui-font-green (绿色字体)
layui-font-cyan (青色字体)
layui-font-blue (蓝色字体)
layui-font-black (黑色字体)
layui-font-gray (灰色字体)

4.简单的使用(代码+截图)

(1)选项卡

table
<div class="layui-tab">
  <ul class="layui-tab-title">
    <li class="layui-this">标题一</li>
    <li class="layui-bg-blue">标题二</li>
    <li>标题三</li>
  </ul>
  <div class="layui-tab-content">
    <div class="layui-tab-item layui-show">标题一对应的内容1</div>
    <div class="layui-tab-item">标题二对应的内容2</div>
    <div class="layui-tab-item">标题三对应的内容3</div>
  </div>
</div>

代码截图

Tab选项卡
<div class="layui-tab">
  <ul class="layui-tab-title ">
    <li class="layui-this layui-bg-blue">网站设置</li>
    <li class=" layui-bg-blue">用户管理</li>
    <li class=" layui-bg-blue">权限分配</li>
    <li class=" layui-bg-blue">商品管理</li>
    <li class=" layui-bg-blue">订单管理</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>

在这里插入图片描述
另一种模式

<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
  <ul class="layui-tab-title">
    <li class="layui-this">网站设置</li>
    <li>用户管理</li>
    <li>权限分配</li>
    <li>商品管理</li>
    <li>订单管理</li>
  </ul>
  <div class="layui-tab-content"></div>
</div>  

在这里插入图片描述
更多风格请访问Layui官网之Tab选项卡

(2)按钮

按钮颜色、大小、样式请访问官网:按钮详情

<div class="layui-btn-container">
	 <button class="layui-btn layui-btn-normal" test-active="test-form">按钮</button>
	 <button class="layui-btn layui-btn-disabled">禁止使用</button>
 </div>
 <div class="layui-btn-container">
 	 <button class="layui-btn layui-btn-normal" test-active="test-form">按钮</button>
 </div>

在这里插入图片描述

(3)form表单

<form class="layui-form" action="">
	<div class="layui-form-item">
		<label class="layui-form-label">请输入:</label>
	<div class="layui-input-inline">
		<input type="text" name="title" required lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">  
	</div>
	<div class="layui-form-mid layui-word-aux">辅助文字</div>
	</div>
	  <div class="layui-form-item">
	    <label class="layui-form-label">密码框:</label>
	    <div class="layui-input-inline">
	      <input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
	    </div>
	    <div class="layui-form-mid layui-word-aux">辅助文字</div>
	  </div>
	  <div class="layui-form-item">
		  <label class="layui-form-label">选择框:</label>
		  <div class="layui-input-inline">
			  <select name="offer" lay-verify="required">
				  <option value =""></option><!-- 占位置:显示请选择 -->
				  <option value="0" selected>JAVA(默认)</option>
				  <option value="1" disabled>C(禁用)</option>
				  <option value="2">Python</option>
				  <option value="3">C++</option>
			  </select>
		  </div>
		  <div class="layui-input-inline">
			  <select name="fenzu">
			    <option value="">请选择</option>
			    <optgroup label="语言喜好">
				   <option value="你工作的第一个城市">这是我最喜欢的语言</option>
			       <option value="你工作的第一个城市">这是我最讨厌的语言</option>
			    </optgroup>
			    <optgroup label="学习情况">
			      <option value="你的工号">我精通这门语言</option>
			      <option value="你最喜欢的老师">略懂</option>
			    </optgroup>
			  </select>
		  </div>
		  <div class="layui-input-inline"><!-- 带搜索框的选择 -->
			  <select name="city" lay-verify="" lay-search>
				  <option value ="">个人评级</option>
			    <option value="000">a</option>
			    <option value="001">b</option>
			    <option value="002">c</option>
				<option value="003" >d</option>
				<option value="004" >e</option>
				<option value="005" >d--</option>
				<option value="005" >b++</option>
				<option value="005" >c++</option>
				<option value="005" >a++</option>
			  </select>
		  </div>  
	  </div>
	  <div class="layui-form-item">
		  <label class="layui-form-label">单选框:</label>
		  <div class="layui-input-block">
			  <input type="radio" name="sex" value="" title="" checked/>
			  <input type="radio" name="sex" value="" title="" />
			  <input type="radio" name="sex" value="" title="中性" disabled>
		  </div>
	  </div>
	  <div class="layui-form-item">
	  		  <label class="layui-form-label">爱好:</label>
	  		  <div class="layui-input-block">
	  			  <input type="checkbox"  title="" />
	  			  <input type="checkbox" title="" />
	  			  <input type="checkbox" title="" checked>
	  		  </div>
	  </div>
	  <div class="layui-form-item layui-form-text">
	      <label class="layui-form-label">文本域</label>
	      <div class="layui-input-block">
	        <textarea name="desc" placeholder="请输入内容" class="layui-textarea"></textarea>
	      </div>
	  </div>
	  <div class="layui-form-item">
		  <div class="layui-input-block">
			  <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
			  <button type="reset" class="layui-btn layui-btn-primary">重置</button>
		  </div>
	  </div>
</form>

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

在这里插入图片描述

(4)导航栏

顶部导航
<ul class="layui-nav layui-bg-green" lay-filter="" >
       <li class="layui-nav-item"><a href="">最新活动</a></li>
       <li class="layui-nav-item layui-this"><a href="">产品</a></li>
       <li class="layui-nav-item"><a href="">大数据</a></li>
       <li class="layui-nav-item">
         <a href="javascript:;">解决方案</a>
         <dl class="layui-nav-child">
           <dd><a href="">移动模块</a></dd>
           <dd><a href="">后台模版</a></dd>
           <dd><a href="">电商平台</a></dd>
         </dl>
       </li>
       <li class="layui-nav-item"><a href="">社区</a></li>
   
	   <li class="layui-nav-item">
	     <a href="">控制台<span class="layui-badge">9</span></a>
	   </li>
	   <li class="layui-nav-item">
	     <a href="">个人中心<span class="layui-badge-dot"></span></a>
	   </li>
	   <li class="layui-nav-item">
	     <a href=""><img src="//t.cn/RCzsdCq" class="layui-nav-img"></a>
	     <dl class="layui-nav-child">
	       <dd><a href="javascript:;">修改信息</a></dd>
	       <dd><a href="javascript:;">安全管理</a></dd>
	       <dd><a href="javascript:;">退了</a></dd>
	     </dl>
	   </li>
     </ul>

在这里插入图片描述

<ul class="layui-nav layui-nav-tree" lay-filter="test">
<!-- 侧边导航: <ul class="layui-nav layui-nav-tree layui-nav-side"> -->
  <li class="layui-nav-item layui-nav-itemed">
    <a href="javascript:;">默认展开</a>
    <dl class="layui-nav-child">
      <dd><a href="javascript:;">选项1</a></dd>
      <dd><a href="javascript:;">选项2</a></dd>
      <dd><a href="">跳转</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item">
    <a href="javascript:;">解决方案</a>
    <dl class="layui-nav-child">
      <dd><a href="">移动模块</a></dd>
      <dd><a href="">后台模版</a></dd>
      <dd><a href="">电商平台</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="">产品</a></li>
  <li class="layui-nav-item"><a href="">大数据</a></li>
</ul>
侧边导航栏

在这里插入图片描述
必须导入element

<script>
layui.use(['layer', 'form','element'], function(){
  var layer = layui.layer
  ,form = layui.form
  ,element = layui.element;
});
</script> 

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

垂直导航需要追加class:layui-nav-tree
侧边导航需要追加class:layui-nav-tree layui-nav-side

面包屑
<span class="layui-breadcrumb" lay-separator="-"><!-- 默认分隔符为/,可以自定义 -->
  <a href="">计算机</a>
  <a href="">编程语言</a>
  <a href="">Java</a>
  <a><cite>Spring</cite></a>
</span>

在这里插入图片描述

(5)日期

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>layDate快速使用</title>
  <link rel="stylesheet" href="./layui/css/layui.css" media="all">
</head>
<body>
<div class="layui-inline"> <!-- 注意:这一层元素并不是必须的 -->
  <input type="text" class="layui-input" id="test1">
</div>
<script src="./layui/layui.js"></script>
<script>
layui.use('laydate', function(){
  var laydate = layui.laydate;
  
  //执行一个laydate实例
  laydate.render({
    elem: '#test1' //指定元素
  });
});
</script>
</body>
</html>

在这里插入图片描述

(6)表单

<table class="layui-table">
  <colgroup>
    <col width="150">
    <col width="200">
    <col>
  </colgroup>
  <thead>
    <tr>
      <th>语言</th>
      <th>学习时间</th>
      <th>学习情况</th>
    </tr> 
  </thead>
  <tbody>
    <tr>
      <td>Java</td>
      <td>2021-4-6</td>
      <td>略懂</td>
    </tr>
    <tr>
      <td>C</td>
      <td>2021-4-6</td>
      <td>略懂</td>
    </tr>
	<tr>
	  <td>C++</td>
	  <td>2021-4-6</td>
	  <td>略懂</td>
	</tr>
  </tbody>
</table>

在这里插入图片描述
在这里插入图片描述

(7)菜单

<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'}">
      <div class="layui-menu-body-title">
        menu item 3 group <i class="layui-icon layui-icon-up"></i>
      </div>
      <ul>
        <li lay-options="{id: 1031}">menu item 3-1</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 lay-options="{id: 104}">
      <div class="layui-menu-body-title">menu item 4</div>
    </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>

在这里插入图片描述

可以看到,它实则是一个 ul li 的层级嵌套,当需要出现「菜单组」和「子级菜单」时,只需要添加相对应的 class 类名即可。

菜单类型
类型html说明
常规菜单项< li>< /li >无需添加特定 class
可收缩菜单组< li class=“layui-menu-item-group layui-menu-item-down” lay-options="{type: ‘group’}">< /li>其中layui-menu-item-down为初始展开;layui-menu-item-up为初始收缩。
横向父子菜单< li class=“layui-menu-item-parent” lay-options="{type: ‘parent’}">< /li>其子级菜单的结构参照上文的「菜单结构」,主要是需包含一层面板元素。
分割线< li class=“layui-menu-item-divider”>< /li>一条横线,用于更好地划分菜单区域

其子级菜单遵循的列表类型也是一样的。需要注意的是,「可收缩菜单组」的子菜单仅需要再嵌套一层 ul 即可;而「横向父子菜单」还需要套一层 div class=“layui-panel layui-menu-body-panel”,以便让子菜单层次更加分明。

菜单项函数

lay-options="{}"这个属性就是我们所说的菜单项参数。当点击菜单列表时,回调中将会返回该属性所配置的全部参数,其中type参数是组件内部约定的,其它参数可以随意命名。

<li lay-options="{
  id: 100
  ,title: 'menu item 1'
  ,type: '' //支持的类型有:group、parent,具体用法参见上文
  ,aaa: '任意参数'
}">内容</li>      
事件触发

<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>
  </ul>
</div>
layui.use('dropdown', function(){
  var dropdown = layui.dropdown;
  
  //菜单点击事件,其中 docDemoMenu1 对应的是菜单结构上的 id 指
  dropdown.on('click(docDemoMenu1)', function(options){
    var othis = $(this); //当前菜单列表的 DOM 对象
    console.log(options); //菜单列表的 lay-options 中的参数
  });
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值