Bootstrap—栅格系统

转载:https://mp.weixin.qq.com/s/wfu3sT0hG0JIP0NaB1aTaw

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

栅格系统也叫网格系统,其实质就是布局

通过一系列的行(row)列(column)的组合创建页面布局,把网页内容放到设置的布局文件中,实现网页布局的目的。

栅格系统每行最多可容纳12列。

也就是说,如果<html>里一个.row内包含的列大于12个将会自动排版。

使用栅格系统时,在<head>部分导入CSS文件即可。

<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width0,initial-scale=1">
    <title>Document</title>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
 

要进行栅格系统操作,首先就要创建栅格系统的容器。

<div class="container">
        <div class="row">
            ......

        </div>
</div>
 

“container”和“row”共同组成栅格容器,“row”代表的就是一行

创建栅格容器后,设置名为col-md-的div,当尾数为1时,表示每个div的宽度占1/12,所以每行最多可以放置12个子div。

如果超过12个,则会在下一行显示。

<div class="container">
        <div class="row">
            <div class="col-md-1">col-md-1</div>
            <div class="col-md-1">col-md-2</div>
            <div class="col-md-1">col-md-3</div>
            <div class="col-md-1">col-md-4</div>
            <div class="col-md-1">col-md-5</div>
            <div class="col-md-1">col-md-6</div>
            <div class="col-md-1">col-md-7</div>
            <div class="col-md-1">col-md-8</div>
            <div class="col-md-1">col-md-9</div>
            <div class="col-md-1">col-md-10</div>
            <div class="col-md-1">col-md-11</div>
            <div class="col-md-1">col-md-12</div>
            <div class="col-md-1">col-md-13</div>
        </div>
</div>
 

为了方便和比较,还要给栅格加上边框、背景等属性,完整的代码如下:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width0,initial-scale=1">
    <title>Document</title>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <style>
        .row {
            margin-bottom:20px;
        }
        [class*="col-"] {
            padding-top:15px;
            padding-bottom:15px;
            background-color:#eee;
            background-color:rgba(86,61,124,.15);
            border:1px solid #ddd;
            border:1px solid rgba(86,61,124,.2);
        }
</style>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-1">col-md-1</div>
            <div class="col-md-1">col-md-2</div>
            <div class="col-md-1">col-md-3</div>
            <div class="col-md-1">col-md-4</div>
            <div class="col-md-1">col-md-5</div>
            <div class="col-md-1">col-md-6</div>
            <div class="col-md-1">col-md-7</div>
            <div class="col-md-1">col-md-8</div>
            <div class="col-md-1">col-md-9</div>
            <div class="col-md-1">col-md-10</div>
            <div class="col-md-1">col-md-11</div>
            <div class="col-md-1">col-md-12</div>
            <div class="col-md-1">col-md-13</div>
        </div>
    </div>
</body>
</html>

[class*="col-"]
表示名为col-的类都可以匹配到。

运行代码,网页效果如下:

图片

这里的col-md是适应中等屏幕的,如果屏幕是大屏幕,使用col-md就不恰当了。

按照屏幕尺寸大小,Bootstrap栅格系统分别给出了相应的参数:

参数

含义

.col-xs-

超小屏幕,如手机(<768px)

.col-sm-

小屏幕,如平板(≥768px)

.col-md-

中等屏幕,如桌面显示器(≥992px)

.col-lg-

大屏幕,如大桌面显示器(≥1200px)

继续增加下面的代码,将一行显示为3列。

<body>
    <div class="container">
        <div class="row">
            <div class="col-md-4">col-md-1</div>
            <div class="col-md-4">col-md-2</div>
            <div class="col-md-4">col-md-3</div>
            <div class="col-md-4">col-md-4</div>
        </div>
    </div>
</body>
这里的class为col-md-4表示占整个宽度的4/12,即每个div占1/3宽度。

运行代码后效果图如下:

图片

在上面第一个class为col-md-4的div中修改内容:

<body>
    <div class="container">
        <div class="row">
            <div class="col-md-4">
                梦后楼台高锁,酒醒帘幕低垂。</br>去年春恨却来时。</br>落花人独立,微雨燕双飞。</br>记得小苹初见,两重心字罗衣。</br>琵琶弦上说相思。</br>当时明月在,曾照彩云归。</br>
            </div>
            <div class="col-md-4">col-md-2</div>
            <div class="col-md-4">col-md-3</div>
            <div class="col-md-4">col-md-4</div>
        </div>
    </div>
</body>

上面的代码修改了文字信息,</br>表示换行。

运行效果图如下:

图片

可以看到,如果栅格中的一列内容显示过多,那么该列会被拉高,被占用的列会自动向下排版,实现自适应显示。

如果我们想对某个div位置进行移动,可以使用offset属性,代码如下:

<body>
    <div class="container">
        <div class="row">
            <div class="col-md-4 col-md-offset-2">col-md-1</div>
            <div class="col-md-4">col-md-2</div>
            <div class="col-md-4">col-md-3</div>
        </div>
    </div>
</body>
 

col-md-offset-*表示由原来的位置向右移动,数字表示移动几个单位。

图片

接下来介绍一下Boostrap栅格系统的列排序实例。

通过使用col-md-push-*col-md-pull-*类可以很容易地改变列顺序:

<body>
    <div class="container">
        <h4>原来的顺序</h4>
        <div class="row">
            <div class="col-md-8">col-md-1</div>
            <div class="col-md-4">col-md-2</div>
        </div>
        <h4>排序后的顺序</h4>
        <div class="row">
            <div class="col-md-8 col-md-push-4">col-md-1</div>
            <div class="col-md-4 col-md-pull-8">col-md-2</div>
        </div>
    </div>
</body>

push表示向右推,pull表示向左拉。

上面的代码中,push-4表示向右推4列,pull-8表示向左拉8列,最终实现效果是左右两边调换位置。

图片

除了排序外,Boostrap还能实现列嵌套

通过添加一个新的.row和一系列的col-md-*列到已经存在的col-md-*列中即可实现。

新的子列也将分为12份显示。

<body>
    <div class="container">
        <h4>列嵌套</h4>
        <div class="row">
            <div class="col-md-9"> Level 1: col-md-1
                <div class="row">
                    <div class="col-md-6"> Level 2: col-md-1</div>
                    <div class="col-md-6"> Level 2: col-md-2</div>
                </div>
                <div class="row">
                    <div class="col-md-3"> Level 3: col-md-1</div>
                    <div class="col-md-6"> Level 3: col-md-2</div>
                </div>
            </div>
        </div>
    </div>
</body>

上面的代码中,首先定义了一个row,然后在此行中添加9列,再在这个占有9列的元素里添加两个不同的row。

第一个row将此行分为2份,每份占6列,共计12列。

这12列占满父容器(9列)的宽度,也就是说12列的总宽度和父容器中9列的宽度一样。

第二个row将此行分为2份,第一份3列,第二份6列,剩余的3列不填充,如图:

图片

最终代码如下:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width0,initial-scale=1">
    <title>Document</title>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <style>
        .row {
            margin-bottom:20px;
        }
        [class*="col-"] {
            padding-top:15px;
            padding-bottom:15px;
            background-color:#eee;
            background-color:rgba(86,61,124,.15);
            border:1px solid #ddd;
            border:1px solid rgba(86,61,124,.2);
        }
</style>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-1">col-md-1</div>
            <div class="col-md-1">col-md-2</div>
            <div class="col-md-1">col-md-3</div>
            <div class="col-md-1">col-md-4</div>
            <div class="col-md-1">col-md-5</div>
            <div class="col-md-1">col-md-6</div>
            <div class="col-md-1">col-md-7</div>
            <div class="col-md-1">col-md-8</div>
            <div class="col-md-1">col-md-9</div>
            <div class="col-md-1">col-md-10</div>
            <div class="col-md-1">col-md-11</div>
            <div class="col-md-1">col-md-12</div>
            <div class="col-md-1">col-md-13</div>
        </div>
        <div class="row">
            <div class="col-md-4">col-md-1</div>
            <div class="col-md-4">col-md-2</div>
            <div class="col-md-4">col-md-3</div>
            <div class="col-md-4">col-md-4</div>
        </div>
        <div class="row">
            <div class="col-md-4">
                梦后楼台高锁,酒醒帘幕低垂。</br>去年春恨却来时。</br>落花人独立,微雨燕双飞。</br>记得小苹初见,两重心字罗衣。</br>琵琶弦上说相思。</br>当时明月在,曾照彩云归。</br>
            </div>
            <div class="col-md-4">col-md-2</div>
            <div class="col-md-4">col-md-3</div>
            <div class="col-md-4">col-md-4</div>
        </div>
        <div class="row">
            <div class="col-md-4 col-md-offset-2">col-md-1</div>
            <div class="col-md-4">col-md-2</div>
            <div class="col-md-4">col-md-3</div>
        </div>
        <h4>原来的顺序</h4>
        <div class="row">
            <div class="col-md-8">col-md-1</div>
            <div class="col-md-4">col-md-2</div>
        </div>
        <h4>排序后的顺序</h4>
        <div class="row">
            <div class="col-md-8 col-md-push-4">col-md-1</div>
            <div class="col-md-4 col-md-pull-8">col-md-2</div>
        </div>
        <h4>列嵌套</h4>
        <div class="row">
            <div class="col-md-9"> Level 1: col-md-1
                <div class="row">
                    <div class="col-md-6"> Level 2: col-md-1</div>
                    <div class="col-md-6"> Level 2: col-md-2</div>
                </div>
                <div class="row">
                    <div class="col-md-3"> Level 3: col-md-1</div>
                    <div class="col-md-6"> Level 3: col-md-2</div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
 

栅格系统的使用非常广泛,运用的好能帮我们节省很多开发时间。

图片

除了布局以外,栅格的样式也很关键,关系到界面的美观。

原文地址:https://www.cnblogs.com/testzcy/p/14490507.html