🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一、什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的。Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品。 ## 二、为什么使用 Bootstrap? * **移动设备优先**:自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式。 * **浏览器支持**:所有的主流浏览器都支持 Bootstrap。 * **容易上手**:只要您具备 HTML 和 CSS 的基础知识,您就可以开始学习 Bootstrap。 * **响应式设计**:Bootstrap 的响应式 CSS 能够自适应于台式机、平板电脑和手机。 ![](http://cndpic.dodoke.com/7af913df13b5400442e323b8ff89ed8f) * 它为开发人员创建接口提供了一个简洁统一的解决方案。 * 它包含了功能强大的内置组件,易于定制。 * 它还提供了基于 Web 的定制。 * 它是开源的。 ## 三、Bootstrap 包的内容 * **基本结构**:Bootstrap 提供了一个带有网格系统、链接样式、背景的基本结构。 * **CSS**:Bootstrap 自带以下特性:全局的 CSS 设置、定义基本的 HTML 元素样式、可扩展的 class,以及一个先进的网格系统。 * **组件**:Bootstrap 包含了十几个可重用的组件,用于创建图像、下拉菜单、导航、警告框、弹出框等等。 * **JavaScript 插件**:Bootstrap 包含了十几个自定义的 jQuery 插件。您可以直接包含所有的插件,也可以逐个包含这些插件。 * **定制**:您可以定制 Bootstrap 的组件、LESS 变量和 jQuery 插件来得到您自己的版本。 ## 四、Boostrap 网格系统 Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。它包含了易于使用的预定义类,还有强大的mixin 用于生成更具语义的布局。 ### 1、简介 栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中。下面就介绍一下 Bootstrap 栅格系统的工作原理: * “行(row)”必须包含在`.container`(固定宽度)或`.container-fluid`(100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding)。 * 通过“行(row)”在水平方向创建一组“列(column)”。 * 你的内容应当放置于“列(column)”内,并且,只有“列(column)”可以作为行(row)”的直接子元素。 * 类似`.row`和`.col-xs-4`这种预定义的类,可以用来快速创建栅格布局。Bootstrap 源码中定义的 mixin 也可以用来创建语义化的布局。 * 通过为“列(column)”设置`padding`属性,从而创建列与列之间的间隔(gutter)。通过为`.row`元素设置负值`margin`从而抵消掉为`.container`元素设置的`padding`,也就间接为“行(row)”所包含的“列(column)”抵消掉了`padding`。 * 负值的 margin就是下面的示例为什么是向外突出的原因。在栅格列中的内容排成一行。 * 栅格系统中的列是通过指定1到12的值来表示其跨越的范围。例如,三个等宽的列可以使用三个`.col-xs-4`来创建。 * 如果一“行(row)”中包含了的“列(column)”大于 12,多余的“列(column)”所在的元素将被作为一个整体另起一行排列。 * 栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆盖栅格类。 因此,在元素上应用任何`.col-md-*`栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆盖栅格类。 因此,在元素上应用任何`.col-lg-*`不存在, 也影响大屏幕设备。 ### 2、媒体查询 在栅格系统中,我们在 Less 文件中使用以下媒体查询(media query)来创建关键的分界点阈值。 ``` /* 超小屏幕(手机,小于 768px) */ /* 没有任何媒体查询相关的代码,因为这在 Bootstrap 中是默认的(还记得 Bootstrap 是移动设备优先的吗?) */ /* 小屏幕(平板,大于等于 768px) */ @media (min-width: @screen-sm-min) { ... } /* 中等屏幕(桌面显示器,大于等于 992px) */ @media (min-width: @screen-md-min) { ... } /* 大屏幕(大桌面显示器,大于等于 1200px) */ @media (min-width: @screen-lg-min) { ... } ``` ### 3、栅格参数 通过下表可以详细查看 Bootstrap 的栅格系统是如何在多种屏幕设备上工作的。 ![](http://cndpic.dodoke.com/934576e07118165761687939209223a8) ### 4、实例:从堆叠到水平排列 使用单一的一组`.col-md-*`栅格类,就可以创建一个基本的栅格系统,在手机和平板设备上一开始是堆叠在一起的(超小屏幕到小屏幕这一范围),在桌面(中等)屏幕设备上变为水平排列。所有“列(column)必须放在 ”`.row`内。 ![](http://cndpic.dodoke.com/a1bfaf814efec3428af5d62bc18eb6d3) ``` <div class="row"> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> </div> <div class="row"> <div class="col-md-8">.col-md-8</div> <div class="col-md-4">.col-md-4</div> </div> <div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-4">.col-md-4</div> <div class="col-md-4">.col-md-4</div> </div> <div class="row"> <div class="col-md-6">.col-md-6</div> <div class="col-md-6">.col-md-6</div> </div> ``` ### 5、实例:移动设备和桌面屏幕 是否不希望在小屏幕设备上所有列都堆叠在一起?那就使用针对超小屏幕和中等屏幕设备所定义的类吧,即`.col-xs-*`和`.col-md-*`。请看下面的实例,研究一下这些是如何工作的。 ![](http://cndpic.dodoke.com/1f523eb6161b2332ff60d59deb758772) ~~~html <!-- Stack the columns on mobile by making one full-width and the other half-width --> <div class="row"> <div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div> <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div> </div> <!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop --> <div class="row"> <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div> <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div> <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div> </div> <!-- Columns are always 50% wide, on mobile and desktop --> <div class="row"> <div class="col-xs-6">.col-xs-6</div> <div class="col-xs-6">.col-xs-6</div> </div> ~~~