全面解析bootstrap格子布局


Posted in Javascript onMay 22, 2016

一、源码文件

_grid.scss:格子系统类文件
Mixins/_grid.scss:支持格子系统实现的mixin集合
Mixins/_grid-framework.scss:格子系统实现的核心mixin

二、支持的功能

1. 实现按百分比布局

2. 实现格子的定位

3. 实现格子的嵌套

4. 如果只使用格子系统,可以只编码bootstrap-grid.scss文件

三、实现原理

1、 按百分比布局,主要思考的问题如何在不同的设备上平均分配的宽度,bootstrap只是用了简单的百分比,在任何尺寸设备下都是使用相同的百分比。

2、 格子的定位:解决了格子向左移动、向右移动、以格子向右偏移几个单元格的能力

3、 格子的嵌套:实现了格子内容再嵌套格子布局系统。

四、源码分析

1、_grid.scss:格子系统生成的主类,引用了mixins/_grid.scss、mixins/_grid-framework.scss、variables.scss类中的变量及相关方法。
首先:定义两个容器类

     a) container:格子容器,根据不同设备定义不同的宽度,不会充满全屏;

     b) continaer-fluid:格子容器,在任何支持下都会充满全屏
container和container-fluid都使用了make-container(mixins/_grid.scss),make-container只实现了居中、左右内边距、清除浮动等控制;其中container根据不同设备定义了容器的宽度

然后:定义row(行):
调用了make-row(mixins/_grids.scss)实现清除浮动、左右外边距的定义,在4.0中,如果开启了flex布局的支持,就设定容器的display为flex和flex-wrap为wrap,并去掉清浮动。

再则:直接调用make-grid-columns(mixins/_grid-framework.scss)实现单元格的建立

    a) make-grid-columns:单元格生成的入口方法,传递所能支持的格子总数、外边距宽度、所支持的几种尺寸

    b) make-grid-columns引用了mixins/_grid.scss中的许多方法:

    a) 用到了map的map-key函数,用于遍历一个map的key集合;

用到了@extend函数,用于继承,实现所有col左浮动,以及所有col都相对定位。

@for $i from 1 through $columns {
   .col-#{$breakpoint}-#{$i} {
    @extend %grid-column; //extend是继承,将此合并为一个样式集合
    //.col-xs-1,col-xs-2{ positiona:relative; .... }
   }
  }

a) Make-col-span函数,实现col宽度的计算

b) 调用mixins/_grid.scss中的make-col-modifier方法,实现push、pull、offset的样式的生成:

i. Push:向右推几个格子,用的是left

ii. Pull:向左推几个格子,用的是right

iii. Offset:利用的是margin-left实现,向右推向个百分比。

@mixin make-col-offset($size, $columns: $grid-columns) {
 margin-left: percentage($size / $columns);
}

@mixin make-col-push($size, $columns: $grid-columns) {
 left: if($size > 0, percentage($size / $columns), auto);
}

@mixin make-col-pull($size, $columns: $grid-columns) {
 right: if($size > 0, percentage($size / $columns), auto);
}

@mixin make-col-modifier($type, $size, $columns) {
 // Work around the lack of dynamic mixin @include support 
 @if $type == push {
  @include make-col-push($size, $columns);
 } @else if $type == pull {
  @include make-col-pull($size, $columns);
 } @else if $type == offset {
  @include make-col-offset($size, $columns);
 }
}

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
ExtJS Window 最小化的一种方法
Nov 18 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
Sep 06 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
May 09 Javascript
JavaScript 基础函数_深入剖析变量和作用域
May 18 Javascript
jquery输入数字随机抽奖特效的简单实现代码
Jun 10 Javascript
学习使用Bootstrap页面排版样式
May 11 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
JS 实现获取验证码 倒计时功能
Oct 29 Javascript
a标签调用js的方法总结
Sep 05 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
Vue 数据响应式相关总结
Jan 28 Vue.js
Bootstrap模块dropdown实现下拉框响应
May 22 #Javascript
基于Bootstrap实现图片轮播效果
May 22 #Javascript
基于Vue.js的表格分页组件
May 22 #Javascript
js正则表达式replace替换变量方法
May 21 #Javascript
深入解析JavaScript中的立即执行函数
May 21 #Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 #Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 #Javascript
You might like
解析php中memcache的应用
2013/06/18 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
PHP微商城开源代码实例
2019/03/27 PHP
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
社区十八大感言
2014/01/19 职场文书
护士自我评价范文
2014/01/25 职场文书
语文教学随笔感言
2014/02/18 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
计算机系本科生求职信
2014/05/31 职场文书
企业法人代表任命书
2014/06/06 职场文书
资金申请报告范文
2015/05/14 职场文书
公司安全管理制度范本
2015/08/05 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers