layui页面元素-layui栅格布局-CSS公共类-基础UI-书写规范介绍

阅读须知:当前文档仅针对layui系列更新:2019-01-19 18:58:51 阅读量:12076 评论跟帖:0 文档整理编辑:Larry

文档导读摘要:本章节中所描述的layui基础规范同样适用于larryms系列前端产品,larryms的iframe版则是完全遵循layui所定义的开发规范;Layui遵循于原生态的元素书写规则,以当前浏览器普通认可的方式去组织模块!恰好符合当下国内绝大多数程序员从旧时代过渡到未来新标准的最佳指引。正如layui官方所描述的,其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发,比WebPack更符合绝大多数场景,省去了前端工具的复杂配置,回归简单,安静高效地编织原生态的HTML、CSS和JavaScript。在本节我们会从CSS内置公共基础类、CSS命名规范、HTML规范:结构、公共属性、布局等方面一一详解layui的基础使用,让layui的使用更得心应手。

温馨提示: 关于Layui的使用问题可直接在 larryms社区layui专区交流,本文档系列在后续会开启用户评论交流

我们首先从layui的css命名规范讲起,在下载layui之后,打开css目录 下的layui.css文件 我们可以清晰的看出所有样式的命名均有对应的前缀”layui-",下面从css的命名规范、常用基础类公共样式、属性、布局等方面全面认识layui在ui层是怎样实现美观而又简约的界面风格。

class命名前缀:layui,连接符:-  ,如:class="layui-header"

从layui的官方文档我们知悉layui的命名分为两种:1、 layui-模块名-状态或类型,2、layui-状态或类型    因为有些类并非是某个模块所特有,他们通常会是一些公共类。如:一(定义按钮的原始风格):class="layui-btn layui-btn-primary"、二(定义内联块状元素):class="layui-inline"  对于初学者,务必记住这些简单的规则,这会让你在使用layui的时候显得更加得心应手。

备注:上述规范中 我们需要清晰的记住 layui本身的样式使用 均为“layui-”前缀开头,因此在拓展或自定义样式时 可以遵循以上规则 使用“layui-"前缀或自身产品项目所命名的统一前缀 如使用:”larry-“ "larryms-"作为前缀,同时针对自定义扩展layui模块时命名也须遵循类似规范,切勿占用Layui已经命名好的类 ,如定义一个 larryTree模块,其css书写规则可以如下方式:

.larry-tree{font-size:14px;}
.larry-tree-tools{}
.larry-tree-text{}

在了解了layui中css的基本书写命名规则后,我们再看一下layui在底层UI中为我们提供的有哪些常用基础公共类,这些类我们需要做的就是记住它,了解它的外貌并使用它,在熟练掌握之后可以扩展写出更多实用的样式与功能组件

阅读layui官方文档和layui.css文件 便可了解其公用基础类相比于bootstrap这类ui用户所需的学习成本极低,无需记住太多,只用了解其定义规范便可快速上手,在官方文档中对于某一模块所特有的并未作为公共基础类而罗列,下方是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 新增)
辅助
layui-icon 用于图标
layui-elip 用于单行文本溢出省略
layui-unselect 用于屏蔽选中
layui-disabled 用于设置元素不可点击状态
layui-circle 用于设置元素为圆形
layui-show 用于显示块状元素
layui-hide 用于隐藏元素
文本
layui-text 定义一段文本区域(如文章),该区域内的特殊标签(如a、li、em等)将会进行相应处理
layui-word-aux 灰色标注性文字,左右会有间隔
背景色
layui-bg-red 用于设置元素赤色背景
layui-bg-orange 用于设置元素橙色背景
layui-bg-green 用于设置元素墨绿色背景(主色调)
layui-bg-cyan 用于设置元素藏青色背景
layui-bg-blue 用于设置元素蓝色背景
layui-bg-black 用于设置元素经典黑色背景
layui-bg-gray 用于设置元素经典灰色背景

对于模块或扩展样式于javascript更深入的内容 可在larryms文档中查看,本文档仅作为上手基础文档

在项目或页面中引入layui.js和layui.css文件之后,我们需要对layui中所定义的HTML结构、属性和规范有所了解,layui引入到页面中很多时候,元素的基本交互行为,都是由模块自动开启。但不同的区域可能需要触发不同的动作,这就需要你设定我们所支持的自定义属性来作为区分。如下面的 lay-submit、lay-filter即为公共属性(即以 lay- 作为前缀的自定义属性):

