作为一名合格的前端工程师,你肯定听说过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源码分析系列之整体架构的更多相关文章

  1. Bootstrap源码分析系列之初始化和依赖项

    在上一节中我们介绍了Bootstrap整体架构,本节我们将介绍Bootstrap框架第二部分初始化及依赖项,这部分内容位于源码的第8~885行,打开源码这部分内容似乎也不是很难理解.但是请站在一个开发 ...

  2. Bootstrap源码分析系列之核心CSS

    本节主要介绍核心CSS,从整体架构中的7个Less文件对应的源码分别进行分析 scaffolding.less 这个文件编译后的css文件(886~989行)其作用就像定义全局样式. //调整css盒 ...

  3. 【Seajs源码分析】1. 整体架构

    seajs是一个非常流行的模块开发引擎,目前项目中使用比较多,为了深入了解已经改进seajs我阅读了他的源码,希望对自己的代码生涯能有所启发. 本文说介绍的是指seajs2.3.3版本. 首先seaj ...

  4. jQuery源码分析系列

    声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://git ...

  5. jquery2源码分析系列

    学习jquery的源码对于提高前端的能力很有帮助,下面的系列是我在网上看到的对jquery2的源码的分析.等有时间了好好研究下.我们知道jquery2开始就不支持IE6-8了,从jquery2的源码中 ...

  6. [转]jQuery源码分析系列

    文章转自:jQuery源码分析系列-Aaron 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaro ...

  7. jQuery源码分析系列(转载来源Aaron.)

    声明:非本文原创文章,转载来源原文链接Aaron. 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAa ...

  8. jQuery源码分析系列——来自Aaron

    jQuery源码分析系列——来自Aaron 转载地址:http://www.cnblogs.com/aaronjs/p/3279314.html 版本截止到2013.8.24 jQuery官方发布最新 ...

  9. Netty 源码分析系列(二)Netty 架构设计

    前言 上一篇文章,我们对 Netty做了一个基本的概述,知道什么是Netty以及Netty的简单应用. Netty 源码分析系列(一)Netty 概述 本篇文章我们就来说说Netty的架构设计,解密高 ...

随机推荐

  1. ABP集成WIF实现单点登录

    ABP集成WIF实现单点登录 参考 ojlovecd写了三篇关于WIF文章. 使用WIF实现单点登录Part III —— 正式实战 使用WIF的一些开源示例. https://github.com/ ...

  2. Anaconda 科学计算环境与包的管理

    相信大多数 python 的初学者们都曾为开发环境问题折腾了很久,包管理和 python 不同版本的问题,特别是 window 环境安装个 scrapy 各种报错 ,使用 Anaconda 可以很好的 ...

  3. IDEA中Git的使用基础

    场景概述 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 ...

  4. centos7.0安装docker-18.06.1-ce不能启动问题

    最近用centos7.0 yum安装了一个docker-ce18.06.1  但是发现安装好不能启动,于是上官网看了一下,说是docker-ce18.06.1是从centos7.2开始支持的,但是7. ...

  5. 实现php的startsWith和endsWith

    startsWith(): function startsWith($haystack, $needle){ return strncmp($haystack, $needle, strlen($ne ...

  6. Visual Studio 监视与快速监视即时窗口没有智能提示

    工具->选项->文本编辑器->C# 将 自动列出成员 参数信息 都勾选上

  7. 设置ul水平居中

    <div class="jdcg-menu-nav"> <ul> <li>基本信息</li> <li>阶段资料</ ...

  8. C# 利用反射将枚举绑定到下拉框

    前言:反射(Reflection)是.NET提供给开发者的一个强大工具,尽管作为.NET框架的使用者,很多时候不会用到反射.但在一些情况下,尤其是在开发一些基础框架或公共类库时,使用反射会使系统架构更 ...

  9. <!--[if IE]><script type="text/javascript" src="matrix/js/html5.js"></script><![endif]-->代码解释

    块注释例子 1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->2. <!--[if IE]> 所有的I ...

  10. 设计模式之工厂模式(Factory)(3)

    在面向对象编程中,最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下,new操作符直接生成对象会带来一些问题.举例来说,许多类型对象的创造需要一系列的 ...