深入理解bootstrap框架之第二章整体架构


Posted in Javascript onOctober 09, 2016

一. 整体架构

深入理解bootstrap框架之第二章整体架构

1. CSS-12栅格系统

把网页宽度均分为12等分(保留15位精度)——这是bootstrap的核心功能。

2.基础布局组件

包括排版、按钮、表格、布局、表单等等。

3.jQuery

bootstrap插件的基础

4.响应式设计

兼容多个终端。这是bootstrap的终极理念。

5.css插件

提供丰富的样式。

6.js插件

二. 栅格系统

1.基本实现过程

定义容器的大小——跳转边距——媒询

有以下要求:

(1)一行(row)数据必须包含在.container中。

.container默认居中。宽度分为4种,超小屏(100%),小屏(750px),中屏(970px),大屏(1170px)。row的边距(左右margin,下同)是-15px。

(2)有了row,才能搭建列(col)。所有组件必须放在col内,只有col才能作为row的直接子元素。

.col的左右内边距(padding-left,right)为15px。也就是说,最小的col有30px。

(3)在以上基础上快速搭建布局

(4)col之间是木有边距的,应当使用padding来产生col的视觉距离。这样做会导致一个row容不下12个col,这时应当用负的margin来抵消padding的影响。

(5)栅格系统是通过指定1-12的值来设定范围的。对于col的规格,开发者指定了4个不同的屏幕

深入理解bootstrap框架之第二章整体架构

如图,在<body class="container">内包含若干个<div class="col-md-“1-12数字”">col-md-“1-12数字”></div>效果是

深入理解bootstrap框架之第二章整体架构

小结: col组合其实就用了两个属性:float:left和width%。

2. 实现方案

(1)偏移(.col-尺寸大小-offset-*)

把整个col向右边偏移,在源码实现上,.col-尺寸大小-offset-x 就是margin-left:8.33333333333...*x;

情景一:页面主体只占据container的66%,而且居中。

解决方案:col-md-offset-2——向右偏移了2个col。

<div class="col-md-8 col-md-offset-2">col-md8</div>

深入理解bootstrap框架之第二章整体架构

情景二:宽度足够的情况下,我不想所有的col紧紧挨在一起。两个要有1个col的距离。

<div class="col-md-8">col-md8</div>
<div class="col-md-3 col-md-offset-1">col-md3</div>

深入理解bootstrap框架之第二章整体架构

(2)嵌套

栅格系统的col是可以针对父级的row进一步再进行百分比的划分,比如说:

<div class="row">
<div class="col-sm-12">我是整行<br>
<div class="col-sm-6">我是一半
<div class="row">
<div class="col-sm-6">我是6/12*6/12=1/4</div>
</div>
</div>
<div class="col-sm-6"></div>
</div>
</div>

深入理解bootstrap框架之第二章整体架构

(3)排序

强行把当前列向左或者向右推拉

只有两个语句:col-尺寸大小-push-*()和col-尺寸大小-pull-*()

<div class="row">
<div class="col-sm-3 col-sm-push-6" style="background: #abc">col3</div>
</div>

深入理解bootstrap框架之第二章整体架构

col3被强行推了6格。同理<div class="col-sm-3 col-sm-pull-1" style="background: #abc">col3</div>是向左拉了一格。

效果相当于绝对定位。在源码实现上,也是做定位:

.col-md-pull-8 { right: 66.66666666666666%;}

3.响应式栅格若干问题

看起来12列栅格布局实现得很死板,但是组合屏幕尺寸,方案就非常多了

深入理解bootstrap框架之第二章整体架构

(1)跨设备组合

比如我要为自己的网页做一适配小屏和中屏的版本,可以把类叠加到class上。

<div class="col-sm-6 col-md-3" style="background: #abc">col3</div>

在中屏表现是1/4。

深入理解bootstrap框架之第二章整体架构

到了小屏,表现为1/2

