Bootstrap源码分析系列之整体架构
作为一名合格的前端工程师,你肯定听说过Bootstarp框架。确实可以说Bootstrap框架是最流行的前端框架之一。可是也有人说Bootstrap是给后端和前端小白用的,我认为只要学习它能给我们前端技能带来提升,那么我们就有必要研究一下它。Bootstrap框架虽然也提供了javascript插件,但总感觉不够用。Bootrtrap更多的则是被用作css框架。之前我也用过几次Bootstrap,感觉确实很快,很方便,用的次数多了就越想弄清楚它到底是怎么回事?它好在哪里?
在Bootstrap官网点击下载我们可以看到有用于生产环境中的Bootstrap和Bootstrap源码以及Sass,我们知道Bootstrap 的源码是基于最流行的 CSS 预处理脚本 - Less 和 Sass 开发的。今天我们就来学习一下以Less开发的Bootstrap。如果不熟悉Less语法的朋友可以先在Less官网学习下,在下载的bootstrap-3.3.0\less文件夹中打开bootstrap.less,我们可以看到源码的整体架构
// Core variables and mixins
//定义变量,方便后面调用
@import "variables.less";
//定义混合 这类似定义函数或者宏,在mixins文件夹中可看到所定义的函数
@import "mixins.less";
// Reset and dependencies
//标准化css,这是一个专门将不同浏览器的默认css特性设置为统一效果的css库,编译后对应源码为8~190行
@import "normalize.less";
//打印样式,编译后对应源码为192~266行
@import "print.less";
//图标样式,编译后对应源码为267~885行
@import "glyphicons.less";
// Core CSS 核心CSS
//脚手架,相当于全局样式,编译后对应源码为886~989行
@import "scaffolding.less";
//排版样式,编译后对应源码为990~1335行
@import "type.less";
//代码样式,编译后对应源码为1336~1389行
@import "code.less";
//栅格系统,这是Bootstrap支持响应式的重点,编译后对应源码为1390~2056行
@import "grid.less";
//表格样式,编译后对应源码为2057~2296行
@import "tables.less";
//表单样式,编译后对应源码为2297~2781行
@import "forms.less";
//按钮样式,编译后对应源码为2782~3171行
@import "buttons.less";
// Components 组件
//组件中折叠和隐藏动画,编译后对应源码为2782~3171行
@import "component-animations.less";
//下拉菜单及下三角符号,编译后对应源码为3209~3348行
@import "dropdowns.less";
//按钮组,编译后对应源码为3349~3520行
@import "button-groups.less";
//输入框组,编译后对应源码为3521~3674行
@import "input-groups.less";
//导航,编译后对应源码为3675~3868行
@import "navs.less";
//导航条,编译后对应源码为3869~4393行
@import "navbar.less";
//面包屑,编译后对应源码为4394~4411行
@import "breadcrumbs.less";
//默认分页,编译后对应源码为4412~4504行
@import "pagination.less";
//翻页,编译后对应源码为4505~4542行
@import "pager.less";
//标签,编译后对应源码为4543~4609行
@import "labels.less";
//徽章,编译后对应源码为4610~4648行
@import "badges.less";
//巨幕,编译后对应源码为4649~4686行
@import "jumbotron.less";
//缩略图,编译后对应源码为4687~4712行
@import "thumbnails.less";
//警告框,编译后对应源码为4713~4787行
@import "alerts.less";
//进度条,编译后对应源码为4788~4881行
@import "progress-bars.less";
//媒体对象,编译后对应源码为4882~4915行
@import "media.less";
//列表组,编译后对应源码为4916~5091行
@import "list-group.less";
//面板,编译后对应源码为5092~5426行
@import "panels.less";
//具有响应式特性的嵌入内容,编译后对应源码为5427~5452行
@import "responsive-embed.less";
//well效果,编译后对应源码为5453~5474行
@import "wells.less";
//关闭按钮图标,编译后对应源码为5475~5499行
@import "close.less";
// Components w/ JavaScript
//模态框,编译后对应源码为5500~5622行
@import "modals.less";
//工具提示,编译后对应源码为5623~5720行
@import "tooltip.less";
//弹出框,编译后对应源码为5721~5841行
@import "popovers.less";
//轮播,编译后对应源码为5842~6063行
@import "carousel.less";
// Utility classes
//实用工具类,编译后对应源码为6064~6147行
@import "utilities.less";
//响应式工具类,编译后对应源码为6148~6357行
@import "responsive-utilities.less";
这些Less文件进过编译后形成了完整的Bootstrap框架。在Bootstrap官网最后我们可以定制自己的Bootstrap,可根据项目的需要自行选择不同的Less文件。
在《深入理解Bootstrap》一书中以图表的形式概括了Bootstrap整体架构,图片如下:

