目录
哈哈哈是笔记标记,方便本人能直接看到自己的笔记。
介绍
Bootstrap 最基础的形式:直接拖入即用的编译文件,几乎能在所有Web项目中使用。
scss/和
js/是CSS和JavaScript的源码
其中bootstrap.*
是预编译的文件。
docs/
文件夹是开发者文件夹。
bootstrap.min.*
是编译过且压缩后的文件,可以直接·引用。 程序目录中,还有bootstrap.*.map
格式的文件,这是Source map文件,需要在特定的浏览器开发者工具下才可用式。
默认bootstrap.js
(预编译与精简版)都已经包含了util.js
,Bootstrap所有JavaScript行为都依赖于util.js
函数。
部署(第一次要联网)
1行 CSS 复制下面的 <link> 样式表粘贴到网页 <head> 里面,并放在其它CSS文件之前.
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
3行 JS
全局组件运行在 jQuery 组件上,其中包括 Popper.js 以及系统内置 JavaScript 插件. 建议将 <script>
的结束放在页面的 </body>
之前。
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
注意头部编码地区
头部定义是首要的,否则会导致样式失真。正确中文站点应该用zh-CN。
<!doctype html> <html lang="zh-cn"> ... </html>
盒尺寸
更直观地用BootStrap的尺寸规范(而不受各浏览标准影响),我们把将全局box-sizing
的值由默认的content-box
重定义为border-box
,保证padding
不会影响元素的最后计算宽度。
重置盒尺寸:
.selector-for-some-widget { box-sizing: content-box; }
Container容器
Container容器是窗口布局的最基本元素,我们推荐所有样式都定义在.container
或.container-fluid
容器之中-- 这是启用整个栅格系统必不可少的前置条件,它们分别对应选择一个响应式的、固定宽度的容器,或者选择一个流式自适应浏览器或容器最大合法宽度的窗口(意味着任何时候它的宽度总是100%
)。
Bootstrap原生带三种container宽度规范:
-
.container
, 居中,适配所有的max-width
尺寸。 -
.container-fluid
, 全屏,适配屏幕的width: 100%
尺寸。 -
.container-{断点规格}
(见下表,如.container-sm), 在指定规格断上width: 100%
尺寸。
container在不同的屏幕的 max-width
规范,以及 .container
、 .container-fluid
的断点区别。
All-in-one(一个容器中定义)
默认的.container
class 是一个响应式容器,它有固定宽度和最max-width
设置,并支持响应式断点,应该用它作为整个DIV的最外层容器,如下。
<div class="container"> <!-- 网页内容写在这里面 --> </div>
流式布局
.container-fluid
支持全屏的流式布局,如下使用:
<div class="container-fluid"> ... </div>
使用 .container-fluid
类,可以使div
宽度扩展到整个宽度(如果没有被其它CSS容器包含,则应是浏览器运行时的宽度,否则应是父容器中允许的最大宽度,一般视为100%宽度)。
栅格
网格如何组合在一起。
<div class="container"> <div class="row"> <div class="col-sm">三分之一空间占位</div> <div class="col-sm">三分之一空间占位</div> <div class="col-sm">三分之一空间占位</div> </div> </div>
上面的例子使用BootStrap预定义的栅格系统,演示了在.container
容器内建立了三个等宽的列,并且分别兼容在small(极窄宽度网页)、medium(中等宽度网页)、large(宽网页)、extra large(超宽网页)四种设备类型。
栅格系统提供了集中内容居中、水平填充网页内容的方法
.container
实现固定的宽度并居中呈现,.container-fluid
实现全宽度,并和其它网格实现对齐
行(.row
)是列(.col-*
(.col-*
后面有不同的数字,如.col-sm-4
或.col-xl-12
,这些css类后面的数字用于表明定义div空间想要占用列的数量,每行最多有12列。如果你想用三个等宽的列,则取12的三分之一,即.col-sm-4
就是正确的))的横向组合和父容器(它们有效组织在.row
下),每列都有水平的padding
值,用于控制它们之间的间隔,同时在负边距的行上抵消,从而实现列中的所有内容在视觉上是左侧对齐的体验。
不可以在.col-*
以上添加呈现内容。呈现内容必须放置在列(.col-*
中,而且只有列可以是行的直接子元素,否则都是违法的。
在.container
中置入初始化的四个.col-sm
就能实现各自25%宽度并左对齐形成一行的排列。
.col-*
的width
属性(即列宽)是用百分比来表现和定义的。
列具有水平padding
定义,用于创建列与列之的间隙。
.row
上带有margin-left: -15px;margin-right: -15px;
属性,可以在.row
上上定义.no-gutters
属性,从而消除这个属性,使页面不会额外宽出30px,即<div class="row no-gutters"...
。
总共有五个栅格等级,每个响应式分界点隔出一个等级:特小.col
、小.col-sm-*
、中.col-md-*
、大.col-lg-*
、特大(大、特大也可以称为宽、超宽).col-xl-*
。
.col-sm-4
的的定义可以在小型、中型、宽、超宽设备上呈现,但不适用于能在超小型.col-sx
上呈现
栅格选项
Bootstrap使用ems
或rems
来定义大多数属性的规格大小、px
用于全局层面网格断点和容器宽度(因为浏览器和设备的宽度是以像素px
为单位,且不会随字体大小而变化)。
在Bootstrap 4中,屏幕的大小是真正的“断点”,即如果只定义一个屏幕规格即可向上覆盖所有设备,向下如果没有定义则默认为12栅格占位。
.container 最大宽度 |
None (auto) | 540px | 720px | 960px | 1140px |
类前缀 | .col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
列(column)数 | 12 | 12 | 12 | 12 | 12 |
列间隙 | 30px (每列两侧各15px) |
且都可嵌套,都可排序。
自动布局列
利用栅格断点特性进行排版,可以简化列的大小,而不需要自己手动定义大小。
默认自动将12列平均分配
<div class="container"> <div class="row"> <div class="col"> 1 of 2 </div> <div class="col"> 2 of 2 </div> </div> <div class="row"> <div class="col"> 1 of 3 </div> <div class="col"> 2 of 3 </div> <div class="col"> 3 of 3 </div> </div> </div>
设置一列宽度
在Flexbox的布局上一行多列的情况下,特别指定一列并进行宽度定义,同时其它列自动调整大小。无论中心定义列的宽度如何,其他列都将调整大小。
<div class="container"> <div class="row"> <div class="col"> 1 of 3</div> <div class="col-6"> 2 of 3 (更宽-12格中占6格,其它6格另外两列平分</div> <div class="col"> 3 of 3</div> </div> <div class="row"> <div class="col">1 of 3</div> <div class="col-5"> 2 of 3 (更宽-12格中占5格,其它7格另外两列平分-不论奇偶都能达成)</div> <div class="col"> 3 of 3 </div> </div> </div>
可变宽度的弹性空间
使用 col-{breakpoint}-auto
断点方法,可以实现根据其内容的自然宽度来对列进行大小调整。.
<div class="container"> <div class="row justify-content-md-center"> <div class="col col-lg-2"> 1 of 3 </div> <div class="col-md-auto"> 可变宽度内容自由伸张,左右宽度不变。 </div> <div class="col col-lg-2"> 3 of 3 </div> </div> <div class="row"> <div class="col"> 1 of 3 </div> <div class="col-md-auto"> 可变宽度内容自由伸张,左列宽度变化(右列绑定co-lg-2栅格数) </div> <div class="col col-lg-2"> 3 of 3 </div> </div> </div>
等宽多行,拆分新行
创建跨多个行的等宽列,方法是插入.w-100要将列拆分为新行。通过混合.w-100
一些还可以影响一些显示状态效果,如按钮排序等。
.w100
与.clearfix
有时可以达到同样的网页效果。
响应式的class选择器
可以根据需要定义在特小.col
、小.col-sm-*
、中.col-md-*
、大.col-lg-*
、特大.col-xl-*
五种屏幕(设备)下的样式。
覆盖所有设备
一次性定义从最小设备到最大设备相同的网格系统布局表现,请使用.col
和.col-*
类。后者是用于指定特定大小的(如.col-6
),否则使用.col
就可以了。
可以根据需要对每一个列进行不同的设备定义。
<!-- 定义在超小屏幕下1列全宽、1列半宽,而其它场景以8:4比例并行排列 --> <div class="row"> <div class="col-12 col-md-8">.col-12 .col-md-8</div> <div class="col-6 col-md-4">.col-6 .col-md-4</div> </div>
行列布局
使用 .row-cols-*
类能够定义一个row空间中可放的列数,并支持不同的参数如.col-*
、 .col-md-4
,注意需要要写在 .row
空间之中。
定义每行显示两列:
<div class="container"> <div class="row row-cols-2"> <div class="col">Column</div> <div class="col">Column</div> <div class="col">Column</div> <div class="col">Column</div> </div> </div>
每行显示三列(多余的则换行排列):
<div class="container"> <div class="row row-cols-3"> <div class="col">Column</div> <div class="col">Column</div> <div class="col">Column</div> <div class="col">Column</div> </div> </div>
row-cols-?
行列布局其实是把12列进行平均分配,如果指定了某一列的宽度可能会改变后面的列的位置到下一行
<div class="container"> 定义了每行显示四列 <div class="row row-cols-4"> <div class="col">Column</div> <div class="col">Column</div> 定义这一列宽度为6 <div class="col-6">Column</div> <div class="col">Column</div> </div> </div>
表格对齐
垂直对齐示例
正在上传…重新上传取消
<div class="container"> <div class="row align-items-start"> <div class="col"> 上边贴齐</div> <div class="col"> 上边贴齐 </div> <div class="col"> 上边贴齐s </div> </div> <div class="row align-items-center"> <div class="col"> 上下居中对齐 </div> <div class="col"> 上下居中对齐 </div> <div class="col"> 上下居中对齐 </div> </div> <div class="row align-items-end"> <div class="col"> 下边对齐 </div> <div class="col"> 下边对齐 </div> <div class="col"> 下边对齐 </div> </div> </div>
正在上传…重新上传取消
<div class="container"> <div class="row"> <div class="col align-self-start"> 上边对齐 </div> <div class="col align-self-center"> 上下居中对齐 </div> <div class="col align-self-end"> 下边对齐 </div> </div> </div>
水平对齐
正在上传…重新上传取消
<div class="container"> <div class="row justify-content-start"> <div class="col-4"> 左贴齐对齐 </div> <div class="col-4"> 左贴齐对齐 </div> </div> <div class="row justify-content-center"> <div class="col-4"> 居中贴齐 </div> <div class="col-4"> 居中贴齐 </div> </div> <div class="row justify-content-end"> <div class="col-4"> 右贴齐对齐 </div> <div class="col-4"> 右贴齐对齐 </div> </div> <div class="row justify-content-around"> <div class="col-4"> 间隔相等对齐帖齐 </div> <div class="col-4"> 间隔相等对齐帖齐 </div> </div> <div class="row justify-content-between"> <div class="col-4"> 两端对齐帖齐 </div> <div class="col-4"> 两端对齐帖齐 </div> </div> </div>
间隙沟槽(gutters)清除
Boot Strap默认的栅格和列间有间隙沟槽,一般是左右-15px的margin
或padding
处理,可以使用.no-gutters
类来消除它,这将影响到.row
行、列平行间隙及所有子列。
列换行
如果在一行内子DIV定义的栅格总数超过12列,BootStrap会在保留列完整的前提下,将无法平行布局的多余列,重置到下一行,并占用一个完整的新行。
换行
一般换行推荐使用添加多个.row
来达成,也可以使用系统提供的.w-100
方法处理,思路是强行插入一个width:100%
的DIV进行隔离。
<div class="row"> <div class="col-6 col-sm-3">.col-6 .col-sm-3</div> <div class="col-6 col-sm-3">.col-6 .col-sm-3</div> 在这里插入一个.w-100 <div class="w-100"></div> <div class="col-6 col-sm-3">.col-6 .col-sm-3</div> <div class="col-6 col-sm-3">.col-6 .col-sm-3</div> </div>
重排序
Class顺序重定义
使用 .order-*
class选择符,可以对DIV空间进行 可视化排序,系统提供了.order-1
到.order-12
12个级别的顺序,在五种浏览器和设备宽度上都能生效。
<div class="container"> <div class="row"> <div class="col"> 1号空间-未定义序号,位置不变。 </div> <div class="col order-12"> 2号空间-排最后。 </div> <div class="col order-1"> 3号空间-放第1但受1号空间不变影响居第2位。 </div> 后面的到前面来,需要前面的与后面的顺序同时改变。 </div> </div>
正在上传…重新上传取消
也可以使用.order-first
,快速更改一个顺序到最前面,同时其它元素也相应的获得了order:减1
的属性,这个属性也可以与。.order-*
混合使用。
列偏移
可以使用两种方式进行列偏应: 1、使用响应式的.offset-*
栅格偏移方法。 2、使用边界处理实用程序,它内置了像.ml-*
、.p-*
、.pt-*
等实用排工具。
class偏移选择器
使用.offset-md-*
类可以使列向右偏移,通过定义*
的数字,则可以实现列偏移,如.offset-md-4
则是向右偏移四列。
<div class="bd-example"> <div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div> </div> <div class="row"> <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div> <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div> </div> <div class="row"> <div class="col-md-6 offset-md-3">.col-md-6 .offset-md-3</div> </div> </div>
正在上传…重新上传取消
列嵌套
为了使用内置的栅格系统将内容再次嵌套,可以通过添加一个新的.row
元素和一系列 .col-sm-*
元素到已经存在的 .col-sm-*
元素内。被嵌套的行(row)所包含的列(column)数量推荐不要超过12个。
正在上传…重新上传取消
<div class="row"> <div class="col-sm-9"> Level 1: .col-sm-9 <div class="row"> <div class="col-8 col-sm-6"> Level 2: .col-8 .col-sm-6 </div> <div class="col-4 col-sm-6"> Level 2: .col-4 .col-sm-6 </div> </div> </div> </div>
布局实施
display
块属性定义
display
属性的定义,与系统的栅格系统结合,来决定模块是否显示,甚至进一步属性如 .display-*
,其中*是可以1-12的任意数字。
图像对齐处理
对于.block
属性的块状图片,可以使用 浮动定义规范或 文字对齐规范,来实现对图像的对齐、浮动控制.带.block
块属性的图片,可以自动获得 .mx-auto
的位置对齐属性.
浮动对齐
<img src="..." class="rounded float-left" alt="..."> <img src="..." class="rounded float-right" alt="...">
带d-block属性的块自动获得对齐属性
<img src="..." class="rounded mx-auto d-block" alt="...">
文字对齐
<div class="text-center"> <img src="..." class="rounded" alt="..."> </div>
响应式图片
在Bootstrap中,给图片添加.img-fluid
样式,或定义max-width: 100%
、height:auto;
样式,即可赋得响应式特性,图片大小会随着父元素大小同步缩放。
<img src="..." class="img-fluid" alt="图片不加载时,显示的文字">
标题大小
bootstrap设置标题字体大小
正在上传…重新上传取消
<h1 class="display-1">Display 1</h1> <h1 class="display-2">Display 2</h1> <h1 class="display-3">Display 3</h1> <h1 class="display-4">Display 4</h1>