深入理解bootstrap框架之第二章整体架构

如果我定义一个

<div class="col-xs-3" style="background: #abc">col3</div>

到了大屏,依然占25%。

结论:屏幕尺寸向大兼容。向小肯定不兼容!

(2)清除浮动

情景:在小屏幕上一行显示4个col3,在超小屏幕上一行显示2个col6,代码如何实现?

代码应该是这样的

<div class="col-xs-6 col-sm-3" style="background: #abc">col</div>
<div class="col-xs-6 col-sm-3" style="background: #abc">col</div>
<div class="col-xs-6 col-sm-3" style="background: #abc">col</div>
<div class="col-xs-6 col-sm-3" style="background: #abc">col</div>

看起来也没问题。

如果把第一个div改为

<div class="col-xs-6 col-sm-3" style="background: #abc">col<br>我胖了</div>

效果不佳。

深入理解bootstrap框架之第二章整体架构

这时应该加一个清除浮动的div到第2/3个div之间第四个就不会飘上去了

<div class="col-xs-6 col-sm-3" style="background: #abc">col<br>我胖了</div>
<div class="col-xs-6 col-sm-3" style="background: #abc">col</div>
<div class="clearfix visible-xs"></div>
<div class="col-xs-6 col-sm-3" style="background: #abc">col</div>
<div class="col-xs-6 col-sm-3" style="background: #abc">col</div>

深入理解bootstrap框架之第二章整体架构

所谓class="clearfix visible-xs",前者表示清除浮动,后者表示在超小屏生效

(3)“强大”的偏移和排序——组合应用的demo

<div class="row">
<div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
<div class="col-sm-5 col-sm-offset-2 col-md-6 col-md-offset-0">col-sm-5 col-sm-offset-2 col-md-6 col-md-offset-0
</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-5 col-lg-6">.col-sm-6 .col-md-5 .col-lg-6</div>
<div class="col-sm-6 col-md-5 col-md-offset-2 col-lg-6 col-lgoffset-0">col-sm-6 col-md-5 col-md-offset-2 col-lg-6 col-lgoffset-0</div>
</div>

布置类似这样的代码,可以很快实现不同设备宽度下的样式。

4.重复代码

作者认为bootstrap的代码重复率相当之高。

三.CSS组件架构的设计思想

作者把 bootstrap的CSS组件内容总结为8类

深入理解bootstrap框架之第二章整体架构

(1)基础样式

包括字体、内外边距,display方式,边框等。

(2)颜色

包括5中最基本的颜色

如果在Bootstrap官方网站看过btn按钮或者alert警告框的样例,你会发现,Bootstrap默认为很多组件都提供了5种颜色的样式,这5种颜色分别是:primary(重点蓝)、success(成功绿)、info(信息蓝)、warning(警告橙)、danger(危险红)。定义规则是:组件名称-颜色类型,如btn-primary、alert-info。以按钮(btn为例)

深入理解bootstrap框架之第二章整体架构

也就是说根据组件特性来定义颜色信息1.

(3)尺寸

一般组件都有对应屏幕的4种尺寸,表示方式为:组件-尺寸,比如btn-lg、well-sm等等

实现方式为padding、圆角,行距及字体大小

(4)状态

涉及到阴影、透明度、虚框等

(5)特殊元素

(6)并列元素

(7)嵌套元素

(8)动画样式

主要用在进度条,在progress样式基础上再加一个active

<div class="progress progress-striped active">
<div class="progress-bar" style="width: 45%">
<span class="sr-only">45% Complete</span>
</div>
</div>

深入理解bootstrap框架之第二章整体架构

定义动画主要是指定animattion和动画时间。

.progress.active .progress-bar {
-webkit-animation: progress-bar-stripes 2s linear infinite;/* 2秒过度40像素,无限循环 */
animation: progress-bar-stripes 2s linear infinite;/* 其他浏览器 */
}

