积跬步,聚小流------Bootstrap学习记录(3)

响应式作为Bootstrap的一大特色,栅格系统可谓是功不可没,既然如此,那我们就来看一下栅格系统是如何帮助bootstrap实现响应式布局的呢?

1、什么是栅格系统

我们可以从Bootstrap的官网上找到比较官方的回答:Bootstrap提供了一套响应式、移动设备优先的流失栅格系统,随着屏幕或视口(viweport)的增加,系统会自动分为最多12列。它包含了易于使用的预定义类,还有强大的mixin用于生成更具语义的布局。

这种说法是比较精准而且明了的,但是还可以更通俗一点的来解释:将视口等分12列,其中的元素占据不同的列数,当视口改变时,元素所占据的列数会相应改变,当然这是我暂时的理解。

2、一个最简单的栅格示例

我先上一段我用来做示例的代码,和相应的效果展示:

<div class="container">
   <div class="row part-msg">
    	<div class="col-md-4 col-lg-2 col-sm-5">
        	  <img src="img/261877.jpg" alt="显示的图片" class=" img-responsive" />
        </div>
        <div class="col-md-4 col-lg-2 col-sm-5">
      		 <img src="img/261877.jpg" alt="显示的图片片" class=" img-responsive" />
        </div>
        <div class="col-md-4 col-lg-2 col-sm-5">
      		 <img src="img/261877.jpg" alt="显示的图片片" class=" img-responsive" />
        </div>
        <div class="col-md-4 col-lg-2 col-sm-5">
      		 <img src="img/261877.jpg" alt="显示的图片片" class=" img-responsive" />
        </div>
        <div class="col-md-4 col-lg-2  col-sm-5">
       		  <img src="img/261877.jpg" alt="显示的图片" class=" img-responsive" />
        </div>	
        <div class="col-md-4 col-lg-2 col-sm-5">
       		  <img src="img/261877.jpg" alt="显示的图片" class=" img-responsive" />
        </div>
    </div>
</div>

我电脑当前的分辨率为1600*900,这是的显示效果如下:

当我缩小浏览器大小到一定程度时,再来查看显示效果:

然后此种情况下我继续缩小浏览器视口,会发现布局会进一步的改变:

而当我进一步缩小视口的时候,图片布局也相应的发生了改变,从而显示了终结效果:

看到了这样的效果,和我最简单的描述,现在估计会有一个最大的疑惑,缩小到什么程度才会有相应的效果呢,栅格系统在这里是怎么表现的呢?

3、示例代码分析

首先,在代码的最外层有一个<div class="container"></div>,作为一个div出现,我们很容易想到,它是一个独立的模块,而它具体的表现形式呢,我们来看下相应样式表中的设置:

.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}

这里我们在container里看到了一个熟悉的代码:margin-right:auto;margin-left:auto;这不由让我想起了我们最常用的margin:0px auto;就是居中效果,而在这里同样根据屏幕大小设定的它的固定宽度,当然,我们同样要注意一点,这里是没有设置高度的,如果用来布局的话,高度的问题还需要注意协调,这个后面再说。

而我们在这个地方看到了三个用来做界限分割的视口尺寸:768px、992px、1200px。那这三个尺寸是不是与我之前的操作有相应的关系呢,答案是肯定的,就是因为它的关系。

我们来看官网在这里的解释:

我们在代码编写中也用到了相应的class属性:col-md-、col-lg-、col-sm-、col-xs-等等,而这里的md则是middle,lg代表了large,sm代表了small,xs也就代表了“更小,极小”的意思吧。这时候我们再来看上面的代码是不是非常基础,可谓是简单至极。

但是还有一个细节我们绝对是不可以忽视的,那就是<div class="row"></div>的存在,它的存在意义是什么呢?

如果出现row、column的字眼,最先想起来的是什么,对了,就是table,表格中才有行列,而这也就是我们的网格系统了,既然有了col-,那怎么能少的了row,而且列也只能在行中体现,行的下面只能是列,而相应行的相应列才是一个具体的单元格,才能写内容,而这里的row也只能被放置在container或者container-fluid之内

至于对于行和列的设定,我们可以来看下样式表里的定义:

.row {
  margin-right: -15px;
  margin-left: -15px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-right: 15px;
  padding-left: 15px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}

看到这里的.row的设置,发现了什么呢,还记得.container的设置么,padding:0px 15px;而这里的margin却是-15px啊。


就这样,最简单的栅格系统就完成了,突然感觉好高大上...




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值