![Bootstrap 4 Web设计与开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/160/36862160/b_36862160.jpg)
3.2 栅格系统
栅格系统是Bootstrap框架的一大特色,通过使用栅格系统使得页面布局更简单、更合理、更美观、更易于维护。
3.2.1 默认栅格系统
1.栅格系统特性
Bootstrap框架默认的栅格系统最多为12列,形成一个960px宽的容器,默认就是响应式布局特性。栅格系统会根据可视窗口的宽度从540px到1140px进行自适应的动态调整。在可视窗口小于540px宽的情况下,列将不再固定并且会在垂直方向进行自动堆叠。以上这几条描述的就是Bootstrap栅格系统的特性。
图3.1就是Bootstrap栅格系统(12列栅格)的一个示例。
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P36_12837.jpg?sign=1739540997-tkB10Vow8ODfCHk1eT2w50qeR9uL0md4-0-034488a78233b25d3f74fb8708fb4d14)
图3.1 Bootstrap栅格系统
2.带有基本栅格的HTML代码
假设应用简单的列式布局,设计时创建一个类名为.row的容器,并在容器中加入合适数量的列(类名为.col)即可。Bootstrap默认是12列的栅格,所以.col列所跨越的栅格数之和应该是12(或者等于其父容器的栅格数)。.col的取值前面简单介绍过,比如.col-sm-4就是将手机屏幕分为3列,12除以4是3,而sm代表大手机(540px~720px屏幕之间)。.col-xl-3就是将大型桌面分为4列。
【代码3-3】一个基本的栅格布局设计(详见源代码ch03目录中ch03.gridBase.html文件)
<div class="row"> <div class="col">首页</div> <div class="col">文档</div> <div class="col">帮助</div> </div>
上面的代码展示了等宽3列的栅格布局,页面效果如图3.2所示,这是Bootstrap自动布局的效果。
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P37_12928.jpg?sign=1739540997-72hNOdMHoBmCOfcRg5ZYNjee8hba83oi-0-9edfb569aacbe732464cf8f4f48ab9f3)
图3.2 基本栅格系统
3.偏移列
Bootstrap栅格系统支持偏移列,可以使用offset-*-*类将列向右移动,相当于将列的左边距增加了指定单位的宽度。offset-*-*类中第一个星号(*)可以是sm、md、lg、xl,表示屏幕设备类型,第二个星号(*)可以是1~11的数字,比如offset-*-4就是往右移动4格。
【代码3-4】偏移列的栅格布局设计(详见源代码ch03目录中ch03.gridOffset.html文件)
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P37_20180.jpg?sign=1739540997-fTkClPCRYaX8qXNDJ4QZ2pCRwQIjnMT7-0-1ccd49cec85ecc2f5f4d18323b8c714b)
上面的代码展示了.offsetXX的栅格布局,页面效果如图3.3所示。首列偏移后,最后一列折叠到了第2行。
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P38_13021.jpg?sign=1739540997-fhsXCSSROEvxBuJZITew3dfkM3ljfWOF-0-dda3274cb2617267c7e2655370faa7b0)
图3.3 偏移列栅格系统
4.不等宽列
Bootstrap栅格系统前面都是设计的等宽列,如果有12列,前面是3格,中间是6格,是不是也可以呢?答案是可以的。
【代码3-5】不等宽的栅格布局设计(详见源代码ch03目录中ch03.gridNesting.html文件)
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P38_20181.jpg?sign=1739540997-YLTNgsnYZbGhXMAZzeDVAht7YIdyDuxA-0-25dbada18c99e368c823a2ce29a0e2be)
上面的代码展示了不等宽列的栅格布局,页面效果如图3.4所示,其中第一列宽是3格,第二列宽是6格,第三列宽是3格。
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P38_13022.jpg?sign=1739540997-7pDgSQ2iymrNlu9rT3XZ4YRSIzeO1jvr-0-a3f3338fb1bb540638e91e3c23667276)
图3.4 不等宽栅格系统
3.2.2 流式栅格系统
流式栅格系统的特点是对每一列的宽度使用百分比,这是它与固定栅格系统的主要区别。流式栅格系统与固定栅格系统一样拥有响应式布局的能力,这就保证其能对不同的分辨率和设备做出适当的调整。
1.基本的流式栅格的HTML代码
流式栅格将固定栅格的.row类替换为.row-fluid类,就能让任何一行“流动”起来,应用于每一列的类不用改变,这样能方便地在流式与固定栅格之间切换。
【代码3-6】一个基本的流式栅格布局设计(详见源代码ch03目录中ch03.fluidBase.html文件)
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P39_20182.jpg?sign=1739540997-uNQsKacV71aGUuNdujXLLPoCFKkNHNn4-0-f57924498fc5e56c9d38be3883e2c2bd)
上面的代码展示了.span1、.span2和.span4的流式栅格布局,页面效果如图3.5所示。
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P39_13111.jpg?sign=1739540997-a2pPzIV1UEy30TttR4ZgY9uF8Slfr1fe-0-879f35ec1f7fe5a298fe07372f544b6e)
图3.5 基本流式栅格系统
2.流式栅格的偏移
Bootstrap流式栅格系统同样支持偏移列,使用.offsetXX类即可,相当于将列的左边距增加了指定百分比的宽度。
【代码3-7】流式栅格布局偏移设计(详见源代码ch03目录中ch03.fluidOffset.html文件)
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P40_20183.jpg?sign=1739540997-KnK8bVGWh0wMxHabxZVJXLCHLhPGrmgD-0-950581b233b5ee532fdd6da37e222cdc)
上面的代码展示了.offsetXX的流式栅格布局,页面效果如图3.6所示。
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P40_13297.jpg?sign=1739540997-dYfBKca7XuSjQDOmhj3uWlz3Dbn9sqVz-0-2ff44b9e6719cc64e94c8d6d88ecd2e0)
图3.6 流式栅格系统偏移
3.流式栅格的嵌套
Bootstrap流式栅格系统同样支持嵌套列,在默认栅格系统里将已有的.spanXX列内添加一个新的.row-fluid并加入.spanXX列,就可实现嵌套。需要注意的是,被嵌套列中的每列列数总和要等于父级列。
【代码3-8】流式栅格布局嵌套设计(详见源代码ch03目录中ch03.fluidNesting.html文件)
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P41_20184.jpg?sign=1739540997-wHPG3FpNxxxWFT6bM23X3sZZ1vrIse5m-0-d489bf557141b35d4f370a7182d413c3)
上面的代码展示了嵌套列的流式栅格布局,页面效果如图3.7所示。
![](https://epubservercos.yuewen.com/482A23/19549639808909106/epubprivate/OEBPS/Images/Figure-P41_13420.jpg?sign=1739540997-34p2HD96jbCRJv0pNXIjGyF7jad2jxw6-0-06c5908919f8dd3eae529348261b0731)
图3.7 流式栅格系统嵌套