1 CSS3 新增长度单位
rem根元素字体大小的倍数,只与根元素字体大小有关。vw视口宽度的百分之多少。如 10vw就是视口宽度的 10% 。vh视口高度的百分之多少。如 10vh就是视口高度的 10% 。vmax视口宽高中大的那个的百分之多少。(了解即可)vmin视口宽高中小的那个的百分之多少。(了解即可)
2 CSS3 新增颜色设置方式
CSS3 新增了三种颜色设置方式,分别是: rgba 、 hsl 、 hsla 。
3 CSS3 新增选择器
CSS3 新增的选择器有:动态伪类、目标伪类、语言伪类、 UI 伪类、结构伪类、否定伪类、伪元素;这些在 CSS2 中已经详细讲解,此处略过。
4 CSS3 新增盒子模型相关属性
4.1 box-sizing怪异盒模型
4.2 resize允许用户调整盒子大小
注意:要与
overflow连用才能生效。
4.3 box-shadow为盒子设置阴影
内延与外延的区别?
- 内延,是指影子盒子把元素盒子往里压。
- 外延,是指元素盒子把影子盒子往外挤。
4.4 不透明度
opacity 属性能为整个元素添加透明效果, 它的值是 0 ~ 1之间的小数, 0 是完全透明, 1 表示完全不透明。
opacity 与 rgba 的区别?
opacity是一个属性,设置的是整个元素(包括元素里的内容)的不透明度。rgba是颜色的设置方式,用于设置颜色,它的透明度,仅仅是调整颜色的透明度。
5 CSS3 新增背景相关属性
5.1 背景原点
-
属性:
background-origin -
作用:设置背景图的原点。
-
语法:
padding-box:从padding区域开始显示背景图像。—— 默认值border-box: 从border区域开始显示背景图像。content-box: 从content区域开始显示背景图像
-
效果:
-
注意: 默认以左上角为原点,如果背景图面积小于容器面积,则会自动以类似“铺砖”的方式平铺整个盒子,比如垂直方向进行平铺的某张图片因面积大难以完全放下,就会自动拆分成2部分,将其中一部分放置于原地方平铺,另外一部分就放置于盒子垂直方向的最上面。水平方向的平铺也是同理。
5.2 背景剪切
- 属性:
background-clip - 作用:设置背景图的向外裁剪的区域。
- 语法:
border-box: 从border区域开始向外裁剪背景。padding-box:从padding区域开始向外裁剪背景。—— 默认值content-box: 从content区域开始向外裁剪背景。text:背景图只呈现在文字上。(需要让字体颜色变成全透明,即设置字体为color:transparent;)
- 注意:若值为
text,那么backgroun-clip要加上-webkit-前缀。
5.3 背景尺寸
- 属性:
background-size - 作用:设置背景图的尺寸。
- 语法:
- 用长度值指定背景图片大小,不允许负值。
background-size: 300px 200px; - 用百分比指定背景图片大小,不允许负值。
background-size: 100% 100%; auto: 背景图片的真实大小。 (默认值)contain: 将背景图片等比缩放,使背景图片的宽或高,与容器的宽或高相等,再将完整背景图片包含在容器内,但可能会造成容器里部分区域没有背景图片。background-size: containcover:将背景图片等比缩放,直到完全覆盖容器,图片会尽可能全的显示在元素上,但背景图片有可能显示不完整。(相对比较好的选择)background-size: cover
- 用长度值指定背景图片大小,不允许负值。
5.4 背景固定
- 属性:
background-position - 作用:背景不会随着元素的内容滚动。
- 语法:
- 属性值
fixed:可以让背景图固定,background-attachment: fixed;
- 属性值
5.5 背景属性复合写法
- 语法:
background: color url repeat position / size origin clip - 注意:
origin和clip的值若一样,可以只写一个值,表示origin和clip都设置;如果设置了两个值,前面的值是origin,后面的值是clip。size的值必须写在position值的后面,并且用/分开。
5.6 多背景图
- 语法:使用
background包裹具体的背景属性复合写法,多个具体的背景属性复合写法用,隔开; - 案例:
background: url(../images/bg-lt.png) no-repeat,
url(../images/bg-rt.png) no-repeat right top,
url(../images/bg-lb.png) no-repeat left bottom,
url(../images/bg-rb.png) no-repeat right bottom
6 CSS3新增边框属性
6.1 边框圆角
-
属性:
border-radius -
作用:可以将盒子变为圆角。
-
语法:
-
综合: 给每一个角设置圆角的综合写法:
border-raidus: 左上角x 右上角x 右下角x 左下角x / 左上y 右上y 右下y 左下y(几乎不用) -
通用:
border-radius:数字➕单位 / 百分比(给边框的四个角设置圆角)
技巧:从左上角开始顺时针赋值,当前角没有数值则与对角取值相同。
- 特殊:给每一个角设置圆角。
-
- 原理:以圆的半径作为属性值画个圆,与盒子四个角相切。
-
应用
- 正圆形状:给正方形盒子设置圆角属性值为 宽高的一半 / 50%
img { width: 200px; height: 200px; border-radius: 100px; border-radius: 50%; }-
胶囊形状:给长方形盒子设置圆角属性值为 盒子高度的一半
div { width: 200px; height: 80px; background-color: orange; border-radius: 40px; }
6.2 外轮廓
outline-width:外轮廓的宽度。outline-color:外轮廓的颜色。outline-style:外轮廓的风格。none: 无轮廓dotted: 点状轮廓dashed: 虚线轮廓solid: 实线轮廓double: 双线轮廓
outline-offset设置外轮廓与边框的距离,正负值都可以设置。 注意: outline-offset 不是 outline 的子属性,是一个独立的属性。outline复合属性outline:50px solid blue;
7 CSS3 新增文本属性
7.1 文本阴影
-
属性:
text-shadow -
用法:给文本添加阴影。(实际上是用来做艺术字,让字体显示白色,添加一个模糊值较大的黑色文本阴影即可。)
-
语法:
text-shadow: h-shadow v-shadow blur color -
注意:默认值
text-shadow:none表示没有阴影。
7.2 文本换行
-
属性:
white-space -
用法:设置文本换行方式。
-
语法:
-
注意:值
pre-wrap只是忽略行首空格以及行尾空格。
7.3 文本溢出
-
属性:
text-overflow -
用法:设置文本内容溢出时的呈现模式。
-
语法:
-
注意:要使得
text-overflow属性生效,块容器必须显式定义overflow为非visible值,white-space为nowrap值。
7.4 文本修饰
- 属性:
text-decoration(CSS将其升级为复合属性) - 作用:给文本增加下划线、上划线以及贯穿线。
- 语法:
text-decoration-line设置文本装饰线的位置none: 指定文字无装饰 (默认值)underline: 指定文字的装饰是下划线overline: 指定文字的装饰是上划线line-through: 指定文字的装饰是贯穿线
text-decoration-style文本装饰线条的形状solid: 实线 (默认)double: 双线dotted: 点状线条dashed: 虚线wavy: 波浪线
text-decoration-color文本装饰线条的颜色
7.5 文本描边
- 语法:
-webkit-text-stroke-width:设置文字描边的宽度,写长度值。-webkit-text-stroke-color:设置文字描边的颜色,写颜色值。-webkit-text-stroke:复合属性,设置文字描边宽度和颜色。
- 作用:可以用来做空心文字(必须给文字颜色设置为
color:transparent)
8 CSS新增渐进属性值
渐变是多个颜色逐渐变化的效果,一般用于设置盒子背景。
8.1 线性渐变
- 语法:
background-image: linear-gradient( 渐变方向, 颜色1 终点位置, 颜色2 终点位置, ...... ); - 应用:
-
默认渐变:多个颜色之间的渐变, 默认从上到下渐变。
-
使用关键词设置线性渐变的方向。
-
使用角度设置线性渐变的方向。(实际上是逆时针转动,值
0deg等于向上(to top)。值90deg等于向右(to right)。值180deg等于向下(to bottom)) -
调整渐变的位置(设置的位置实质上是纯色位置,若纯色位置前没有其它颜色,则纯色位置前都是纯色;反之,则由纯色位置前的颜色渐变为该纯色。)
-
8.2 径向渐变
- 语法:
background-image: radial-gradient( 半径 at 圆心位置, 颜色1 终点位置, 颜色2 终点位置, .......)(半径可以是2条,则为椭圆;圆心位置取值:像素单位数值 / 百分比 / 方位名词。) - 应用:
-
默认渐变:多个颜色之间的渐变, 默认从圆心四散。(注意:不一定是正圆,要看容器本身宽高比)
-
使用关键词调整圆心
background-image: radial-gradient(at right top,red,yellow,green); -
使用像素值调整圆心。
-
调整渐变形状为正圆 。
-
调整形状的半径。
-
调整开始渐变的位置(渐变位置是沿着半径做圆周运动的弧线)。
-
8.3 重复渐变
- 概念:无论线性渐变,还是径向渐变,在没有发生渐变的位置,继续进行渐变,就为重复渐变。(重复的意思是把原有结构再写一遍。)
- 语法:
- 使用
repeating-linear-gradient进行重复线性渐变,具体参数同linear-gradient。 - 使用
repeating-radial-gradient进行重复径向渐变,具体参数同radial-gradient。
- 使用
- 应用:我们可以利用渐变,做出很多有意思的效果:例如:横格纸、立体球等等。
9 Web字体(暂时不写)
-
概念:
@font-face -
作用:指定字体的具体地址,浏览器会自动下载该字体,这样就不依赖用户电脑上的字体了。
-
语法:
- 简写方式
@font-face { font-family: "情书字体"; src: url('./方正手迹.ttf'); }- 兼容方式
@font-face { font-family: "atguigu"; font-display: swap; src: url('webfont.eot'); /* IE9 */ src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('webfont.woff2') format('woff2'), url('webfont.woff') format('woff'), /* chrome、firefox */ url('webfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android*/ url('webfont.svg#webfont') format('svg'); /* iOS 4.1- */ } -
应用:
- 定制字体:由于中文的字体文件很大,使用完整的字体文件不现实,通常针对某几个文字进行单独定制。 可使用阿里 Web 字体定制工具: www.iconfont.cn/webfont
- 字体图标:
- ①相比图片更加清晰。
- ②灵活性高,更方便改变大小、颜色、风格等。
- ③ 兼容性好, IE 也能支持。
10 2D变换
transform是实现2D变换的属性,对行内元素不起作用.要让行内元素进行2D变换,可以把行内元素的显示模式变成块级元素或者行内块元素。
2D变换的坐标系,如下图所示:
10.1 2D位移
注意:参考的坐标轴原点就是元素盒子起初位置的左上角
10.2 2D缩放
注意: 元素缩放的本质是参照元素的中心点为坐标原点,将增加的大小平均分摊给原元素的宽或高的两侧。其实,负值就是把元素盒子调换个方向,增加相应大小。
10.3 2D旋转
注意: 旋转的中心点为对称轴的交点
10.4 2D扭曲(了解)
10.5 2D多重变换
10.6 2D变换之变换原点
11 3D变换
11.1 开启3D空间
11.2 设置景深
注意: 以产生变换的元素的高度的一半为基准,进行增加以及减少。
11.3 设置透视点位置
注意: 透视点位置设置给父元素。
11.4 3D位移
11.5 3D旋转
3D 旋转是在 2D 旋转的基础上,可以让元素沿 x 轴和 y 轴旋转,具体使用方式如下:
- 先给元素添加 转换属性
transform - 编写
transform的具体值,3D相关可选值如下:
11.6 3D缩放
11.7 多重变换
11.8 背部可见性
12 过渡
过渡可以在不使用 Flash 动画,不使用 JavaScript 的情况下,让元素从一种样式,平滑过渡为另一 种样式。
12.1. 过渡属性
-
属性:
transition-property -
作用:定义哪个属性需要过渡,只有在该属性中定义的属性(比如宽、高、颜色等)才会以有过渡 效果。
-
常用值:
none:不过渡任何属性。all:过渡所有能过渡的属性。具体某个属性名,例如:width、heigth,若有多个以逗号分隔。
⚠注意:
- 不是所有的属性都能过渡,值为数字,或者值能转为数字的属性,都支持过渡,否则不支持 过渡。
- 常见的支持过渡的属性有:颜色、长度值、百分比、
z-index、opacity、2D变换属 性、3D变换属性、阴影。
12.2 过渡持续时间
- 属性:
transition-duration - 作用:设置过渡的持续时间,即:一个状态过渡到另外一个状态耗时多久。
- 常用值:
0:没有任何过渡时间 —— 默认值。s或ms:秒或毫秒。列表:- 如果想让所有属性都持续一个时间,那就写一个值。
- 如果想让每个属性持续不同的时间那就写一个时间的列表。
12.3. 过渡开始延迟时间
- 属性:
transition-delay - 作用:指定开始过渡的延迟时间,单位:
s或ms
12.4 过渡出场方式
- 属性:
transition-timg-function - 常用值:
ease: 平滑过渡 —— 默认值linear: 线性过渡ease-in: 慢 → 快ease-out : 快 → 慢ease-in-out: 慢 → 快 → 慢step-start: 等同于steps(1, start)(直接抵达终点,不经历过渡时间)step-end: 等同于steps(1, end)(待过渡时间完了,再抵达终点)steps( integer,?): 接受两个参数的步进函数。第一个参数必须为正整数,指定函数的 步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个 参数默认值为end。实际上等价于steps(移动步数,抢跑或者缓跑)cubic-bezie ( number, number, number, number): 特定的贝塞尔曲线类型。 在线制作贝赛尔曲线: cubic-bezier.com
12.5 过渡复合属性
若设置了一个时间,表示 duration ;若设置了两个时间,第一个是 duration ,第二个是 delay ;其他值没有顺序要求。具体模板,如下代码所示:transition:1s 1s linear all; all为默认值可以省略。
13 动画
13.1 什么是动画帧?
一段动画,就是一段时间内连续播放 n 个画面。每一张画面,我们管它叫做“帧”。一定时间内连续 快速播放
13.2 什么是关键帧?
关键帧指的是,在构成一段动画的若干帧中,起到决定性作用的 2-3 帧。
13.3 动画的基本使用
-
第1步:定义关键帧(定义动画)
- 简单方式定义
/*写法一*/ @keyframes 动画名 { from { /*property1:value1*/ /*property2:value2*/ } to { /*property1:value1*/ } }- 完整方式定义
@keyframes 动画名 { 0% { /*property1:value1*/ } 20% { /*property1:value1*/ } 40% { /*property1:value1*/ } 60% { /*property1:value1*/ } 80% { /*property1:value1*/ } 100% { /*property1:value1*/ } } -
第2步:给元素应用动画,用到的属性如下:
animation-name:给元素指定具体的动画(具体的关键帧)animation-duration:设置动画所需时间animation-delay:设置动画延迟
.box { /* 指定动画 */ animation-name: testKey; /* 设置动画所需时间 */ animation-duration: 5s; /* 设置动画延迟 */ animation-delay: 0.5s; }
13.4 动画的其他属性
-
animation-timing-function,设置动画的类型,常用值如下:ease: 平滑动画 —— 默认值linear: 线性过渡ease-in: 慢 → 快ease-out: 快 → 慢ease-in-out: 慢 → 快 → 慢step-start: 等同于steps(1, start)step-end: 等同于steps(1, end)steps( integer,?): 接受两个参数的步进函数。第一个参数必须为正整数,指定 函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间 点。第二个参数默认值为end。cubic-bezie ( number, number, number, number): 特定的贝塞尔曲线类型。
-
animation-iteration-count,指定动画的播放次数,常用值如下:number:动画循环次数infinite: 无限循环
-
animation-direction,指定动画方向,常用值如下:normal: 正常方向 (默认)reverse: 反方向运行alternate: 动画先正常运行再反方向运行,并持续交替运行alternate-reverse: 动画先反运行再正方向运行,并持续交替运行
-
animation-fill-mode,设置动画之外的状态,常用值如下:forwards: 设置对象状态为动画结束时的状态backwards: 设置对象状态为动画开始时的状态
-
animation-play-state,设置动画的播放状态,常用值如下:running: 运动 (默认)paused: 暂停
13.5 动画复合属性
只设置一个时间表示 duration ,设置两个时间分别是: duration 和 delay ,其他属性没有数量和 顺序要求。
.inner {
animation: guigu 3s 0.5s linear 2 alternate-reverse forwards;
}
备注:
animation-play-state一般单独使用。
14 多列布局
常用属性如下:
- 对容器设置的属性:
column-count:指定列数,值是数字。column-width:指定列宽,值是长度。columns:同时指定列宽和列数,复合属性;值没有数量和顺序要求。column-gap:设置列边距,值是长度。column-rule-style:设置列与列之间边框的风格,值与 border-style 一致。column-rule-width:设置列与列之间边框的宽度,值是长度。column-rule-color:设置列与列之间边框的颜色。coumn-rule:设置列边框,复合属性。
- 对元素设置的属性:
column-span指定是否跨列;值:none、all。
15 伸缩盒子模型
15.1 伸缩盒模型简介
2009年,W3C提出了一种新的盒子模型 ——Flexible Box(伸缩盒模型,又称:弹性盒 子)。- 它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉顺序 .......
- 截止目前,除了在部分
IE浏览器不支持,其他浏览器均已全部支持。 - 伸缩盒模型的出现,逐渐演变出了一套新的布局方案 ——
flex布局。
小贴士:
- 传统布局是指:基于传统盒状模型,主要靠:
display属性 +position属性 +float属性。flex布局目前在移动端应用比较广泛,因为传统布局不能很好的呈现在移动设备上。
15.2 伸缩盒子模型组成
-
设置方式:给父元素设置 display: flex,子元素可以自动挤压或拉伸
-
组成部分:
- 伸缩容器
- 伸缩项目
- 主轴:默认在水平方向
- 侧轴 / 交叉轴:默认在垂直方向
15.3 伸缩容器、伸缩项目
- 伸缩容器: 开启了
flex的元素,就是 伸缩容器。- 给元素设置:
display:flex或display:inline-flex,该元素就变为了伸缩容器。 display:inline-flex很少使用,因为可以给多个伸缩容器的父容器,也设置为伸缩 容器。- 一个元素可以同时是:伸缩容器、伸缩项目。
- 给元素设置:
- 伸缩项目:伸缩容器所有子元素自动成为了 伸缩项目。
- 仅伸缩容器的子元素成为了伸缩项目,孙子元素、重孙子元素等后代,不是 伸缩项目。
- 无论原来是哪种元素(块、行内块、行内),一旦成为了伸缩项目,全都会 “块状化”。
15.4 主轴与侧轴
- 主轴: 伸缩项目沿着主轴排列,主轴默认是水平的,默认方向是:从左到右(左边是起点,右边 是终点)。
- 侧轴: 与主轴垂直的就是侧轴,侧轴默认是垂直的,默认方向是:从上到下(上边是起点,下边 是终点)。
15.5 主轴方向
- 属性名:
flex-direction - 常用值如下:
-
row:主轴方向水平从左到右 —— 默认值 -
row-reverse:主轴方向水平从右到左。 -
column:主轴方向垂直从上到下。 -
column-reverse:主轴方向垂直从下到上。
-
注意:改变了主轴的方向,侧轴方向也随之改变。
15.6 主轴换行方式
-
属性名:
flex-wrap -
常用值如下:
nowrap:默认值,不换行。wrap:自动换行,伸缩容器空间不够,将自动换行。wrap-reverse:反向换行。
-
注意:
- 默认不换行,会自动伸缩元素大小。
- 子元素如果数量比较少,换行后的元素会均匀占据剩余的空间。
- 默认不换行,会自动伸缩元素大小。
15.7. flex-flow
flex-flow 是一个复合属性,复合了 flex-direction 和 flex-wrap 两个属性。 值没有顺序要求。实例代码,如下所示:
flex-flow: row wrap;
15.8. 主轴对齐方式
- 属性名:
justify-content - 常用值如下:
flex-start:主轴起点对齐。—— 默认值flex-end:主轴终点对齐。center:居中对齐。space-between:均匀分布,两端对齐(最常用)。space-around:均匀分布,两端距离是中间距离的一半。space-evenly:均匀分布,两端距离与中间距离一致。
15.9 侧轴对齐方式
15.9.1 一行的情况
- 所需属性:
align-items - 常用值如下:
-
flex-start:侧轴的起点对齐。 -
flex-end:侧轴的终点对齐。 -
center:侧轴的中点对齐。 -
baseline: 伸缩项目的第一行文字的基线对齐。 -
stretch:如果伸缩项目未设置高度,将占满整个容器的高度。(stretch为默认值,要使它生效,必须使所有伸缩项目均没有高度,才能把每个伸缩项目拖拽得合适距离。)
-
15.9.2 多行的情况
- 所需属性:
align-content - 常用值如下:
-
flex-start:与侧轴的起点对齐。 -
flex-end:与侧轴的终点对齐。 -
center:与侧轴的中点对齐。 -
space-between:与侧轴两端对齐,中间平均分布。 -
space-around:伸缩项目间的距离相等,比距边缘大一倍。 -
space-evenly: 在侧轴上完全平分。 -
stretch:占满整个侧轴。(stretch为默认值,要使它生效,必须使所有伸缩项目均没有高度,才能把每个伸缩项目拖拽得合适距离。)
-
注意:该属性对单行弹性盒子模型无效。
15.10 flex 实现水平垂直居中
方法一:父容器开启 flex 布局,随后使用 justify-content 和 align-items 实现水平垂直居中
.outer {
width: 400px;
height: 400px;
background-color: #888;
display: flex;
justify-content: center;
align-items: center;
}
.inner {
width: 100px;
height: 100px;
background-color: orange;
}
方法二:父容器开启 flex 布局,随后子元素 margin: auto
.outer {
width: 400px;
height: 400px;
background-color: #888;
display: flex;
}
.inner {
width: 100px;
height: 100px;
background-color: orange;
margin: auto;
}
15.11 伸缩性
15.11.1 flex-basis
- 概念:
flex-basis设置的是主轴方向的基准长度,若主轴为水平方向,就会覆盖宽度,让宽度失效;若主轴为垂直方向,就会覆盖高度,让高度失效。 - 备注:主轴横向:宽度失效;主轴纵向:高度失效 。
- 作用:浏览器根据这个属性设置的值,计算主轴上是否有多余空间,默认值
auto,即:伸缩项目的宽或高。
15.11.2 flex-grow(伸)
- 概念:
flex-grow定义伸缩项目的放大比例,默认为0,即:纵使主轴存在剩余空间,也不拉伸 (放大)。 - 规则:
- 若所有伸缩项目的
flex-grow值都为1,则:它们将等分剩余空间(如果有空间的话)。 - 若三个伸缩项目的
flex-grow值分别为:1 、 2 、 3,则:分别瓜分到:1/6 、 2/6 、 3/6的空间。
- 若所有伸缩项目的
15.11.3 flex-shrink(缩)
- 概念:
flex-shrink定义了项目的压缩比例,默认为1,即:如果空间不足,该项目将会缩小。(要实现拉伸,得将flex-wrap设置nowrap;浏览区以实际内容区分,且缩的极限是内容实际大小) - 注意: 收缩项目的计算,略微复杂一点,我们拿一个场景举例:
例如: 三个收缩项目,宽度分别为:
200px、300px、200px,它们的flex-shrink值分别 为:1 、 2 、 3
若想刚好容纳下三个项目,需要总宽度为700px,但目前容器只有400px,还差300px所以每个人都要收缩一下才可以放下,具体收缩的值,这样计算:
- 计算分母:
(200×1) + (300×2) + (200×3) = 1400- 计算比例:
- 项目一:
(200×1) / 1400 = 比例值1- 项目二:
(300×2) / 1400 = 比例值2- 项目三:
(200×3) / 1400 = 比例值3- 计算最终收缩大小:
- 项目一需要收缩:
比例值1 × 300- 项目二需要收缩:
比例值2 × 300- 项目三需要收缩:
比例值3 × 300
15.12 flex复合属性
flex 是复合属性,复合了: flex-grow 、 flex-shrink 、 flex-basis 三个属性,默认值为 0 1 auto。
- 如果写
flex:1 1 auto,则可简写为:flex:auto - 如果写
flex:1 1 0,则可简写为:flex:1 - 如果写
flex:0 0 auto,则可简写为:flex:none - 如果写
flex:0 1 auto,则可简写为:flex:0 auto—— 即flex初始值。 - 如何实现伸缩项目的宽度比例不同?
给每个伸缩项目分别设置
flex属性,即可。 - 如何实现伸缩项目的高度比例不同?
将伸缩容器的主轴方向改为
column,再给每个伸缩项目分别设置flex属性,即可。
15.13 项目排序
order 属性定义项目的排列顺序。数值越小,排列越靠前,默认为 0 。
15.14 单独对齐
通过 align-self 属性,可以单独调整某个伸缩项目的对齐方式 默认值为 auto ,表示继承父元素的 align-items 属性。
16 响应式布局
媒体查询
16.1 媒体类型
- 完整列表请参考: 媒体类型
- 媒体查询要覆盖某选择器的样式,要写在该选择器之后,不然由于
CSS的层叠性的影响,媒体查询的样式将不生效。
16.2 媒体特性
完整列表请参考:媒体特性
16.3 运算符
16.4 常用阈值
在实际开发中,会将屏幕划分成几个区间,例如:
- 用法一:
<link rel="stylesheet" media="具体的媒体查询" href="mystylesheet.css"> - 用法二:
@media screen and (max-width:768px) {
/*CSS-Code;*/
}
@media screen and (min-width:768px) and (max-width:1200px) {
/*CSS-Code;*/
}
17 BFC
17.1 什么是BFC
W3C上对BFC的定义:
原文:Floats, absolutely positioned elements, block containers (such as inline-blocks, table- cells, and table-captions) that are not block boxes, and block boxes with 'overflow' other than 'visible' (except when that value has been propagated to the viewport) establish new block formatting contexts for their contents.
译文:浮动、绝对定位元素、不是块盒子的块容器(如inline-blocks、table-cells和table-captions),以及overflow属性的值除visible以外的块盒,将为其内容建立新的块格式化上下文。
MDN上对BFC的描述:
块格式化上下文(Block Formatting Context,BFC) 是
Web页面的可视CSS渲染的一部分, 是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
- 更加通俗的描述:
BFC是Block Formatting Context(块级格式上下文),可以理解成元素的一个 “特异功能”。- 该 “特异功能”,在默认的情况下处于关闭状态;当元素满足了某些条件后,该“特异功 能”被激活。
- 所谓激活“特异功能”,专业点说就是:该元素创建了
BFC(又称:开启了BFC)。
17.2 开启了BFC能解决什么问题
- 元素开启
BFC后,其子元素不会再产生margin塌陷问题。 - 元素开启
BFC后,自己不会被其他浮动元素所覆盖。 - 元素开启
BFC后,就算其子元素浮动,元素自身高度也不会塌陷。
17.3 如何开启BFC 根元素
- 根元素
- 浮动元素
- 绝对定位、固定定位的元素
- 行内块元素
- 表格单元格:
table、thead、tbody、tfoot、th、td、tr、caption、overflow的值不为visible的块元素 - 伸缩项目
- 多列容器
column-span为all的元素(即使该元素没有包裹在多列容器中)display的值,设置为flow-root