• Layui快速入门之第三节栅格布局


    目录

    一:栅格布局的基本概念

    二:栅格布局规则

    三:始终等比例水平排列案例

    四:响应式规则

    五:移动设备、桌面端的组合响应式展现案例

    六:移动设备、平板、桌面端的复杂组合响应式展现案例

    七:响应式公共类

    八:列间距

    九:列偏移

    十:案例演示

    1.列间隔

    2.列偏移

    3.常规布局:从小屏幕堆叠到桌面水平排列

    4.栅格嵌套

    5.流体容器(宽度自适应,不固定)

    十一:IE8/9 兼容方案


    一:栅格布局的基本概念

                Layui 栅格系统是一套具备响应式能力的布局方案,采用业界比较常用的容器横向 12 等分规则,预设了 5*12 种 CSS 排列类,内置多种大小尺寸的多终端适配,能很好地实现响应式局,这意味着一套系统,能同时适配于电脑的不同大小屏幕和手机、平板等移动屏幕,使得网页布局变得更加灵活,同时也极大地降低了 HTML/CSS 代码的耦合。

    二:栅格布局规则

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

    三:始终等比例水平排列案例

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>布局容器title>
    6. <link href="//unpkg.com/layui@2.8.0/dist/css/layui.css" rel="stylesheet">
    7. <script src="//unpkg.com/layui@2.8.0/dist/layui.js">script>
    8. head>
    9. <body>
    10. <div class="layui-container">
    11. <div class="layui-row" >
    12. <div class="layui-col-md5" style="background-color: yellow">
    13. 内容5/12
    14. div>
    15. <div class="layui-col-md7" style="background-color: #00f7de">
    16. 内容7/12
    17. div>
    18. div>
    19. <div class="layui-row" >
    20. <div class="layui-col-md5" style="background-color:rebeccapurple">
    21. 内容4/12
    22. div>
    23. <div class="layui-col-md7" style="background-color: red">
    24. 内容4/12
    25. div>
    26. div>
    27. div>
    28. body>
    29. html>

    四:响应式规则

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

    超小屏幕
    (手机<768px)
    小屏幕
    (平板≥768px)
    中等屏幕
    (桌面≥992px)
    大型屏幕
    (桌面≥1200px)
    超大屏幕
    (桌面≥1400px)
    layui-containerauto750px970px1170px1330px
    标记xssmmdlgxl 2.8+
    列对应类layui-col-xs*layui-col-sm*layui-col-md*layui-col-lg*layui-col-xl*
    总列数12
    响应行为始终按比例水平排列在当前屏幕下水平排列,如果屏幕大小低于临界值则堆叠排列

    五:移动设备、桌面端的组合响应式展现案例

    1. <div class="layui-row">
    2. <div class="layui-col-xs12 layui-col-md8">
    3. <div class="grid-demo grid-demo-bg1">xs:12/12 | md:8/12div>
    4. div>
    5. <div class="layui-col-xs6 layui-col-md4">
    6. <div class="grid-demo">xs:6/12 | md:4/12div>
    7. div>
    8. <div class="layui-col-xs6 layui-col-md12">
    9. <div class="grid-demo grid-demo-bg2">xs:6/12 | md:12/12div>
    10. div>
    11. div>

    测试效果:

    六:移动设备、平板、桌面端的复杂组合响应式展现案例

    1. <div class="layui-row">
    2. <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
    3. <div class="grid-demo grid-demo-bg1">xs:6/12 | sm:6/12 | md:4/12div>
    4. div>
    5. <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
    6. <div class="grid-demo layui-bg-red">xs:6/12 | sm:6/12 | md:4/12div>
    7. div>
    8. <div class="layui-col-xs4 layui-col-sm12 layui-col-md4">
    9. <div class="grid-demo layui-bg-blue">xs:4/12 | sm:12/12 | md:4/12div>
    10. div>
    11. <div class="layui-col-xs4 layui-col-sm7 layui-col-md8">
    12. <div class="grid-demo layui-bg-green">xs:4/12 | sm:7/12 | md:8/12div>
    13. div>
    14. <div class="layui-col-xs4 layui-col-sm5 layui-col-md4">
    15. <div class="grid-demo layui-bg-black">xs:4/12 | sm:5/12 | md:4/12div>
    16. div>
    17. div>

    测试效果:

    七:响应式公共类

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

    八:列间距

                 通过“列间距”的预设类,来设定列之间的间距。且一行中最左的列不会出现左边距,最右的列不会出现右边距。列间距在保证排版美观的同时,还可以进一步保证分列的宽度精细程度。我们结合网页常用的边距,预设了 12 种不同尺寸的边距,分别是:

    1. layui-col-space1
    2. layui-col-space2
    3. layui-col-space4
    4. layui-col-space5
    5. layui-col-space6
    6. layui-col-space8
    7. layui-col-space10
    8. layui-col-space12
    9. layui-col-space14
    10. layui-col-space15
    11. layui-col-space16
    12. layui-col-space18
    13. layui-col-space20
    14. layui-col-space22
    15. layui-col-space24
    16. layui-col-space25
    17. layui-col-space26
    18. layui-col-space28
    19. layui-col-space30
    20. layui-col-space32
    21. <p>即:支持列之间为 1px-32px 区间的所有双数间隔,以及 1px、5px、15px、25px 的单数间隔p>

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

    1. <div class="layui-row layui-col-space16">
    2. <div class="layui-col-md4">
    3. 1/3
    4. div>
    5. <div class="layui-col-md4">
    6. 1/3
    7. div>
    8. <div class="layui-col-md4">
    9. 1/3
    10. div>
    11. div>

    九:列偏移

                     对列追加类似 layui-col-md-offset* 的预设类,从而让列向右偏移。如:layui-col-md-offset3,即代表在“中型桌面屏幕”下,让该列向右偏移 3 个列宽度。下面是一个采用「列偏移」机制让两个列左右对齐的实例

    1. div class="layui-row">
    2. <div class="layui-col-md4">
    3. 4/12
    4. div>
    5. <div class="layui-col-md4 layui-col-md-offset4">
    6. 偏移4列,从而在最右
    7. div>
    8. div>

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

    十:案例演示

    1.列间隔
    1. <div class="layui-row layui-col-space1">
    2. <div class="layui-col-md3">
    3. <div class="grid-demo grid-demo-bg1">1/4div>
    4. div>
    5. <div class="layui-col-md3">
    6. <div class="grid-demo">1/4div>
    7. div>
    8. <div class="layui-col-md3">
    9. <div class="grid-demo grid-demo-bg1">1/4div>
    10. div>
    11. <div class="layui-col-md3">
    12. <div class="grid-demo">1/4div>
    13. div>
    14. div>
    15. <div class="layui-row layui-col-space5">
    16. <div class="layui-col-md4">
    17. <div class="grid-demo grid-demo-bg1">1/3div>
    18. div>
    19. <div class="layui-col-md4">
    20. <div class="grid-demo">1/3div>
    21. div>
    22. <div class="layui-col-md4">
    23. <div class="grid-demo grid-demo-bg1">1/3div>
    24. div>
    25. div>
    26. <div class="layui-row layui-col-space10">
    27. <div class="layui-col-md9">
    28. <div class="grid-demo grid-demo-bg1">9/12div>
    29. div>
    30. <div class="layui-col-md3">
    31. <div class="grid-demo">3/12div>
    32. div>
    33. div>
    34. <div class="layui-row layui-col-space15">
    35. <div class="layui-col-md7">
    36. <div class="grid-demo grid-demo-bg1">7/12div>
    37. div>
    38. <div class="layui-col-md5">
    39. <div class="grid-demo">5/12div>
    40. div>
    41. div>
    42. <div class="layui-row layui-col-space30">
    43. <div class="layui-col-md7">
    44. <div class="grid-demo grid-demo-bg1">7/12div>
    45. div>
    46. <div class="layui-col-md5">
    47. <div class="grid-demo">5/12div>
    48. div>
    49. div>

    效果:

    2.列偏移
    1. <div class="layui-row">
    2. <div class="layui-col-md4">
    3. <div class="grid-demo grid-demo-bg1">4/12div>
    4. div>
    5. <div class="layui-col-md4 layui-col-md-offset4">
    6. <div class="grid-demo">偏移4列div>
    7. div>
    8. div>
    9. <div class="layui-row">
    10. <div class="layui-col-md3 layui-col-md-offset3">
    11. <div class="grid-demo grid-demo-bg1">偏移3列div>
    12. div>
    13. <div class="layui-col-md3">
    14. <div class="grid-demo">不便宜div>
    15. div>
    16. div>

    效果:

    3.常规布局:从小屏幕堆叠到桌面水平排列
    1. <div class="layui-row">
    2. <div class="layui-col-md1">
    3. <div class="grid-demo grid-demo-bg1">1/12div>
    4. div>
    5. <div class="layui-col-md1">
    6. <div class="grid-demo">1/12div>
    7. div>
    8. <div class="layui-col-md1">
    9. <div class="grid-demo grid-demo-bg1">1/12div>
    10. div>
    11. <div class="layui-col-md1">
    12. <div class="grid-demo">1/12div>
    13. div>
    14. <div class="layui-col-md1">
    15. <div class="grid-demo grid-demo-bg1">1/12div>
    16. div>
    17. <div class="layui-col-md1">
    18. <div class="grid-demo">1/12div>
    19. div>
    20. <div class="layui-col-md1">
    21. <div class="grid-demo grid-demo-bg1">1/12div>
    22. div>
    23. <div class="layui-col-md1">
    24. <div class="grid-demo">1/12div>
    25. div>
    26. <div class="layui-col-md1">
    27. <div class="grid-demo grid-demo-bg1">1/12div>
    28. div>
    29. <div class="layui-col-md1">
    30. <div class="grid-demo">1/12div>
    31. div>
    32. <div class="layui-col-md1">
    33. <div class="grid-demo grid-demo-bg1">1/12div>
    34. div>
    35. <div class="layui-col-md1">
    36. <div class="grid-demo">1/12div>
    37. div>
    38. div>
    39. <div class="layui-row">
    40. <div class="layui-col-md9">
    41. <div class="grid-demo grid-demo-bg1">75%div>
    42. div>
    43. <div class="layui-col-md3">
    44. <div class="grid-demo">25%div>
    45. div>
    46. div>
    47. <div class="layui-row">
    48. <div class="layui-col-md4">
    49. <div class="grid-demo grid-demo-bg1">33.33%div>
    50. div>
    51. <div class="layui-col-md4">
    52. <div class="grid-demo">33.33%div>
    53. div>
    54. <div class="layui-col-md4">
    55. <div class="grid-demo grid-demo-bg1">33.33%div>
    56. div>
    57. div>
    58. <div class="layui-row">
    59. <div class="layui-col-md6">
    60. <div class="grid-demo grid-demo-bg1">50%div>
    61. div>
    62. <div class="layui-col-md6">
    63. <div class="grid-demo">50%div>
    64. div>
    65. div>

    效果:

    4.栅格嵌套

    理论上,你可以对栅格进行无穷层次的嵌套,这更加增强了栅格的表现能力

    1. <div class="layui-row">
    2. <div class="layui-col-md5">
    3. <div class="layui-row grid-demo">
    4. <div class="layui-col-md3">
    5. <div class="grid-demo grid-demo-bg1">内部列div>
    6. div>
    7. <div class="layui-col-md9">
    8. <div class="grid-demo grid-demo-bg2">内部列div>
    9. div>
    10. <div class="layui-col-md12">
    11. <div class="grid-demo grid-demo-bg3">内部列div>
    12. div>
    13. div>
    14. div>
    15. <div class="layui-col-md7">
    16. <div class="layui-row grid-demo grid-demo-bg1">
    17. <div class="layui-col-md12">
    18. <div class="grid-demo">内部列div>
    19. div>
    20. <div class="layui-col-md9">
    21. <div class="grid-demo grid-demo-bg2">内部列div>
    22. div>
    23. <div class="layui-col-md3">
    24. <div class="grid-demo grid-demo-bg3">内部列div>
    25. div>
    26. div>
    27. div>
    28. div>

    效果:

    5.流体容器(宽度自适应,不固定)
    1. <div class="layui-row">
    2. <div class="layui-col-sm3">
    3. <div class="grid-demo grid-demo-bg1">25%div>
    4. div>
    5. <div class="layui-col-sm3">
    6. <div class="grid-demo">25%div>
    7. div>
    8. <div class="layui-col-sm3">
    9. <div class="grid-demo grid-demo-bg1">25%div>
    10. div>
    11. <div class="layui-col-sm3">
    12. <div class="grid-demo">25%div>
    13. div>
    14. div>

    效果:

    十一:IE8/9 兼容方案

                事实上 IE8/IE9 并不支持 Media Queries,但你可以使用下面的补丁进行兼容(补丁来自于开源社区):

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

  • 相关阅读:
    企业聊天应用程序使用 Kubernetes
    电容笔可以用什么代替?好用电容笔品牌推荐
    QT实现简易闹钟功能
    Opencv项目实战:04 全景图片拼接
    昇腾迁移丨4个TensorFlow模型训练案例解读
    峰回网关数采PLC
    《程序员考公指南》:零基础到上岸的完整攻略 | 开源日报 No.82
    【无标题】
    Golang | Leetcode Golang题解之第207题课程表
    Java、斐波那契数
  • 原文地址:https://blog.csdn.net/qq_61313896/article/details/132717527