BootStrap栅格布局的实现

作者: 魏永_Owen_Wei | 来源:发表于2017-08-28 16:08 被阅读230次

用过Bootstrap的人估计都会觉得它的栅格布局特别好用,那么栅格布局是如何实现的呢?我们今天来研究一下。

参照bootstrap官网(http://v3.bootcss.com/css/#grid),栅格系统有如下的特点:

“行(row)”必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding)

提问:为什么必须放在.container.container-fluid中?

我们先来看看这两个class实现了什么?参考bootstrap css代码。

.container {
    width: 1170px; //宽度值根据窗口大小变化
}

.container-fluid{
    padding-right:15px;
    padding-left:15px;
    margin-right:auto;
    margin-left:auto
}

.container设置了一个固定宽度,.container-fluid将row居中。container的作用可以理解,因为如果div设置了position属性且不为static或者设置了float那么div的宽度默认为0,实际宽度由内容的宽度决定。在这种情况下,如果使用row和col,栅格布局只会在内容的宽度内生效。

外层div默认宽度为0

设置container后,会以container的宽度栅格布局。

外层div默认宽度为0且设置container class

但是不太理解container-fluid的作用,它仅仅是将row居中显示了而已。感觉container和container-fluid不应该是或的关系。有哪位大神知道设置container-fluid的原因可以告诉我,先行谢过。


外层div默认宽度为0,设置container-fluid

栅格系统中的列是通过指定1到12的值来表示其跨越的范围。

提问:1-12列是如何实现的?

这是我之前很好奇的地方,看过CSS之后就觉得没什么神奇了。我们以四列为例,看看CSS有什么神奇的地方。
代码:

<div class="container">
    <div class="row">
        <div class="col-lg-3 text-center"><div style="background-color: #1b86d7">  1  </div></div>
        <div class="col-lg-3 text-center"><div style="background-color: #1b86d7">  2  </div></div>
        <div class="col-lg-3 text-center"><div style="background-color: #1b86d7">  3  </div></div>
        <div class="col-lg-3 text-center"><div style="background-color: #1b86d7">  4  </div></div>
    </div>
</div>

列的CSS:

@media (min-width: 1200px)
bootstrap.min.css:5
.col-lg-3 {
    width: 25%;
}

@media (min-width: 1200px)
bootstrap.min.css:5
.col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9 {
    float: left;
}

.col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9 {
    position: relative;
    min-height: 1px;
    padding-right: 15px;
    padding-left: 15px;
}

重点 1.width:25%
这就是栅格排列的魔法,一行分四列,每列的宽度就是25%。同理,一行分三列,每列就是33.3333%。分12列就是8.3333%。

重点 2. position: relative;
div是块级元素默认是要换行的,但是把position设置为relative之后,column会在父级元素内进行定位和占位。因为所有的column有着同一个父级元素row,所以column会在row内排列。

重点 3.float:left;
设置元素浮动后会生成一个块级框,浮动元素的前一个元素不会受到任何影响,后一个元素会围绕着浮动元素。所以如果要达到并排显示多个块级元素的效果,需要给每个块级元素都设置float。

Bootstrap为了达到美观的效果,还设置了padding。让列与列之间留有空间。

相关文章

  • DaoCloud前端实习生面试题

    bootstrap用过什么? bootstrap源码看过吗?栅格布局和导航栏都是怎么实现的? bootstrap的...

  • 第三谈:对齐与排列

    本节课我们来开始学习 Bootstrap 的栅格对齐和排列,以实现更加灵活的布局操作。 一.栅格对齐 对于栅格系统...

  • BootStrap栅格布局的实现

    用过Bootstrap的人估计都会觉得它的栅格布局特别好用,那么栅格布局是如何实现的呢?我们今天来研究一下。 参照...

  • Bootstrap

    Bootstrap 目录 - bootstrap 全局样式用法 - viewport的意义 - 栅格化布局用法 -...

  • Bootstrap响应式栅格布局实现方法

    栅格系统的原理 Bootstrap的栅格系统下面我们将一起来看一下常见的栅格布局的设计和bootstrap中的设计...

  • 自定义页面分栏布局

    想必大家经常都用到Grid 栅格系统来实现分栏布局,比如BootStrap这种常用的前端UI库中,分栏布局是最常见...

  • some useful links

    栅格系统Bootstrap可视化布局系统Github Desktop

  • bootstrap栅格化系统

    Bootstrap栅格化系统 Bootstrap 的栅格化系统采用将页面布局分为12列,再根据页面宽度采用预定义类...

  • Bootstrap和flex的比较,清除浮动的实现原理

    bootstrap:栅格系统(结构) 在bootstrap中采用12栅格的布局,12份随意分配,但是不能解决5等分...

  • bootstrap与less

    一、bootstrap项目架构 实现布局系统和内容1)栅格系统的设计 补充内容:列排序 col-md-push-4...

网友评论

    本文标题:BootStrap栅格布局的实现

    本文链接:https://www.haomeiwen.com/subject/kevudxtx.html