<button class="layui-btn" lay-submit lay-filter="login">登录</button>

当前layui中所定义的 公共属性如下所示(即普遍运用于所有元素上的属性)

属性 描述
lay-skin=" " 定义相同元素的不同风格,如checkbox的开关风格
lay-filter=" " 事件过滤器。你可能会在很多地方看到他,他一般是用于监听特定的自定义事件。你可以把它看作是一个ID选择器
lay-submit 定义一个触发表单提交的button,不用填写值

layui引入页面后,针对特定的模块或样式呈现需要使用固定的HTML结构, 当Layui在解析HTML元素时,只有充分确保其结构是被支持的,才能渲染出需要的效果,下面就以Tab选项卡为例讲述 tab选项卡所需要的基本结构(当然如果你已经很熟悉layui了,可不必拘泥于固定格式 在其基础上修改扩充都是支持的)

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

 如上述代码段实现tab选项卡的切换效果,如果你改变了HTML结构,极有可能会导致Tab功能失效。所以在嵌套HTML的时候,需要事先阅读下基础文档中关于各模块已经页面元素介绍的文档内容(如果你不是拿来主义)

从layui2.0开始加入了栅格布局和后台布局方案,layui 的栅格系统采用业界比较常见的 12 等分规则,内置移动设备、平板、桌面中等和大型屏幕的多终端适配处理,最低能支持到ie8。layui对容器进行了 12 等分,预设了 4*12 种 CSS 排列类,它们在移动设备、平板、桌面中/大尺寸四种不同的屏幕下发挥着各自的作用;从本节我们将详细介绍layui的页面布局以及如何利用layui快速搭建后台布局。

一、栅格布局规则:


1. 采用 layui-row 来定义行,如:<div class="layui-row"></div>
2. 采用类似 layui-col-md* 这样的预设类来定义一组列(column),且放在行(row)内。其中:
  • 变量md 代表的是不同屏幕下的标记(可选值见下文)
  • 变量* 代表的是该列所占用的12等分数(如6/12),可选值为 1 - 12
  • 如果多个列的“等分数值”总和等于12,则刚好满行排列。如果大于12,多余的列将自动另起一行。
3. 列可以同时出现最多四种不同的组合,分别是:xs(超小屏幕,如手机)、sm(小屏幕,如平板)、md(桌面中等屏幕)、lg(桌面大型屏幕),以呈现更加动态灵活的布局。
4. 可对列追加类似 layui-col-space5layui-col-md-offset3 这样的预设类来定义列的间距和偏移。
5. 最后,在列(column)元素中放入你自己的任意元素填充内容,完成布局!

