Bootstrap源码解读网格系统(3)


Posted in Javascript onDecember 22, 2016

源码解读Bootstrap网格系统

工作原理

数据行(.row)必须包含在容器(.container)中,以便为其赋予合适的对齐方式和内距(padding)。如:

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

.container的实现源码:

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

在行中可以添加列,但列数之和不能超过平分的总列数,比如12。如:

<div class="container">
 <div class="row">
 <div class="col-md-4"></div>
 <div class="col-md-8"></div>
 </div>
</div>

列的实现源码如下:

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

1、具体内容应当放置在列容器之内,而且只有列才可以作为行容器的直接子元素。
2、通过设置内距(padding)从而创建列与列之间的间距。然后通过为第一列和最后一列设置负值的外距(margin)来抵消内距(padding)的影响。

.row的实现源码:

.row {
 margin-right: -15px;
 margin-left: -15px;
}

列组合

列组合就是更改数字来合并,不过列总和数不能超12,有点类似于表格的colspan属性。实现列组合方式非常简单,只涉及两个CSS两个特性:浮动与宽度百分比。以xs为例,源码如下:

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

列偏移

例如,在列元素上添加“col-md-offset-4”,表示该列向右移动4个列的宽度。
实现原理非常简单,就是利用十二分之一的margin-left,有多少个offset,就有多少个margin-left。以xs为例,实现源码如下:

.col-xs-offset-12 {
 margin-left: 100%;
}
.col-xs-offset-11 {
 margin-left: 91.66666667%;
}
.col-xs-offset-10 {
 margin-left: 83.33333333%;
}
.col-xs-offset-9 {
 margin-left: 75%;
}
.col-xs-offset-8 {
 margin-left: 66.66666667%;
}
.col-xs-offset-7 {
 margin-left: 58.33333333%;
}
.col-xs-offset-6 {
 margin-left: 50%;
}
.col-xs-offset-5 {
 margin-left: 41.66666667%;
}
.col-xs-offset-4 {
 margin-left: 33.33333333%;
}
.col-xs-offset-3 {
 margin-left: 25%;
}
.col-xs-offset-2 {
 margin-left: 16.66666667%;
}
.col-xs-offset-1 {
 margin-left: 8.33333333%;
}
.col-xs-offset-0 {
 margin-left: 0;
}

列排序

可以使用类名“col-xs-pull-数字”,“col-xs-push-数字”来实现这个效果。
Bootstrap仅通过设置left和right来实现定位效果。以xs为例,实现源码如下:

.col-xs-pull-12 {
 right: 100%;
}
.col-xs-pull-11 {
 right: 91.66666667%;
}
.col-xs-pull-10 {
 right: 83.33333333%;
}
.col-xs-pull-9 {
 right: 75%;
}
.col-xs-pull-8 {
 right: 66.66666667%;
}
.col-xs-pull-7 {
 right: 58.33333333%;
}
.col-xs-pull-6 {
 right: 50%;
}
.col-xs-pull-5 {
 right: 41.66666667%;
}
.col-xs-pull-4 {
 right: 33.33333333%;
}
.col-xs-pull-3 {
 right: 25%;
}
.col-xs-pull-2 {
 right: 16.66666667%;
}
.col-xs-pull-1 {
 right: 8.33333333%;
}
.col-xs-pull-0 {
 right: auto;
}
.col-xs-push-12 {
 left: 100%;
}
.col-xs-push-11 {
 left: 91.66666667%;
}
.col-xs-push-10 {
 left: 83.33333333%;
}
.col-xs-push-9 {
 left: 75%;
}
.col-xs-push-8 {
 left: 66.66666667%;
}
.col-xs-push-7 {
 left: 58.33333333%;
}
.col-xs-push-6 {
 left: 50%;
}
.col-xs-push-5 {
 left: 41.66666667%;
}
.col-xs-push-4 {
 left: 33.33333333%;
}
.col-xs-push-3 {
 left: 25%;
}
.col-xs-push-2 {
 left: 16.66666667%;
}
.col-xs-push-1 {
 left: 8.33333333%;
}
.col-xs-push-0 {
 left: auto;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现按Enter键触发事件示例
Sep 10 Javascript
javascript代码运行不出来执行错误的可能情况整理
Oct 18 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
Oct 30 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
Vue导出json数据到Excel电子表格的示例
Dec 04 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
Apr 13 Javascript
vue组件开发之slider组件使用详解
Aug 21 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
js微信支付实现代码
Dec 22 #Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 #Javascript
Html中 IFrame的用法及注意点
Dec 22 #Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
Dec 22 #Javascript
BootStrap3使用错误记录及解决办法
Dec 22 #Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 #Javascript
Angular-Touch库用法示例
Dec 22 #Javascript
You might like
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
深入理解node.js http模块
2018/01/24 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
python实现RSA加密(解密)算法
2016/02/17 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
物控部经理职务说明书
2014/02/25 职场文书
班级班风口号大全
2015/12/25 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript