bootstrap

255 阅读8分钟

这是我参与8月更文挑战的第2天,活动详情查看: 8月更文挑战

Bootstrap

www.bootcss.com/

一、响应式网页

Response web page 响应式网页/自适应
可以根据浏览设备的不同(pc、phone、分辨率、尺寸、横竖屏)
而自动改变页面的布局,文本,图片的大小
不会影响用户浏览体验

测试响应式网页

1.使用真实设备测试
优点:真实可靠
缺点:成本太高,测试周期很长
2.第三方测试软件
优点:测试方便,简单
缺点:很多硬件是测试不了
3.使用浏览器自带的测试软件
优点:简单
缺点:及其不靠谱
4.学习的时候,拖放浏览器尺寸

1.编写响应式网页

1)移动端配置视口

只在pc上运行,可以不配置视口

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">
width=device-width <!--视口宽度为设备宽度-->
initial-scale=1.0 <!--视口初始化时不能缩放-->
maximum-scale=1.0 <!--最大缩放为1倍-->
user-scalable=yes <!--用户可以缩放-->
<!--最简方式-->
<meta name="viewport" content="width=device-width, initial-scale=1">

2)编写响应式

内容,图片尽量用相对单位,不要使用绝对值
多使用弹性布局和流式布局(默认文档流+浮动)

3)媒体查询技术

为一个网页写多份css代码
根据浏览网页的设备不同,执行其中一份css,忽略其他的css代码
媒体查询完成响应式布局,会极大的增加代码量
复杂页面,不建议使用响应式

2.使用媒体查询

@media /*条件1  and  条件2  and 条件3*/{
   #content{width:50%}
   #d1{color:red}
}
@media /*条件4  and  条件5  and 条件6*/{
   #content{width:100%}
   #d1{color:green}
}

媒体查询的条件

1、设备  screen (pc/pad/phone)
        TV
        print
2、屏幕尺寸,约定俗成把所有屏幕尺寸分为5类
    超大屏 xl     v>=1200px      min-width:1200px
    大屏   lg     992px<=v<1200px  min-width:992px and max-width:1199.99px
    中屏   md    768px<=v<992px
    小屏   sm    576px<=v<768px
    超小屏 xs     v<576px

标准响应式写法

/*不要带超小屏*/
@media (min-width:576px){
}
@media (min-width:768px){
}
@media (min-width:992px){
}
@media (min-width:1200px){
}

二、Bootstrap

为了让开发这快速快发,boot把很多样式封装成了类
我们只需要写相对的类名
1、起步---如何使用
2、全局css样式
3、组件和js插件
4、定制sass

1.如何使用boot

/*定义视口*/
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">
/*引入css*/
<link rel="stylesheet" href="css/bootstrap.css">
/*引入三个js,必须按照顺序引入*/
<script src="js/jquery.min.js" ></script>
<script src="js/popper.min.js" ></script>
<script src="js/bootstrap.min.js" ></script>
/*所有的boot代码要求写在div.container中*/

2.全局样式

1)容器

.container 定宽容器,在不同屏幕下都有最大宽度
.container-fuuid 变宽容器,宽度永远是body100%
所有boot代码必须写在容器里

2)按钮相关的class

.btn 基本类,每个按钮必须加
	 行内块,文本,伪类
带颜色的按钮
btn-danger/warning/success/info/primary/secondaty/dark/light
	红/黄/绿/深蓝/浅蓝/浅黑/深黑/灰
镂空按钮
.btn-outline-danger
按钮大小
.btn-lg/sm/block

3)图片相关

rounded 4px圆角
rounded-circle 50%圆角
img-thumbnail 带边框,带内边距的缩略图
img-fluid 响应式图片,可以缩放,但是不能超过图片本身的100%

4)文本相关

文本颜色
text-muted/danger/warning……
大小写,首字符大写
text-uppercase/lowercase/capitalize
字体加粗
font-weight-light/normal/bold
斜体 font-italic
字号 .h1~~.h6
水平对齐方式 text-align:left/center/right/justify
text-*-left/center/right *:sm/md/lg/xl

