配置
下载官方bootstrap4与jquery官方文件,在html的head中将框架js与css设置进来,当然也可以导入在线CDN,下载下来我自己感觉会方便一点。
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="Chrome">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="" />
<!-- <link rel="shortcut icon" href=""> -->
<!--这里需要先link一下CSS文件再导入JS文件-->
<link rel="stylesheet" href="lib/bootstrap-4.4.1-dist/css/bootstrap.min.css">
<!--我将CSS设置文件命名为style.css-->
<link rel="stylesheet" href="style.css">
<script src="lib/jquery-3.4.1.min.js"></script>
<script src="lib/bootstrap-4.4.1-dist/js/bootstrap.js"></script>
</head>
<body></body>
<!--注意:将自定义js文件放到body之后的位置,我也说不好为什么这样但是这样会稳一点。我将JS设置文件命名为script.js-->
<script src="script.js" charset="utf-8"></script>
布局容器Container
在Bootstrap下,Container是一种根据设备当前宽度适配不同大小的容器,来方便对页面的栅格系统进行操作。
使用方法:class设置成“container xxx”即可,如不需要离散设置容器宽可以设置成浮动容器“container-fluid xxx”,让宽度一直在100%
<body>
<div class="container demo">
<h1>Hello</h1>
</div>
</body>
Chrome点击F12(检查),左上角的手机图标,即可进入Responsive设置界面设置当前界面宽度等相关内容
设置时会有540px,720px这样的离散适配变化,而container-fluid设置时直接将容器最大宽度设置成当前浏览器的100%宽度,平滑变化
网格系统
特点
在BootStrap中采用了FlexBox的布局模式,因此在布局时,row和col都是自动布全并填满,这样形成一种网格布局,便于对不同位置进行操作,其形式比较像桌面级程序的Grid布局模式
在div块级元素上使用row与col类进行操作,其中由于FlexBox布局设置,col都是同等地位的div,因此在一行均分宽度显示
<body>
<div class="container demo">
<div class="row">
<div class="col"><span>1</span></div>
<div class="col"><span>2</span></div>
<div class="col"><span>3</span></div>
<div class="col"><span>4</span></div>
<div class="col"><span>5</span></div>
<div class="col"><span>6</span></div>
<div class="col"><span>7</span></div>
<div class="col"><span>8</span></div>
<div class="col"><span>9</span></div>
<div class="col"><span>10</span></div>
<div class="col"><span>11</span></div>
<div class="col"><span>12</span></div>
</div>
</div>
</body>
如果不使用网格布局,效果则是这样的
Bootstrap网格系统按照12网格系统进行设置,也就是说一行会等分成12个单位格
单个单元格宽度设置
如果某个单元格需要较大宽度,可直接在col类上赋值,如 “col-7” ,剩下的单元格均分剩下的容器宽
<div class="container demo">
<div class="row">
<div class="col-7"><span>1</span></div>
<div class="col"><span>2</span></div>
<div class="col"><span>3</span></div>
</div>
</div>
如果在一行上设置的宽度单位大于12,则多的那个col设置在下一行显示
<div class="col-7"><span>1</span></div> <div class="col-4"><span>2</span></div> <div class="col-3"><span>3</span></div>
相对位置设置
垂直设置
如果需要设置单行内容在自己布局中的相对垂直位置,可以在row类中加入偏移设置量align-items-xxx,默认顶部对齐,相当于 “align-items-start”,若需要修改,有 “align-items-center”,“align-items-end” 其他两种对齐方式
.container.demo .row{
background: #033d21;
border-bottom: 1px solid #000;
height: 30vh;
}
<div class="container demo">
<div class="row align-items-end">
<div class="col"><span>1</span></div>
<div class="col"><span>2</span></div>
<div class="col"><span>3</span></div>
</div>
</div>
align-items-start
align-items-center
align-items-end
如果需要设置单个单元格在其容器的相对位置,可以在col类中使用"align-self-xxx"参数,且由于其指向范围相对行设置较小,其优先级也比"align-items-xxx"高
<div class="container demo">
<div class="row align-items-end">
<div class="col align-self-center"><span>1</span></div>
<div class="col"><span>2</span></div>
<div class="col"><span>3</span></div>
</div>
</div>
水平设置
和垂直一样,行水平位置设置需要在row中使用特殊类 “justify-content-xxx” ,其中默认为左对齐,即"justify-content-start",其他还有"justify-content-center"居中,"justify-content-end"右对齐
<div class="container demo">
<div class="row justify-content-center">
<div class="col-4"><span>1</span></div>
<div class="col-4"><span>2</span></div>
</div>
</div>
justify-content-start
justify-content-center
justify-content-end
此外,如果想让剩余空间在两个单元格的中间,可以使用"justify-content-between"
想让剩余空间均分到两个单元格周围的话可以使用"justify-content-around"
注意:水平位置与垂直位置设置可以重复设置且不冲突
显示排序
直接下标指定
针对同等地位的元素,如在同一行的所有col,可以通过类 “order-number” 设置来设置其显示的前后顺序,如"order-3"
<div class="container demo">
<div class="row justify-content-around">
<div class="col order-3"><span>1</span></div>
<div class="col order-2"><span>2</span></div>
<div class="col order-1"><span>3</span></div>
</div>
</div>
通过指定会发现,我们重新设置了3->2->1这样的一个顺序显示
order-number的数字指定最大值为12,因为Bootstrap为12网格的原因
相对偏移指定
如果想要让单元格在自己本身位置上进行一定的偏移,可以使用offset类"offset-number"
<div class="container demo">
<div class="row">
<div class="col-4"><span>1</span></div>
<div class="col-4"><span>2</span></div>
</div>
</div>
使用offset之后
<div class="container demo">
<div class="row">
<div class="col-4 offset-2"><span>1</span></div>
<div class="col-4 offset-2"><span>2</span></div>
</div>
</div>
响应式布局
bootstrap使用了五种栅格选项来形成栅格系统,适合不同尺寸的屏幕设备。
col-xs-* (extra small)超小屏幕 手机 (<576px) (在bootstrap4里面用col-)
col-sm-* (small)小屏幕 平板 (≥576px)
col-md-* (medium中等屏幕 桌面显示器(≥768px)
col-lg-* (large)中等屏幕 桌面显示器 (≥992px)
col-xl-* (extra large)超大桌面显示器(≥1200px)(只有bootstrap4里面有xl)
在Chrome中F12->左上角屏幕设置按钮,可以进入屏幕设置界面,在上栏会有尺寸信息栏
如果在类中使用上述参数设置,可以让单元格在大于设置阈值的时候正常分开显示,小于时叠加显示,在这里以sm(small)为例,阈值是576px
<div class="container demo">
<div class="row">
<div class="col-sm"><span>1</span></div>
<div class="col-sm"><span>2</span></div>
<div class="col-sm"><span>3</span></div>
<div class="col-sm"><span>4</span></div>
</div>
</div>
其后跟上数字,可以设置每个单元格的大小,如设置"col-sm-6",其每个单元格大小就是6个网格宽,在大于576px的时候每行只能显示两个
<div class="container demo">
<div class="row">
<div class="col-sm-6"><span>1</span></div>
<div class="col-sm-6"><span>2</span></div>
<div class="col-sm-6"><span>3</span></div>
<div class="col-sm-6"><span>4</span></div>
</div>
</div>
在不同屏幕尺寸的显示设置可以同时设置,如下面的"col-sm-6 col-lg-3"就是在sm与md时每行显示2行,在lg与xl时每行显示4个
<div class="container demo">
<div class="row">
<div class="col-sm-6 col-lg-3"><span>1</span></div>
<div class="col-sm-6 col-lg-3"><span>2</span></div>
<div class="col-sm-6 col-lg-3"><span>3</span></div>
<div class="col-sm-6 col-lg-3"><span>4</span></div>
</div>
</div>