深入理解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 相关文章推荐
一个级联菜单代码学习及removeClass与addClass的应用
Jan 24 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
Apr 15 Javascript
基于jQuery中对数组进行操作的方法
Apr 16 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
Dec 17 Javascript
浅谈JavaScript正则表达式-非捕获性分组
Mar 08 Javascript
AngularJS前端页面操作之用户修改密码功能示例
Mar 27 Javascript
Vue项目中添加锁屏功能实现思路
Jun 29 Javascript
vue实现滑动超出指定距离回顶部功能
Jul 31 Javascript
nuxt.js写项目时增加错误提示页面操作
Nov 05 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
用PHP函数解决SQL injection
2006/10/09 PHP
php 动态多文件上传
2009/01/18 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
Python多线程和队列操作实例
2015/06/21 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
详解django.contirb.auth-认证
2018/07/16 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
企业门卫岗位职责
2013/12/12 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
机关作风建设工作总结
2014/10/23 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
JavaScript的function函数详细介绍
2021/11/20 Javascript
Redis数据同步之redis shake的实现方法
2022/04/21 Redis
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技