Layui-栅格系统

Posted 小刘编码员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Layui-栅格系统相关的知识,希望对你有一定的参考价值。

栅格布局

为了丰富网页布局,简化 html/CSS 代码的耦合,并提升多终端的适配能力,layui 在 2.0 的版本中引进了自己的一套具备响应式能力的栅格系统。我们将容器进行了 12 等分,预设了 4*12 种 CSS 排列类,它们在移动设备、平板、桌面中/大尺寸四种不同的屏幕下发挥着各自的作用。

一、栅格布局规则:


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-space5、 layui-col-md-offset3 这样的预设类来定义列的间距和偏移。
5.最后,在列(column)元素中放入你自己的任意元素填充内容,完成布局!

示例(这里只是大致列举两个,更多实例请前往 示例-栅格 查看)

<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的值auto750px970px1170px
标记xssmmdlg
列对应类
* 为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>      

当然,你还可以不固定容器宽度。将栅格或其它元素放入一个带有 class="layui-fluid" 的容器中,那么宽度将不会固定,而是 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),即可完成嵌套。下面是一个简单的例子:

八、让IE8/9兼容栅格:


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

<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>

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

以上是关于Layui-栅格系统的主要内容,如果未能解决你的问题,请参考以下文章

Layui栅格系统与后台框架布局

使用layui框架实战之栅格系统和菜单评分组件运用心得

layui栅格布局适配屏幕、适配ie8

layui栅格布局问题

LayUI前端框架开发视频讲解

LayUI