boot没有封装响应式的justify

5)列表相关

list-unstyled 去点
列表组
ul.list-group
>li.list-group-item
	.list-group-item-danger/info/warning

6)table相关

table 基本类
table-bordered 带边框
table-danger/warning/info…… 表格背景
table-striped 各行变色,在奇数行添加一层0.05的黑纱
table-hover 鼠标悬停时,给tr添加0.075的黑纱

7)辅助类

边框

border/border-top/border-bottom/border-left 基本类
去除边框
border-0/border-top-0/border-right-0/border-left-0/border-bottom-0
边框颜色
border-danger/warning/info……

背景颜色

bg-transparent/white/danger/info……

圆角

rounded 4px的圆角
rounded-circle 50%
rounded-top/right/bottom/left 设置某个方向的两个圆角
rounded-0

浮动

float-*-left/right/none *:sm/md/lg/xl
父元素解决高度坍塌 clearfix

尺寸

w-25/50/75/100
h-25/50/75/100

内外边距

m/mt/mr/mb/ml/mx/my-*-0/1/2/3/4/5/auto
p/pt/pr/pb/pl/px/py-*-0/1/2/3/4/5
*:sm/md/lg/xl
0	0
1	0.25rem
2	0.5rem
3	1rem
4	1.5rem
5	3rem

三、栅格布局

boot封装栅格的目的,就为了简化响应式
栅格布局,把所有的布局看作一行
用列数来标识每一个块占据宽度的大小
一行一共12列

1.语法

div.row
	>div.col-1/2/3/4/5/6/7/8/9/10/11/12
响应时 col-*-1/2/3/4/5/6/7/8/9/10/11/12
	*:sm/md/lg/xl

2.源码解析

.row	弹性,可换行	左右-15px外边距。让div左右变大15px
.no-gutters 清除row的左右-15px的外边距和col的左右+15px的内边距
.col-n	左右+15px内边距 flex:0 0 n/12;

3.不带数字的col

.col
源码	flex-basis:0 基本宽度为0
	flex-grow:1	主轴有多聚空间的时候,把多余空间平局分配给每一个.col
导致不管有多少个.col。都会平均分布主轴空间,直到放不下,换行
特点:1、不按照一行12份来计算
	2、一行的col可以远远超过12

4.栅格的列偏移

offset-*-n	*:sm/md/lg/xl	n:1-11
源码 margin-left

四、弹性布局

d-*-none.block/inline/inline-block/flex
*:sm/md/lg/xl
boot对弹性的封装特别好
d-*-flex
主轴的方向	
flex-*-row	flex-*-row-reverse flex-*-column flex-*-column-reverse
项目是否换行	
flex-*-wrap/nowrap
项目在主轴上的排列方式
justify-content-*-start/center/end/baseline/stretch
项目在交换轴上的排列方式
align-item-*-start/center/end/baseline/stretch
栅格和弹性的关系
只要父元素设置了弹性,x轴左向右的主轴,可换行,就可以当作栅格的row来用

五、关于input的样式

.form-control 	boot为文本框封装的样式

组件

在项目中有很多样式特效和js特效
通过样式和自定义属性方式,把特效进行了封装
只要我们把类名和自定义属性写对,就能完成特效
boot封装的特效,样式和功能都是有限的
boot使用自定义属性的方式,来调用封装好的js特效
1、哪个元素激活方式
2、方法影响的是哪个元素

1.按钮组

把多个按钮,放在一个组里显示
div.btn-group	弹性,x轴 水平按钮组
	>a.btn
	
.btn-group-vertical 弹性,y轴 垂直按钮组
.btn-group-lg/sm 设置按钮组大小

2.下拉菜单

结构:
div.dropdown	相对定位
	>btn.dropdown-toggle	添加一个向下的小按钮
	+ul.dropdown-menu	隐藏
事件
1、哪个元素激活方式,按钮 data-toggle=“dropdown"
2、方法影响的是哪个元素,由于在同一个父元素结构下,不需要写时间影响的目标

3.信息提示框

