全面解析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 相关文章推荐
网页开发中的容易忽略的问题 javascript HTML中的table
Apr 15 Javascript
caller和callee的区别介绍及演示结果
Mar 10 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
May 11 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
jquery实现效果比较好的table选中行颜色
Mar 25 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
JS数组排序方法实例分析
Dec 16 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
对layui中的onevent 和event的使用详解
Sep 06 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 Javascript
js实现微信聊天界面
Aug 09 Javascript
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中实现图片的锐化
2006/10/09 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
django静态文件加载的方法
2018/05/20 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
中文师范生自荐信
2014/01/30 职场文书
12月红领巾广播稿
2014/02/13 职场文书
销售类求职信
2014/06/13 职场文书
2014年业务工作总结
2014/11/17 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
土建技术员岗位职责
2015/04/11 职场文书
新郎结婚感言
2015/07/31 职场文书
Python访问Redis的详细操作
2021/06/26 Python