响应式布局栅格化系统

本文参考来自bootstrap栅格化系统实现
http://getbootstrap.com/css/#grid

Bootstrap栅格化系统

Bootstrap 的栅格化系统采用将页面布局分为12列,再根据页面宽度采用预定义类控制模块占用宽度比例的思想,实现响应式布局。此方法论下的实现可以兼容较多种比例的页面布局,命名比较规范,多列布局页面开发值得借鉴;

栅格化系统的工作规范

(1).container(.container-fluid)>.row>.column;采用容器内行(row)列(column)布局方式,.column必须包含在.row中,.row必须包含在.container中;.container可以包含多个.row,.row可以包含多个.column;


布局形式

(2)展示的内容应当放置于.column类中,并且只有.column可以作为.row的子元素;
(3)使用类似于.row .col-xs-4等预定义类,快速创建栅格化布局;
(4)栅格类适用于屏幕宽度大于或等于分界点大小的设备,并且针对小屏幕设备覆盖栅格化类,比如.col-md-*在.container-fludid宽度≥992px时生效;

媒介分类

Bootstrap将屏幕大小分为4类

/* 屏幕大小小于768px*/
@media (max-width: 767px) { ... }

/*屏幕最小宽度为768px*/
@media (min-width: 768px) { ... }

/*屏幕最小宽度为992px*/
@media (min-width: 992px) { ... }

/*屏幕最小宽度为1200px*/
@media (min-width: 1200px) { ... }

代表屏幕大小的几个缩写形式:
xs:extra small 特别窄屏幕,默认指浏览器像素宽度小于768px;
sm:small 窄屏幕,默认指浏览器像素宽度大于等于768px,通常是平板宽度;
md:middle 中等宽度屏幕,默认值指浏览器像素宽度大于等于992px,通常是桌面显示器,略缩小的情况;
lg:large 大屏幕,默认值指浏览器像素宽度大于等于1200px。

实例1:列宽比例展示展示

代码如下:

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <style type="text/css">

        .row {
            margin-bottom: 20px;
        }

        .row div {
            min-height: 50px;
            text-align: center;
            line-height: 50px;
        }

        .row1 div {
            border: 1px solid #ff0000;
        }

        .row2 div {
            border: 1px solid #00ff00;
        }

        .row3 div {
            border: 1px solid #0000ff;
        }

        .row3 div {
            border: 1px solid #ccad00;
        }

        .row4 div {
            border: 1px solid #ffaf00;
        }
    </style>

</head>
<body>
<div class="row row1">
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
    <div class="col-md-1">.col-md-1</div>
</div>
<div class="row row2">
    <div class="col-md-8">.col-md-8</div>
    <div class="col-md-4">.col-md-4</div>
</div>
<div class="row row3">
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-4">.col-md-4</div>
</div>
<div class="row row4">
    <div class="col-md-6">.col-md-6</div>
    <div class="col-md-6">.col-md-6</div>
</div>
</body>
</html>

预期结果:
.col--1样式在控制范围内会使其控制块宽度为父容器的1/12;
.col-
-8样式在控制范围内会使其控制块宽度为父容器的8/12;
.col--4样式在控制范围内会使其控制块宽度为父容器的4/12;
.col-
-6样式在控制范围内会使其控制块宽度为父容器的6/12;

实际运行结果:

col布局比例

实例1:列宽比例展示展示

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <style type="text/css">

        .row {
            margin-bottom: 20px;
        }

        .row div {
            min-height: 150px;
            text-align: center;
            line-height: 40px;
        }

        .row1 div {
            border: 1px solid #df24b1;
        }

        #doc-width-info {
            color: #ffaf00;
            font-size: 25px;
            text-align: center;
        }

    </style>

</head>
<body>
<div id="doc-width-info"></div>
<div class="container-fluid">
    <div class="row row1">
        <div class="col-sm-2 col-md-3 col-lg-1">.col-sm-2 .col-md-3 .col-lg-1 </div>
        <div class="col-sm-4 col-md-3 col-lg-2">.col-sm-4 .col-md-3 .col-lg-2 </div>
        <div class="col-sm-4 col-md-3 col-lg-8">.col-sm-4 .col-md-3 .col-lg-8 </div>
        <div class="col-sm-2 col-md-3 col-lg-1">.col-sm-2 .col-md-3 .col-lg-1 </div>
    </div>
</div>
</body>
<script>
    var divDocWith = document.getElementById("doc-width-info");
    var showDocWidth = function () {
        divDocWith.innerHTML = "文档宽度:" + document.body.scrollWidth + 'px';
    }
    window.onload = function () {
        showDocWidth();
    }
    window.onresize = function () {
        showDocWidth();
    }
</script>
</html>

预期结果:
(1)container≥1200px(lg):4列布局1:2:8:1;
(2)container≥992px && container<1200px(md):3:3:3:3
(3)container≥768px && container<991px(sm):2:4:4:2
(3)container<768px(xs):div 默认display:block

实际运行结果:

lg 1:2:8:1;
md 3:3:3:3
sm 2:4:4:2
xs 默认布局

总结

代码可copy来运行,从运行结果可看出与预期一致,bootstrap有一套比较规范的布局流,使整个页面的布局行为保持一致,前端同学在实际开发中可以借鉴;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容