在接下来的文章中,将对Bootstrap框架中一些常用的样式及组件进行分析,经过自己梳理一遍对Bootstrap更加了解了。
Bootstrap源码分析系列之整体架构的更多相关文章
- Bootstrap源码分析系列之初始化和依赖项
在上一节中我们介绍了Bootstrap整体架构,本节我们将介绍Bootstrap框架第二部分初始化及依赖项,这部分内容位于源码的第8~885行,打开源码这部分内容似乎也不是很难理解.但是请站在一个开发 ...
- Bootstrap源码分析系列之核心CSS
本节主要介绍核心CSS,从整体架构中的7个Less文件对应的源码分别进行分析 scaffolding.less 这个文件编译后的css文件(886~989行)其作用就像定义全局样式. //调整css盒 ...
- 【Seajs源码分析】1. 整体架构
seajs是一个非常流行的模块开发引擎,目前项目中使用比较多,为了深入了解已经改进seajs我阅读了他的源码,希望对自己的代码生涯能有所启发. 本文说介绍的是指seajs2.3.3版本. 首先seaj ...
- jQuery源码分析系列
声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://git ...
- jquery2源码分析系列
学习jquery的源码对于提高前端的能力很有帮助,下面的系列是我在网上看到的对jquery2的源码的分析.等有时间了好好研究下.我们知道jquery2开始就不支持IE6-8了,从jquery2的源码中 ...
- [转]jQuery源码分析系列
文章转自:jQuery源码分析系列-Aaron 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaro ...
- jQuery源码分析系列(转载来源Aaron.)
声明:非本文原创文章,转载来源原文链接Aaron. 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAa ...
- jQuery源码分析系列——来自Aaron
jQuery源码分析系列——来自Aaron 转载地址:http://www.cnblogs.com/aaronjs/p/3279314.html 版本截止到2013.8.24 jQuery官方发布最新 ...
- Netty 源码分析系列(二)Netty 架构设计
前言 上一篇文章,我们对 Netty做了一个基本的概述,知道什么是Netty以及Netty的简单应用. Netty 源码分析系列(一)Netty 概述 本篇文章我们就来说说Netty的架构设计,解密高 ...
随机推荐
- Java模式—适配器模式
适配器模式(Adapter): 1.概念:将一个类中的接口转换为客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 2.模式中的角色 1 目标接口:客户所期待的接口.目 ...
- Python Mock的入门学习
一.Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象 ...
- Git基本命令学习
Git是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件,如今已经超越CVS.SVN称为主流的版本控制器.许多著名的开源项目都用Git管理,比较火的托管服务 ...
- 全网最详细的Hadoop HA集群启动后,两个namenode都是active的解决办法(图文详解)
不多说,直接上干货! 这个问题,跟 全网最详细的Hadoop HA集群启动后,两个namenode都是standby的解决办法(图文详解) 是大同小异. 欢迎大家,加入我的微信公众号:大数据躺过的坑 ...
- 全网最详细的Xshell或SecureCRT下spark-shell里出现无法退格或者删除的问题现象的解决办法(图文详解)
不多说,直接上干货! 前言 打开spark的命令行后,发现输错字符了,但是无法退格或者删除,这是比较苦恼的问题. 这个问题,得看你是用Xshell,还是SecureCRT. 一般是出现在SecureC ...
- 第k大的数
问题描述:输入一组数,指定一个k,输出这组数里第k大的数. 一般这种题目,第一想法是把整个数组先排序后,再选取第k位的数.但是这样做实际上浪费了大量的时间在排序上,我们只是要求第k大的数,并非要把整个 ...
- jdk8-lambda表达式的使用
1, 遍历list集合 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3 ...
- map集合的见解、排序
map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等 HashMap:我们最常用的Map,它根据key的HashCode 值 ...
- AngularJS学习笔记(一)走近AngularJS
什么是AngularJS AngularJS是一款优秀的前端JS框架,是Google多款产品之一,简称ng. ng有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入 ...
- ikanalyzer分词,计算信息熵排序分词结果
因需求,现需分词接口,故记录之. 1.需要依赖: <!-- https://mvnrepository.com/artifact/com.janeluo/ikanalyzer --> &l ...