结构
div.alert	基本类
	.alert-danger/warning……	提示框的颜色
	.alert-dismissible	让后代.close颜色与背景色匹配
	>.close	小叉叉
事件
1、哪个元素激活方式 小叉子 data-dismiss="alert"
2、方法影响的是哪个元素	不需要定义目标元素

4.导航

1)水平导航

ul.nav	弹性,x轴
	>li.nav-item
		>a.nav-link

2)选项卡导航

ul.nav.nav-tabs	让内部所有的nav-link变成选项卡的样式
	>li.nav-item
		>a.nav-link	被选中.active
div.tab-content
	>div.tab-pane	与tab-content配合,隐藏
事件
1、触发事件的元素	a	data-toggle="tab"
2、目标元素 div.tab-panea中绑定,事件目标herf="#目标id"

3)胶囊导航

ul.nav.nav-pills
	>li.nav-item
		>a.nav-link
div.tab-content
	>div.tab-pane
事件
1、触发事件的元素 a	data-toggle="pill"
2、目标元素 div.tab-panea标签中绑定 事件目标 href="#目标id"

5.响应式导航栏

div.navbar 相对定位,弹性,x轴,主轴两端对齐,交叉轴居中
	.navbar-expand-sm/md/lg/xl
		如果这个选择器成立,那么他的儿子navbar-nav的主轴变成x轴
		如果不成立,他的儿子navbar-nav的主轴是默认的y轴
>ul.navbar-nav 弹性,y轴
	>li.nav-item
		>a.nav-link

6.折叠效果

.btn
div.collapse 隐藏
事件
1、激发事件的元素	.btn data-toggle="collapse"
2、事件目标 div 在btn中data-target="#div的id"

7.卡片

div.card
	>div.card-header
	+div.card-body
	+div.card-footer

8.折叠导航栏

div.navbar
	.navbar-dark	让内部3个部分的文本,都变为浅色
	.bg-dark
	.navbar-expand-lg	1、让按钮在lg以上隐藏,在lg以下显示
						2、让ul在lg以上横向,在lg以下纵向
						3.让div.navbar-collapse在lg以上显示,在lg以下隐藏
>a.navbar-brand	被父元素navbar-dark设置为浅色
+button.navbar-toggler	配合父元素navbar-expand-lg 让按钮在lg以上隐藏,lg以下显示
	>span.navbar-toggle-icon 被父元素navbar-dark设置为浅色
+div.collapse display:none	隐藏
	.navbar-collapse	配合navbar-expand-lg,在lg以上显示,lg以下隐藏

9.徽章

基本类 .badge
颜色	badge-danger/warning/info
胶囊徽章 badge-pill

10.巨幕

jumpotron	巨大的内边距,带背景色

11.面包屑导航

ul.breadcrumb
>li.breadcrumb-item
	>a

12.分页条

ul.pagination	弹性,x轴
	>li.page-item	让第一个li内部的a标签有左上,左下圆角
					让最后一个li内部的a标签有右上,右下圆角

13.焦点轮播图

div.carousel
	>div.carousel-inner w100 溢出隐藏
		>div.carousel-item	display:none;w100
			.active	显示
		>img.w-100
第一部分的事件,在最外层添加data-ride="carousel"
这个事件,可以让图片显示,同时让轮播指示器的点跟着图片动

轮播指示器,与carousel-inner平级

ul.carousel-indicators
	>li	第一个li添加.active
事件:
	1、激活事件的元素 li data-slide-to="n" n对应图片,以0开头
	2、事件影响的目标	li绑定最外层div.carousel的id data-target="#demo"

左右箭头

a.carousel-control-next/prev
	>span.carousel-control-next/prev-icon
事件:
	1、激活事件的元素	a data-slide="prev/next"
	2、事件影响的目标元素	 a的href中绑定最外层div.carousel的id href="#demo"

14.进度条

div.progress	定义进度条的槽
	>div.progress-bar	定义进度条
		.w-100	定义进度
		.bg-secondary	定义背景色
		.progress-bar-striped	带条纹的进度条
		.progress-bar-animated	条纹动画进度条