深入理解bootstrap框架之第二章整体架构

最后,需要说明,顺序很重要。否则样式大乱套。

四.插件架构

基本规则

(1)布局规则——基于元素自定义属性

(2)js实现步骤——向jQuery看齐

(3)可以是js声明,也可以是js调用

1.布局规则:

js会检测到html中相应的属性,自动绑定事件,而无需额外的js代码。

比如说

<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
我的书籍 
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">JavaScript编程精解</a></li>
<li><a href="#">JavaScript设计模式</a></li>
<li><a href="#">JavaScript启示录</a></li>
<li class="divider"></li>
<li><a href="#">深入理解Bootstrap3</a></li>
</ul>
</div>
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a data-toggle="tab" href="#home">首页</a></li>
<li class=""><a data-toggle="tab" href="#profile">个人资料</a></li>
<li class="dropdown">
<!-- 单击"我的书籍"时,弹出下拉菜单 -->
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
我的书籍
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a data-toggle="tab" href="#dropdown1">JavaScript编程精解</a></li>
<li><a data-toggle="tab" href="#dropdown2">JavaScript设计模式</a></li>
<li><a data-toggle="tab" href="#dropdown3">JavaScript启示录</a></li>
<li><a data-toggle="tab" href="#dropdown4">深入理解Bootstrap</a></li>
</ul>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div id="home" class="tab-pane fade active in">
<p>单击"首页"时显示该区域</p>
</div>
<div id="profile" class="tab-pane fade">
<p>单击"个人资料"时显示该区域</p>
</div>
<div id="dropdown1" class="tab-pane fade">
<p>单击"JavaScript编程精解"时显示该区域</p>
</div>
<div id="dropdown2" class="tab-pane fade">
<p>单击"JavaScript设计模式"时显示该区域</p>
</div>
<div id="dropdown3" class="tab-pane fade">
<p>单击"JavaScript启示录"时显示该区域</p>
</div>
<div id="dropdown4" class="tab-pane fade"> 
<p>单击"深入理解Bootstrap3"时显示该区域</p>
</div>
</div>

深入理解bootstrap框架之第二章整体架构

2.JavaScript的实现步骤

函数声明后马上调用——面向对象的方法——jQuery的插件改进重构——防止冲突处理——绑定事件

3.通用技术

可以通过禁用命名空间的方式禁用插件的默认行为

五.禁用响应式布局

删除媒询、为.container定宽,用col-xs-*替代sm,md和lg。

以上所述是小编给大家介绍的深入理解bootstrap框架之第二章整体架构,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
Jan 13 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
May 04 Javascript
jQuery右下角旋转环状菜单特效代码
Aug 10 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
Jan 08 Javascript
jQuery EasyUI Panel面板组件使用详解
Feb 28 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 jQuery
基于jQuery实现图片推拉门动画效果的两种方法
Aug 26 jQuery
JS中跳出循环的示例代码
Sep 14 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
Dec 28 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
javascript 判断是否是微信浏览器的方法
Oct 09 #Javascript
深入理解bootstrap框架之入门准备
Oct 09 #Javascript
微信小程序 http请求详细介绍
Oct 09 #Javascript
微信小程序 Flex布局详解
Oct 09 #Javascript
JavaScript实现Java中Map容器的方法
Oct 09 #Javascript
JavaScript基于对象去除数组重复项的方法
Oct 09 #Javascript
JS中this上下文对象使用方式
Oct 09 #Javascript
You might like
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php adodb分页实现代码
2009/03/19 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
解放web程序员的输入验证
2006/10/06 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
基于Django的python验证码(实例讲解)
2017/10/23 Python
python测试mysql写入性能完整实例
2018/01/18 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
自我鉴定写作要点
2014/01/17 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
走近毛泽东观后感
2015/06/04 职场文书
2016年中秋节慰问信
2015/12/01 职场文书