栅格简单示例:(可浏览larryms中提供的示例:demo.larryms.com

你的内容 9/12
你的内容 3/12

50% | 33.33% | 33.33%
50% | 66.67% | 33.33%
33.33% | 100% | 33.33%
33.33% | 50% | 66.67%
33.33% | 50% | 33.33%

<div class="layui-container">  
常规布局(以中型屏幕桌面为例):
<div class="layui-row">
<div class="layui-col-md9">
你的内容 9/12
</div>
<div class="layui-col-md3">
你的内容 3/12
</div>
</div>

移动设备、平板、桌面端的不同表现:
<div class="layui-row">
<div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
移动:6/12 | 平板:6/12 | 桌面:4/12
</div>
<div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
移动:6/12 | 平板:6/12 | 桌面:4/12
</div>
<div class="layui-col-xs4 layui-col-sm12 layui-col-md4">
移动:4/12 | 平板:12/12 | 桌面:4/12
</div>
<div class="layui-col-xs4 layui-col-sm7 layui-col-md8">
移动:4/12 | 平板:7/12 | 桌面:8/12
</div>
<div class="layui-col-xs4 layui-col-sm5 layui-col-md4">
移动:4/12 | 平板:5/12 | 桌面:4/12
</div>
</div>
</div>

二、响应式规则:


栅格的响应式能力,得益于CSS3媒体查询(Media Queries)的强力支持,从而针对四类不同尺寸的屏幕,进行相应的适配处理

超小屏幕
(手机<768px)
小屏幕
(平板≥768px)
中等屏幕
(桌面≥992px)
大型屏幕
(桌面≥1200px)
.layui-container的值 auto 750px 970px 1170px
标记 xs sm md lg
列对应类
* 为1-12的等分数值
layui-col-xs* layui-col-sm* layui-col-md* layui-col-lg*
总列数 12
响应行为 始终按设定的比例水平排列 在当前屏幕下水平排列,如果屏幕大小低于临界值则堆叠排列

三、响应式公共类:


类名(class) 说明
layui-show-*-block 定义不同设备下的 display: block; * 可选值有:xs、sm、md、lg
layui-show-*-inline 定义不同设备下的 display: inline; * 可选值同上
layui-show-*-inline-block 定义不同设备下的 display: inline-block; * 可选值同上
layui-hide-* 定义不同设备下的隐藏类,即: display: none; * 可选值同上

四、布局容器:


将栅格放入一个带有 class="layui-container" 的特定的容器中,以便在小屏幕以上的设备中固定宽度,让列可控。

<div class="layui-container">
<div class="layui-row">
……
</div>
</div>

当然,你还可以不固定容器宽度。将栅格或其它元素放入一个带有  的容器中,那么宽度将不会固定,而是 100% 适应 

<div class="layui-fluid">
……
</div>

五、列间距:


通过“列间距”的预设类,来设定列之间的间距。且一行中最左的列不会出现左边距,最右的列不会出现右边距。列间距在保证排版美观的同时,还可以进一步保证分列的宽度精细程度。我们结合网页常用的边距,预设了 12 种不同尺寸的边距,分别是:
layui-col-space1 列之间间隔 1px
layui-col-space3 列之间间隔 3px
layui-col-space5 列之间间隔 5px
layui-col-space8 列之间间隔 8px
layui-col-space10 列之间间隔 10px
layui-col-space12 列之间间隔 12px
layui-col-space15 列之间间隔 15px
layui-col-space18 列之间间隔 18px
layui-col-space20 列之间间隔 20px
layui-col-space22 列之间间隔 22px
layui-col-space28 列之间间隔 28px
layui-col-space30 列之间间隔 30px

下面是一个简单的例子,列间距为10px:

1/3
1/3
1/3
<div class="layui-row layui-col-space10">
<div class="layui-col-md4">
1/3
</div>
<div class="layui-col-md4">
1/3
</div>
<div class="layui-col-md4">
1/3
</div>
</div>

如果需要的间距高于30px(一般不常见),请采用偏移,下文继续讲解 


六、列偏移:


对列追加 类似 layui-col-md-offset* 的预设类,从而让列向右偏移。其中 * 号代表的是偏移占据的列数,可选中为 1 - 12。
如:layui-col-md-offset3,即代表在“中型桌面屏幕”下,让该列向右偏移3个列宽度

下面是一个采用“列偏移”机制让两个列左右对齐的实例

4/12
偏移4列,从而在最右
<div class="layui-row">
<div class="layui-col-md4">
4/12
</div>
<div class="layui-col-md4 layui-col-md-offset4">
偏移4列,从而在最右
</div>
</div>

请注意,列偏移可针对不同屏幕的标准进行设定,比如上述的例子,只会在桌面屏幕下有效,当低于桌面屏幕的规定的临界值,就会堆叠排列。 


七、栅格嵌套:


理论上,你可以对栅格进行无穷层次的嵌套,这更加增强了栅格的表现能力。而嵌套的使用非常简单。在列元素(layui-col-md*)中插入一个行元素(layui-row),即可完成嵌套。下面是一个简单的例子:

内部列
内部列
内部列
内部列
内部列
内部列
<div class="layui-row layui-col-space5">
<div class="layui-col-md5">
<div class="layui-row grid-demo">
<div class="layui-col-md3">
内部列
</div>
<div class="layui-col-md9">
内部列
</div>
<div class="layui-col-md12">
内部列
</div>
</div>
</div>
<div class="layui-col-md7">
<div class="layui-row grid-demo grid-demo-bg1">
<div class="layui-col-md12">
内部列
</div>
<div class="layui-col-md9">
内部列
</div>
<div class="layui-col-md3">
内部列
</div>
</div>
</div>
</div>

八、让IE8/9兼容栅格:


事实上IE8和IE9并不支持媒体查询(Media Queries),但你可以使用下面的补丁完美兼容!该补丁来自于开源社区:

<!-- 让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]-->

将上述代码放入你页面  标签内的任意位置 

后台布局

layui 之所以赢得如此多人的青睐,更多是在于它前后台系统通吃的能力。既可编织出绚丽的前台页面,又可满足繁杂的后台功能需求。layui 致力于让每一位开发者都能轻松搭建自己的后台。下面提供的是一个使用layui快速搭建后台的示例:

获取LarryMS框架商业授权
  • 本产品商业授权后无域名和站点数量限制,但在购买商业授权之前,还请认真阅读产品列表下方的商业授权购买协议。如有其他疑问,可以联系QQ 313492783

授权说明:LarryMS 受国家计算机软件著作权保护(登记号:2018SR482666),不得恶意分享产品源代码、二次转售等,不得将本产品源码用于所谓开源产品之上,违者必究。【larryms.com拥有最终解释权】

LarryMS标准版

当前版本

  • 始终基于最新版Layui开发的LarryMS框架

  • 拥有稳定核心框架(iframe版)简单实用

  • 灵活的自定义主题配置,多种需求都可满足

  • 面向全屏幕多终端尺寸的响应式适配能力

  • 丰富的组件与自定义扩展接口支持,让开发起飞

  • 拥有如权限管理系列、菜单管理、后台通用模板

  • 紧贴业务特性,涵盖常用组件与基础功能封装

  • 专属的开发者文档与会员专区,助你快速掌握

  • 不限制域名和应用项目的数量且持续更新!

  • 获得社区VIP标识(篇幅限制,详情点击下方查看)

LarryMS专业版

当前版本

  • 拥有标准版所具有的全部特性,支持vue组件的融合

  • 扩展组件更丰富,拥有完整的CMS模板系列

  • 拥有2套不同风格的后台布局,大量的场景应用模板

  • 炫酷的css3动画库与富文本编辑,让页面更带感

  • 100+后台模板,50+网站前台模板,60+第三方组件库

  • 紧贴业务特性,涵盖常用组件与基础功能封装

  • 专属的开发者文档与会员专区,助你快速掌握

  • 不限制域名和应用项目的数量且持续更新!

  • 获得社区VIP标识(篇幅限制,详情点击下方查看)

LarryMS旗舰版

当前版本

hot
  • 包含所有模板如:CMS系统、CRM系统、OA系统、微信公众、网站前台模板等模板内容

  • 拥有多套不同风格的iframe版与单页版模板

  • H5应用场景拖拽布局丰富的前后端模板

  • LarryMS旗舰版可附赠 LarryCMS标准版系统

  • 适合企业级开发应用和外包团队以及个人开发者

  • 所有版本均是持续更新,可开具发票,LarryMS框架不仅仅局限于后台模板系列,是一款致力于web开发的纯前端解决方案,以社区VIP开发者的需求共性为导向,紧贴业务需求,为用户企业缩短开发周期,提高工作效率,降低开发成本,并提供专属的VIP文档与场景规范示例

LarryMS及LarryCMS系列产品商业授权相关说明:(见下方)【授权特惠:LarryMS2.09版本发布前全部提供永久授权(随着产品完善的程度价格会有所调整)


上述demo快速搭建后台界面布局代码如下所示:

<!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 class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo">layui 后台布局</div>
<!-- 头部区域(可配合layui已有的水平导航) -->
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item"><a href="javascript:;">控制台</a></li>
<li class="layui-nav-item"><a href="javascript:;">商品管理</a></li>
<li class="layui-nav-item"><a href="javascript:;">用户</a></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="javascript:;">授权管理</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item">
<a href="javascript:;">
<img src="/images/larry.jpg" class="layui-nav-img">
larry
</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">基本资料</a></dd>
<dd><a href="javascript:;">安全设置</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="javascript:;">退了</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:;">所有商品</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="javascript:;">云市场</a></li>
<li class="layui-nav-item"><a href="javascript:;">发布商品</a></li>
</ul>
</div>
</div>
<div class="layui-body">
<!-- 内容主体区域 -->
<div style="padding: 15px;">内容主体区域</div>
</div>
<div class="layui-footer">
<!-- 底部固定区域 -->
© layui.com - 底部固定区域
</div>
</div>
<script src="../src/layui.js"></script>
<script>
//JavaScript代码区域
layui.use('element', function() {
var element = layui.element;

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