![Bootstrap响应式网站开发实例教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/701/33643701/b_33643701.jpg)
3.2 栅格系统的常用方法
3.2.1 移动与调整列的位置
使用offset系列类可以将列偏移到右侧。这些类通过使用“.col-md-offset-*”选择器将所有列增加了列的左侧margin。例如,.col-md-offset-4就是将.col-md设备下的列向右移动了4个列的宽度。
offset通过margin-left实现偏移,因此会对右侧列产生影响。以.col-md设备为例,在Bootstrap 3.3的CSS源码中(bootstrap.css)可以看到如下样式集,这些样式集定义了.col-md设备下offset的样式代码。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/45_01.jpg?sign=1738888273-7Ttsex8AlWhsXIPfEWTEPdeH6gfYemRL-0-f524484cd0dc356e683bd417882192e8)
offset也会占据布局空间,因此设计列偏移时,必须把offset偏移宽度与col宽度进行合并计算,确保每个行中的列宽和偏移宽度之和等于或小于12格。
【实例3-5】 在两个行中配合col和offset设计列宽和列偏移效果,其中第1行设计为第1列宽度为3,第2列宽度为7,偏移为2;第2行设计为第1列和第2列宽度均为3,同时向右偏移3格。
为了能让元素呈现清晰,这里的添加样式代码如下。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/45_02.jpg?sign=1738888273-guqYCbVtdZTSymjoIGsvk2A7P375VsDL-0-b1d31cf668497edeaba0a1182a57cc6d)
HTML代码如下。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/45_03.jpg?sign=1738888273-T7daIY6iEVPztdtUFFwKrkJvjB5v1eks-0-541821973fc726ebbb49ccaa444a04e4)
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/46_01.jpg?sign=1738888273-mGuuX77kNs9nXADd83khN2Vs6nNkbCEB-0-95e597857ef5177eae18a61e0fc390ea)
运行【实例3-5】代码,列偏移效果如图3-10所示。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/46_02.jpg?sign=1738888273-3Kmb094hk5k2XmCcx8EWWTMKkxQ64YXF-0-aca493990b61b848b705acf0131c6192)
图3-10 列偏移效果
【实例3-6】 在一个行中配合col和offset设计列宽和列偏移效果,其中在手机小屏与平板计算机上时设计为“列宽4,列偏移2”,在PC中屏与大屏上时设计为“列宽6,列偏移6”。
为了能让元素呈现清晰,添加如下样式代码。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/46_03.jpg?sign=1738888273-IJ0UIuNBJi3MePGkBaahn5VZvfQB5edN-0-453252f1f6e32bd73370dd53aa077367)
HTML代码如下。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/46_04.jpg?sign=1738888273-gf4kDvQkx48TwlwGYiHe2FhRvuVVfr66-0-b80179c15dd5dd3647c0742cc2ee789f)
运行【实例3-6】代码,列偏移效果如图3-11所示。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/47_01.jpg?sign=1738888273-DjVHx0QSYmMLsiKVHNHbXXL7BnCHskEG-0-1907d0c75520f38e6e80cc442207bbf0)
图3-11 列偏移呈现效果
a) 手机呈现效果 b) PC中屏呈现效果
3.2.2 调整列的排序
在Bootstrap中,“col-xs”“col-sm”“col-md”“col-lg”所有的列元素都使用了“position:relative;”,列排序通过相关类push和pull实现,利用这两个系列类可以调整列的显示位置,其中push向右偏移,通过left属性定义列左侧的偏移位置;pull向左偏移,通过right属性定义列右侧的偏移位置。
push和pull排序方法实现很简单,以col-md-pull-*为例,Bootstrap 3.3的CSS源码中的样式如下。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/47_02.jpg?sign=1738888273-Fai7uCbEP9fbotYwvskHXuHtKCpgmn1I-0-8e19541bae1ef25d9482a5999f1caa18)
“col-md-push-*”与“col-md-pull-*”不同的是,“col-md-push-*”使用“left属性”控制右移的量。
【实例3-7】 在行中放置3个div,在PC中屏时分别置于左列(col-md-3)、中列(col-md-6)、右列(col-md-3);当视口缩小到平板计算机大小时,调整其位置:“左列,显示在右侧”“中列,显示在左侧”“右列,显示在中间”。
添加如下样式代码。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/47_03.jpg?sign=1738888273-kri4ttwlxMJrCPtqmDXDjaEAJyndBfwU-0-b8b6c7adc07dfeab980187ba1da422be)
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/48_01.jpg?sign=1738888273-vouY1m0YdufdelW5Jcvbj6CIDzgyX6gI-0-c9feb4b57f253ede22a418eec880b486)
HTML代码如下。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/48_02.jpg?sign=1738888273-9C4LkCQKdJTWqHGCDo5MPnC34AlotKo2-0-3ca8d4b8d58f8f1cafeb2ee837a2116b)
运行【实例3-7】代码,列顺序调整效果如图3-12所示。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/48_03.jpg?sign=1738888273-A3bTXX7ZZ3EuFhxEsU1MpoTmKWkv7fRG-0-b02740c7c99087371077478cb21f5f31)
图3-12 列顺序调整效果
a) 计算机中屏呈现效果 b) 平板呈现效果
3.2.3 列嵌套排版
在网页设计中,因为排版的需要,有时要在一个div中再加入数个div。这样将一组新的网格内容加入原来已有的网格系统中就称为嵌套。Bootstrap支持列嵌套,栅格系统中的多层布局提供了简单的实现方式。用户只需在嵌套的列内部新添加一行,在添加的行内继续使用栅格系统即可。
注意,内部所嵌套的行的宽度为100%,就是当前外部列的宽度。
【实例3-8】 实现列的嵌套排版。
添加如下样式代码。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/49_01.jpg?sign=1738888273-KTcaHAP8B3WV3eqyLer5D0yaoofwQ092-0-240cde7dadbeb028cb1aab1bc8b03c7d)
HTML代码如下。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/49_02.jpg?sign=1738888273-urguuHHhO7cF2aAjbzAtf82xzA8mLVcv-0-c446e76339a213e0f09bfccb3780ec88)
运行【实例3-8】代码,列的嵌套排版效果如图3-13所示。
![](https://epubservercos.yuewen.com/98AA1D/17977545801605706/epubprivate/OEBPS/Images/49_03.jpg?sign=1738888273-qpMd1RIPsAw1s8MMVvNh1v6BcFrnd4d4-0-d337caa1582cd6793be85f11ced37328)
图3-13 列的嵌套排版效果
a) PC中屏呈现效果 b) 平板计算机上呈现效果
【实例3-8】第2列“<div class="col-md-9">”中嵌套了一个“<div class="row">”元素,并在行内部嵌套了两个“<div class="col-xs-6">”。