Bootstrap3基础教程 02 网格布局

Bootstrap 提供了一套响应式、移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。

网页设计中的网格布局作用:组织内容,让网站易于浏览,并降低用户端的负载。

Grid System

Bootstrap 包含了一个响应式的、移动设备优先的、不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到 12 列。它包含了用于简单的布局选项的预定义类,也包含了用于生成更多语义布局的功能强大的混合类。

移动设备优先策略:

1.基础的 CSS 是移动设备优先,媒体查询是针对于平板电脑、台式电脑。

2.随着屏幕大小的增加而添加元素。

3.优先设计更小的宽度。

Grid System 工作原理

1.行必须放置在 .container class 内,以便获得适当的对齐(alignment)和内边距(padding)。

2.使用行来创建列的水平组。

3.内容应该放置在列内,且唯有列可以是行的直接子元素。

4.预定义的网格类,比如 .row.col-xs-4,可用于快速创建网格布局。LESS 混合类可用于更多语义布局。

5.列通过内边距(padding)来创建列内容之间的间隙。该内边距是通过 .rows 上的外边距(margin)取负,表示第一列和最后一列的行偏移。

6.网格系统是通过指定您想要横跨的十二个可用的列来创建的。例如,要创建三个相等的列,则使用三个 .col-xs-4

媒体查询

媒体查询是非常别致的"有条件的 CSS 规则"。它只适用于一些基于某些规定条件的 CSS。如果满足那些条件,则应用相应的样式。

/* 超小设备(手机,小于 768px) */
/* Bootstrap 中默认情况下没有媒体查询 */

/* 小型设备(平板电脑,768px 起) */
@media (min-width: @screen-sm-min) { ... }

/* 中型设备(台式电脑,992px 起) */
@media (min-width: @screen-md-min) { ... }

/* 大型设备(大台式电脑,1200px 起) */
@media (min-width: @screen-lg-min) { ... }

有时候也会在媒体查询代码中包含 max-width,从而将 CSS 的影响限制在更小范围的屏幕大小之内。

@media (max-width: @screen-xs-max) { ... }
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }
@media (min-width: @screen-lg-min) { ... }

网格选项

.col-xs- 超小设备手机(<768px)

.col-sm- 小型设备平板电脑(≥768px)

.col-md- 中型设备台式电脑(≥992px)

.col-lg- 大型设备台式电脑(≥1200px)

代码

01 页面居中显示的容器

<!DOCTYPE html>
<html>
<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge"><!--告诉IE浏览器用最新的引擎-->
    <meta name="viewport" content="width=device-width, initial-scale=1"><!--响应式布局-->
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" /><!--bootstrap样式-->

    <title></title>

</head>
<body>

    <div class="container">
        <h1 class="page-header">主体</h1>
        <p>Use this document as a way to quickly start any new project. 
        All you get is this text and a mostly barebones HTML document.</p>
    </div>

    <script src="Script/jquery-1.8.3.js"></script><!--Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边-->
    <script src="bootstrap/js/bootstrap.min.js"></script><!--Bootstrap 的所有 JavaScript 插件-->
</body>
</html>

class:page-header,container

.page-header {
  padding-bottom: 9px;
  margin: 40px 0 20px;
  border-bottom: 1px solid #eee;
}


.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;
  }
}

02 网格类

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />

    <title></title>

</head>
<body>

    <div class="container">
        <div class="row">
            <!--
                col-lg-6 >=1200px
                col-md-8 >=992px
                col-sm-6 >=768px
                col-xs-6 <798px
            -->
            <div class="col-md-8 col-sm-6">
                <h1 class="page-header">主体</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
            </div>
            <div class="col-md-4 col-sm-6">
                <h1 class="page-header">边栏</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
            </div>
        </div>
    </div>

    <script src="Script/jquery-1.8.3.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>

03 混合使用网格类

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />

    <title></title>

</head>
<body>

    <div class="container">
        <div class="row">
            <!--
                col-lg-6 >=1200px
                col-md-8 >=992px
                col-sm-6 >=768px
                col-xs-6 <798px
            -->
            <div class="col-md-9 col-sm-8 col-xs-6 col-lg-10">
                <h1 class="page-header">主体</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
            </div>
            <div class="col-md-3 col-sm-4 col-xs-6 col-lg-2">
                <h1 class="page-header">边栏</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
            </div>
        </div>
    </div>

    <script src="Script/jquery-1.8.3.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>

04 push和pull

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />

    <title></title>

</head>
<body>

    <div class="container">
        <div class="row">
            <div class="col-md-9 col-md-push-3"><!--col-md-push-3:中等尺寸往右推3个网格-->
                <h1 class="page-header">主体</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
            </div>
            <div class="col-md-3 col-md-pull-9"><!--col-md-pull-9:中等尺寸往左拉9个网格-->
                <h1 class="page-header">边栏</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
            </div>
        </div>
    </div>

    <script src="Script/jquery-1.8.3.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>

05 嵌套的布局

class:clearfix 清除浮动 or 每行网格都放在 class:row中的div中

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />

    <title></title>

</head>
<body>

    <div class="container">
        <div class="row">
            <div class="col-md-8">
                <h1 class="page-header">主体</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
                <div class="row">
                    <div class="col-md-4">
                        <h1 class="page-header">区块1</h1>
                        <p>
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                        </p>
                    </div>
                    <div class="col-md-4">
                        <h1 class="page-header">区块2</h1>
                        <p>
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                        </p>
                    </div>
                    <div class="col-md-4">
                        <h1 class="page-header">区块3</h1>
                        <p>
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                        </p>
                    </div>
                    <div class="clearfix"></div>
                    <div class="col-md-6">
                        <h1 class="page-header">区块4</h1>
                        <p>
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                        </p>
                    </div>
                    <div class="col-md-6">
                        <h1 class="page-header">区块5</h1>
                        <p>
                            Use this document as a way to quickly start any new project.
                            All you get is this text and a mostly barebones HTML document.
                        </p>
                    </div>
                </div>
            </div>
            <div class="col-md-4">
                <h1 class="page-header">边栏</h1>
                <p>
                    Use this document as a way to quickly start any new project.
                    All you get is this text and a mostly barebones HTML document.
                </p>
            </div>
        </div>
    </div>

    <script src="Script/jquery-1.8.3.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>