一、CSS的基本语法及选择器
1.常用选择器:通过选择器可以选择页面中的指定元素
- 元素选择器 p{ } h{ } div{ }
-
id选择器:作用:根据元素的id属性值选中一个元素
语法:#id属性值
-
类选择器: 作用:根据元素的class属性选中一组元素
与id相似,但class可以重复使用
语法: .class属性值
- 通配选择器的作用:选中页面中的所有元素
2.复合选择器
-
交集选择器:语法:选择器1选择器2
注意点:如果有元素选择器,要用元素选择器开头
-
并集选择器:语法:选择器1,选择器2
3.关系选择器
- 父元素:直接包含子元素的元素
- 子元素:直接被父元素包含的元素
- 祖先元素:直接或间接包含后代元素的元素
- 后代元素:直接或间接被祖先元素包含的元素
- 兄弟元素:拥有相同父元素的元素是兄弟元素
子元素选择器:语法:父元素>子元素
后代元素选择器: 语法:祖先 后代
兄弟元素选择器:前一个+后一个
4.属性选择器
5.伪类选择器
6.first-child和nth-child选择器的使用
- first-child选择器:选择父元素的第一个子元素
- nth-child选择器:nth-child(n)---选择父元素的第n个子元素;nth-child(odd)---选择父元素的第奇数个子元素;nth-child(even)---选择父元素的第偶数个子元素;nth-child(-n+n):选择第 n 个之前的元素(此处的 n 是后面的那个);nth-last-child(n):选择倒数第 n 个元素; nth-last-child(n+n):选择倒数第 n 个之前的元素。
//选择列表的第二个标签设置其背景色为红色
li:nth-child(2){
background-color: red;
}
//选择倒数第2个li
li:nth-last-child(2){
background-color: red;
}
//前三行背景色设置为绿色
li:nth-child(-n+3){
background: green;
}
//第五行及以后的背景色设置为绿色
li:nth-child(n+5){
background: green;
}
//倒数第三行字体设置为红色
li:nth-last-child(3){
color: red;
}
//倒数第三个及之前的元素字体设置为绿色
li:nth-last-child(n+3){
color:green;
}
二、超链接的伪类
1. :link
用来表示没有访问过的链接
2. :visited
用来表示访问过的链接;由于隐私原因,visit这个伪类只能修改颜色状态
3. :hover
用来表示鼠标移入的状态
4. :active
用来表示鼠标点击时的状态
5.正确的使用顺序:
a:link、a:visited、a:hover、a:active .
PS:
1.鼠标经过的“未访问链接”同时拥有a:link、a:hover两种属性,后面的属性会覆盖前面的属性定义;
2.鼠标经过的“已访问链接”同时拥有a:visited、a:hover两种属性,后面的属性会覆盖前面的属性定义;
所以说,a:hover定义一定要放在a:link、a:visited的后面!
三、伪元素
1.伪元素表示页面中一些并不真实的存在的元素
2. ::first-letter
表示第一个字母
3. ::first-line
表示第一行
4. ::selection
表示选中的内容
5. ::before ::after
::before表示元素的开始, ::after 表示元素的最后(befor与after必须结合content属性来使用)
四、继承(发生在祖先与后代之间)
1.样式的继承:
为一个元素设置的样式同时也会应用到它的后代元素上
2.继承的好处:
利用继承可以将一些通用的样式统一设置到共同的祖先元素上,这样只需要一次即可让所有的元素都具备该样式,方便开发。
3.并不是所有的样式都会被继承,比如与背景或布局等相关的样式都不会被继承
ps:图中p元素指定span的背景也呈现橙色是因为:默认情况下背景颜色是透明的,而p元素背景的橙色“透了出来”,使得p中的span背景也呈现橙色
五、选择器的权重
1.权重排序:
内联样式(1000)>id选择器(100)>类和伪类选择器(10)>元素选择器(1)>通配选择器(0)>继承的样式(没有优先级)
2.比较优先级时,需要将选择器的优先级进行相加计算,最后优先级越高则越优先显示
3.需要注意的是:选择器的累加不会超过其最大的数量级,如类选择器再高也不会超过id选择器
4.如果优先级计算后相同,此时则优先使用靠下的样式
5.可以在样式的后边添加!important,则此时该样式会获取到最高的优先级,甚至超过内联样式(在开发中要慎用)
六、像素和百分比
1.不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰
2.百分比:
可以将属性值设置为相对于其父元素属性的百分比,这样子元素会随着父元素的变化而变化
3.em:
em是相当于元素的字体大小来计算的,1em=1font-size,em会根据字体大小的改变而改变
4.rem:
rem是相对于根元素的大小来计算的
七、RGB
1.RGB通过三种颜色(red,green,blue)的不同浓度来调配出不同的颜色,每一种颜色的范围在0-255(0%-100%)之间
2.RGBA:
在RGB的基础上添加了一个a表示不透明度(1表示完全不透明,0表示完全透明, .5表示半透明)
ps:透明度也可以通过opacity来设置,0表示完全透明,1表示完全不透明
//如豆沙绿
background-color:rgba(106,153,85,.5)
八、HSL值,HSLA值
H 表示色相(0-360),S 表示饱和度(0%-100%),L 表示亮度(0%-100%)
HSL(0,100%,50%)
九、文档流
1.网页是一个多层的结构,一层摞着一层,通过CSS可以分别为每一层设置样式
2.作为用户,只能看到网页最顶上一层
3.这些层中,最底下的一层称为文档流,文档流是网页的基础,我们所创建的元素默认在文档流中进行排序
4.元素有两个状态:在/不在文档流中
5.元素在文档流中的特点:
(1)块元素:
- 在页面中独占一行
- 默认宽度是父元素的全部(会把父元素撑满),默认高度是被内容撑开(子元素)
- 无论宽度是多少,块元素都独占一行
(2)行内元素:
- 在页面中不会独占一行
- 行内元素在页面中自左向右水平排列,如果一行之中不能容纳下所有的行内元素,则元素会换到第二行继续自左向右排列
- 行内元素的默认宽度和高度是被内容撑开的
十、盒子模型
1.概念:
CSS将页面中的所有元素都设置为了一个矩形的盒子,每个盒子都由以下几个部分构成:内容区(content),内边距(padding),边框(border),外边距(margin)
2.内容区(content)
- 元素中的所有子元素和文本内容都在内容区中排列
- width,height分别设置内容区的宽度和高度(!!!不是整个盒子的大小)
3.边框(border)
(1)概念:
边框属于盒子边缘,边框里边属于盒子内部,外边属于盒子外部
(2)要设置边框,至少需要3个样式:
- 边框的宽度:border-width
- 边框的颜色:border-color
- 边框的样式:border-style
(3)border-width:可以用来指定四个方向的边框宽度(默认值是2-3个像素)
//分别代表“上右下左”四个方向的边框宽度
border-width:10px 20px 30px 40px
- border-width的值(border-color 同理):
四个值:上 右 下 左(顺时针)
三个值:上 左右 下
两个值:上下 左右
一个值:上下左右
- 此外,也可以用border-top-width,border-left-width,border-right-width,border-bottom-width来单独指定某 一个边的宽度
(4)border-style:
- solid 表示实线
- dotted 表示点状虚线
- dashed 表示虚线
- double 表示双线
(5)可以直接用border简写属性,通过此属性可以设置边框所有的相关样式,并且没有顺序要求
border: solid 10px orange
4.内边距(padding)
(1)概念:内容区与边框之间的距离叫做内边距
(2)内边距的设置会影响到盒子的大小,盒子的大小由内边距、边框和内容区共同决定
(3)可以用padding-top、padding-right、padding-left、padding-bottom设置四个方向的内边距,也可用padding同时指定四个方向的属性,规则与border-width一样
5.外边距(margin)
(1)外边距不会影响可见框的大小,但会影响盒子的位置和盒子实际占用空间的大小
(2)可以用margin-top、margin-right、margin-left、margin-bottom设置四个方向的内边距,也可用margin同时指定四个方向的属性,规则与border-width一样
(3)默认情况下,设置左和上边距会移动元素自身,设置下和右边距会移动其他元素
(4)外边距可以是正值,也可以是负值
6.水平方向的布局
(1)元素在其父元素中水平方向的位置由margin-left、border-left、padding-left、width、padding-right、border-right、margin-right共同决定
(2)一个元素在其父元素中,必须满足margin-left、border-left、padding-left、width、padding-right、border-right、margin-right的和等于其父元素内容区的宽度。如果不相等,则称为过度约束,等式会自动调整。
- 如果这七个值中没有为auto的情况,则浏览器会自动调整margin-right值以使等式满足
(3)上述七个值中有三个的值可以设置为auto,分别是width、margin-left、margin-right:
- 如果某个值为auto,则会自动调整auto的值以使等式成立
- 如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距会自动为0
- 如果将三个值都设为auto,则外边距都是0,宽度最大
- 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值(经常使用这一特点使一个元素在其父元素中水平居中)
7.垂直方向的布局
(1)子元素是在父元素的内容区中排列的,如果子元素的大小超过了父元素,则会溢出
(2)可以用overflow属性处理溢出的情况,overflow属性是在父元素中设置的
(3)可选值:
- visible:默认值 子元素会从父元素中溢出,在父元素外部的位置显示
- hidden:溢出部分将被裁剪而不会显示
- scroll:生成两个滚动条,可以通过滚动条查看内容
- auto:根据需要生成滚动条
8.外边距的折叠
(1)相邻的垂直方向外边距会发生重叠现象
(2)兄弟元素间的相邻垂直外边距会取两者之间的较大值(两个值都是正值情况下)
- 如果一正一负,则取两者的和
- 如果都是负值,则取两者中绝对值大的
(3)兄弟元素之间的外边距的重叠,对于开发是有利的,不需要进行处理
(4)父子元素间相邻外边距,子元素的会传递给父元素
(5)父子元素外边距的重叠会影响到页面的布局,必须进行处理
9.行内元素的盒模型
(1)行内元素不支持设置宽度和高度
(2)行内元素可以设置padding、border、margin,但垂直方向的设置不会改变布局
(3)display属性用来设置元素显示的类型,可选值有:
- inline:将元素设置为行内元素
- block:将元素设置为块元素
- inline-block:将元素设置为行内块元素(既可以设置宽高又不会独占一行)
- none:元素不在页面中显示
(4)visibility属性用来设置元素的显示状态,可选值有:
- visible:默认值,元素在页面中正常显示
- hidden:元素在页面中隐藏不显示,但是依然占据页面的位置(与display的none区分)
十一、浏览器的默认样式
//出去无序列表间的间距和项目符号
ul{
margin:0;
padding:0;
list-style:none;
}
//去除p默认的上左外边距
body{
margin:0;
}
//去除段落间的间距
p{
margin:0;
}
//将所有的margin和padding的值都设置为0
*{
margin:0;
padding:0;
}
十二、盒子的大小
box-sizing用来设置盒子尺寸的计算方式,可选值有:
- content-box:默认值,宽度和高度用来设置内容区的大小
- border-box:宽度和高度用来设置整个盒子的大小(即width和height指的是内容区、内边距和边框的总大小)
十三、轮廓阴影和圆角
1.outline:用来设置元素的轮廓线,用法与border一模一样,边框与轮廓不同的是轮廓不会影响到可见框的大小。
2.轮廓阴影:
(1)box-shadow用来设置元素的阴影效果,阴影不会影响页面布局
(2)第一个值代表水平偏移量,正值向右移动,负值向左移动
(3)第二个值代表垂直偏移量,正值向下移动,负值向上移动
(4)第三个值代表阴影的模糊半径(越大越模糊)
//示例
box-shadow:10px 10px 50px rgb(0,0,0,.5)
(5)第四个值代表阴影的颜色
3.圆角
(1)border-radius:用来设置圆角,其值为圆角设置的圆的半径大小
- 四个值:左上 右上 右下 左下
- 三个值:左上 右上 /左下 右下
- 两个值:左上/右下 右上/左下
- 一个值:左上右上右下左下
- 将其值设置为50%,显示效果为一个圆
(2)也可以用border-xxx-radius来设置,如border-top-radius:10px 20px(其中第一个值表示水平方向半径大小,第二个值表示垂直方向半径大小)
十四、浮动
1.通过float属性来设置元素的浮动,浮动可以使一个元素向其父元素的左侧或右侧移动
2.float的可选值:
- none:默认值,元素不移动
- left/right:元素向左/右移动
3.元素设置浮动后,水平布局的等式不需要强制成立
4.元素设置浮动后,会完全从文档流中脱离,不再占用文档流的位置,所有元素下边的还在文档流中的元素会自动向上移动
5.浮动的特点:
- 浮动元素会完全脱离文档流,不再占用文档流中的位置
- 设置浮动以后元素会向父元素的左侧或右侧移动
- 浮动元素默认不会从父元素中移出
- 浮动元素向左或向右移动时,不会超过它前边的其他浮动元素
- 如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移
- 浮动元素不会超过它上边浮动的兄弟元素,最多与其一样高
- 浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围
6.元素设置浮动后有一些属性会发生改变
- 块元素不再独占一行
- 脱离文档流后,块元素的宽度和高度默认被内容撑开
- 脱离文档流后,行内元素的特点变得与块元素一样
十五、高度塌陷和BFC
1.高度塌陷:
在浮动布局中,父元素的高度默认是子元素撑开的。当子元素浮动后,其会完全脱离文档流,无法撑起父元素的高度,导致父元素的高度丢失
2.BFC:块级格式化环境,开启BFC后该元素会变成一个独立的布局区域
- 开启BFC的元素不会被浮动元素所覆盖
- 开启BFC的元素子元素与父元素外边距不会重叠
- 开启BFC的元素可以包含浮动的子元素
3.开启BFC的方法:
- 设置元素的浮动(不推荐)---float
- 将元素设置为行内块元素(不推荐)---display
- 将元素的overflow设置为一个非visible的值,如hidden,auto(副作用较小) ---overflow
- 开启绝对或固定定位
- 有根元素或存在父元素
4.clear:
可以使用clear属性来清除浮动元素对当前元素所产生的影响(原理:设置清除浮动后,系统会自动为元素添加上一个上外边距)
5.clear的可选值:
- left : 清除左侧浮动元素对当前元素的影响
- right: 清除右侧浮动元素对当前元素的影响
- both : 清除两侧中影响最大的那侧
6.利用after伪类解决高度塌陷
.box1::after{
content:'';
display:block;
clear:both;
}
7.clearfix:可以同时解决高度塌陷和外边距重叠问题
.clearfix::before,
.clearfix::after{
content:'';
display:table;
clear:both;
}
十六、定位
1.定位是一种更高级的布局手段,通过定位可以将元素摆放到页面的任意位置(定位的层级都一样)
2.使用position属性来设置定位,可选值有:
- statics:默认值,元素是静止的没有开启定位
- relative:开启元素的相对定位
- absolute:开启元素的绝对定位
- fixed:开启元素的固定定位
- sticky:开启元素的粘滞定位
3.相对定位(relative)的特点:
- 元素开启相对定位后,如果不设置偏移量,元素不会发生任何的变化(偏移量:top bottom left right )
//示例
position:relative;
top:100px;
- 相对定位是参照于元素在文档流中的位置进行定位的
- 相对定位会提升元素的层级,不会使元素脱离文档流
4.绝对定位(absolute)的特点:
- 开启绝对定位后,如果不设置偏移量,元素的位置不会发生变化
- 开启绝对定位后,元素会从文档流中脱离
- 绝对定位会改变元素的性质,行内元素变成块元素,块的宽度被内容撑开
- 绝对定位会使元素提升一个层级
- 绝对定位元素是相对于其包含块进行定位的(正常情况下,包含块指的是离当前元素最近的祖先块元素;在开启绝对定位情况下,包含块是离当前元素最近的开启了定位的祖先元素;如果所有的祖先元素都没有开启定位,则根元素就是当前元素的包含块)
5.固定定位(fixed)的特点:
- 固定定位也是一种绝对定位,所有固定定位的大多数特点与绝对定位一样,唯一不同的是固定定位永远参照于浏览器的视口进行定位
- 固定定位的元素不会随网页的滚动条滚动
6.粘滞定位(sticky)的特点:
- 粘滞定位和相对定位的特点基本一致,不同的是粘滞定位可以在元素到达某个位置时将其固定
position:sticky;
top:10px;
7.绝对定位元素的位置
(1)水平布局:left+margin-left+border-left+padding-left+width+padding-right+border-right+margin-right+right=包含块的宽度。当发生过度约束时,
- 如果9个值中没有auto,则自动调整right值以使等式成立
- 如果有auto,则自动调整auto值以使等式成立
- 可设置auto的值的有margin、width、left和right。因为left和right的值默认是auto,所以如果不知道left和right,则等式不满足时会自动调整这两个值
(2)垂直布局:top+margin-top+margin-bottom+border-top+border-bottom+height+bottom+padding-top+padding-bottom=包含块的高度
8.z-index属性
对于开启了定位的元素,可以通过z-index属性来指定元素的层级,z-index需要一个整数作为参数,值越大元素的层级越高,层级越高越优先显示。如果层级一样,则优先显示靠下的元素。祖先元素的层级再高也无法盖过后代元素。
思考
1.块级元素和行内元素的区别:
块元素在页面中独占一行,行内元素在一条直线上从左向右排列;行内元素的高度和宽度和顶/底边距不可以设置;行内元素中不能放任何块元素,块级元素可以包含行内元素和块元素。
2.display: none 和 visibility: hidden 的区别:
两者都会将元素在页面中隐藏不显示,不同的是设置visibility:hidden后,元素在页面中隐藏不显示,但依然占据页面的位置。
3. 相邻的行内元素之间为什么会有空隙?如何能够消除这些间隙:
间隙由空格、换行或回车所产生的空白符所导致;解决方法:人为删去空格(格式排版不美观);设置父级元素的font-size=0;设置浮动
4.清除浮动的方法有哪几种?
设置clear:both;触发BFC清除浮动;使用after伪元素清除浮动;修改父元素的overflow属性为overflow:auto/hidden;用clearfix属性
5.content-box 和 border-box 的区别:
content-box:默认值,宽度和高度用来设置内容区的大小;border-box:宽度和高度用来设置整个盒子的大小(即width和height指的是内容区、内边距和边框的总大小)
6.定位的方式和使用场景:
静态定位:默认方式,没有边偏移;相对定位:相对原先位置移动,原来的位置继续占有,后面的盒子不会占用原先的位置;绝对定位:相对于祖先元素为参考系,绝对定位不再占有原先的位置;固定定位:常用于广告图片;粘滞定位:以浏览器的可视窗口为参考系,可以在浏览器页面滚动时保持不变。相对定位和绝对定位的使用场景:子绝父相,常用于logo的定位。
7.元素居中的方法:
用固定宽度加外边距实现水平居中;用绝对定位加负的左外边距实现水平居中;用文本居中加行内块实现水平居中;使用绝对定位加外边距实现水平居中;使用弹性盒子实现水平居中
<div style="width:200px;
margin:0 auto;">
内容
</div> //第一种
<div style="position:relative;">
<div style="width:200px;position:absolute;left:50%;margin-left:-100px">
内容
</div>
</div> //第二种
<div style="text-align:center;">
<div style="display:inline-block;">
用文本居中加行内块实现水平居中
</div>
</div> //第三种
#father{
position:relative;
}
#son{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin:auto;
}//第四种
#father{
display: flex;
justify-content: center;
align-items: center;
} //第五种
十七、字体族
1.字体相关的样式:
- color:用来设置字体的颜色
- font-size:用来设置字体的大小(em--相当于当前元素的一个font-size.rem--相当于根元素的一个font-size)
- font-family:字体族(字体的格式),可选值为:serif(衬线字体)、sans-serif(非衬线字体)、monospace(等宽字体),cursive(花体字),fantasy(特殊艺术效果的字体)。font-family可以同时指定多个字体,多个字体间使用,隔开,字体生效时优先使用第一个,第一个无法使用时则使用第二个,以此类推。
font-family:'Courier New',Courier,monospace
- font-weight:设置字重 字体的加粗,可选值有:normal(默认值,不加粗),bold(加粗),100-900 九个级别(没什么用)
- font-style:设置字体的风格,可选值有:normal,italic(斜体)
- font-face:font-face可以将服务器中的字体直接提供给用户去使用
font-face{
font-family:'指定字体的名字';
src:url('服务器中字体的路径');
}
ps:计算机中的字体查询:计算机->C盘->Windows->Fonts
十八、图标字体
在使用图标时,将图标直接设置为字体,然后通过font-face的形式来引入字体,这样便可以通过使用字体的形式来使用图标
十九、行高
1.定义:
行高指的是文字占有的实际高度
2.可以通过line-height来设置行高
大小可以是px,em,也可以是一个整数(则行高是字体的指定的倍数)
3.字体框:
字体存在的格子,设置font-size实际上是设置字体框的高度
4.行高会在字体框的上下平均分配
5.行间距=行高-字体大小
二十、字体的简写属性
1.可以用font来设置字体的相关的所有属性
- 语法:font:字体大小/行高 字体族
//行高可以省略不写,相当于用默认值
font:50px/2 'Times New Roman',Times,serif;
2.除了基本的字体大小和字体族,还可以设置字体的其他属性
font:bold italic 50px/2 微软雅黑,'Times New Roman',Times,serif;
二十一、文本的水平和垂直对齐
1.text-align:文本的水平对齐,可选值:
- left:左侧对齐
- right:右侧对齐
- center:居中对齐
- justify:两端对齐
2.vertical-align:元素的垂直对齐,可选值:
- baseline:默认值,基线对齐
- top:顶部对齐
- bottom:底部对齐
- middle:居中对齐
ps:vertical-align只对行内元素有效
二十二、文本的其他样式
1.text-decoration:设置文本修饰,可选值:
- none:什么都没有
- underline:下划线
- line-through:删除线
- overline:上划线
2.white-space:设置网页如何处理空白,可选值:
- normal:正常
- nowrap:不换行
- pre:保留空白
p{
width:200px;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
二十三、背景
1.background-color:设置背景颜色
2.background-image:设置背景图片
- 如果图片小于元素,则背景图片会自动在元素中平铺
- 如果图片大于元素,则有一部分图片无法显示
- 如果一样大,则正常显示
3.background-repeat:设置背景的重复方式,可选值:
- repeat:默认值,背景沿着x轴,y轴双方向重复
- repeat-x
- repeat-y
- no-repeat:背景图片不重复
4.background-position:设置图片的位置,可选值:
- top
- bottom
- left
- right
- center
ps:使用方位词时必须要同时指定两个值!!!
//通过方向词设置
position:center right
//通过偏移量来设置位置,第一个值表示水平偏移量,第二个值表示垂直偏移量,偏移量可以是负的
position:100px 120px
5.background-clip:设置背景范围,可选值:
- border-box:默认值,背景会出现在边框下面
- content-box:背景只会出现在内容区
- padding-box:背景只出现在内容区和内边距
6.background-origion:背景图片的偏移量计算的原点
- border-box:默认值,偏移量从边框处开始计算
- content-box:偏移量从内容区处开始计算
- padding-box:偏移量从内边距处开始计算
7.background-size:背景图片的大小
background-size:100px 100px
//第一个值表示宽度,第二个值表示高度
//如果只有一个值,则第二个值默认是auto
background-size:cover
//图片比例不变,将元素铺满
background-size:contain
//图片比例不变,将元素在页面中完整显示
8.background-attachment:设置背景图片是否跟随元素滚动,可选值:
- scroll:默认值,背景图片会跟随元素滚动
- fixed:背景会固定在页面中,不会随元素滚动
9.background:背景相关的简写属性
background:#bfa url() no-repeat center center boreder-box content-box 100px 120px fixed;//如果图片大小设置为contain,则必须写在center后面,即center center/contain
//border-box代表的是background-origion的值,content-box代表的是background-clip的值
ps:background-size必须写在background-position后面,并且用/隔开;background-origion必须写在background-clip前面
二十四、雪碧图
1.解决图片闪烁的方法:
将多个小图片统一保存到一个大图片中,然后通过调整background-position来显示图片,这样图片会同时加载到网页中,可以有效地避免出现闪烁的问题。这个技术在网页应用中十分广泛,被称为CSS-Sprite
2.雪碧图的使用步骤:
- 先确定要使用的图标
- 测量图标的大小
- 根据测量结果创建一个元素
- 将雪碧图设置为元素的背景图片
- 设置一个偏移量以显示正常的图片
3.雪碧图的特点:一次性将多个图片加载进页面,降低请求的次数,加快访问的速度,提升用户的体验
二十五、渐变
1.线性渐变:颜色沿着一条直线发生变化
- 渐变是图片,需要通过background-image来设置
- 线性渐变的开头可以指定一个渐变的方向:to left/right/top/bottom或xxxdeg(deg表示度数)或turn(表示圈)
- 线性渐变可以设置多种颜色,默认情况下颜色平均分配
background-image:linear-gradient(red,yellow)//红色在开头,黄色在结尾,中间是过渡区域
background-image:linear-gradient(to right,red,yellow)//红色在左边,黄色在右边,中间是过渡区域
background-image:linear-gradient(red 20px,yellow 80px)
background-image:repeating-linear-gradient(red 50px,yellow 100px)
2.径向渐变:放射性效果
- 语法:radial-gradient(大小 at位置,颜色 位置,颜色 位置)
- 默认情况下,径向渐变的形状根据元素的形状来计算(正方形-->圆形,长方形-->椭圆形),但也可以手动指定径向渐变的大小(circle-->圆形,ellipse-->椭圆形,closest-side-->近边,closest-corner-->近角,farthest-side-->远边,farthest-corner-->远角)
background-image:radial-gradient(red,yellow)
background-image:radial-gradient(ellipse,red,yellow)//椭圆形渐变效果
background-image:radial-gradient(100px 100px,red,yellow)//指定径向渐变的大小为100px 100px
background-image:radial-gradient(100px 100px at 0 0,red,yellow)//at 0 0代表圆心的位置
二十六、表格
1.表格的创建:使用table标签创建表格
- tr 表示表格中的一行
- td 表示一个单元格
- colspan 表示横向合并单元格
- rowspan 表示纵向合并单元格
2.长表格:可以将一个表格分成三个部分
- 头部 thead(th 表示头部的单元格)
- 主体 tbody
- 底部 tfoot
3.表格的样式:
-
border-spacing:指定边框之间的距离
-
border-collapse:设置边框的合并
ps:浏览器会自动添加tbody标签,所以table不是tr的父元素
- 默认情况下元素在td中是居中的,可以通过vertical-align来修改(margin:0;vertical-align:middle使得表格中的文字水平与垂直方向都居中,可以利用这一特点使元素居中)
4.表单
-
form的属性 action:表单要提交的服务器的地址
-
readonly和disabled的区别:前者数据会提交,后者不会
二十七、过渡
1.transition:通过过渡可以指定一个属性发生变化的切换方式
transition:height .3s
2.属性:
- transition-property:指定要过渡的属性(多个属性使用时用,隔开;如果所有属性都需要过渡,则使用all)
- transition-duration:指定过渡效果的持续时间
- transition-timing-function:过渡的时序函数(ease:默认值,减速开始,先加速,再减速;linear:匀速运动;ease-in:加速运动,速度越来越快;ease-out:减速运动,速度越来越慢;ease-in-out:先加速再减速;cubic-bezier():指定时序函数;steps(time,start/end):end是默认值,表示在时间结束时执行过渡,start相反)
- transition-delay:设置过渡时间的延迟
3.可以用transition简写属性,但需要注意的是:如果有两个时间,第一个表示持续时间,第二个是延迟时间。
二十八、动画
1.设置关键帧的名字:animation-name
@keyframes name{
• from{}
• to{}
• }
2.设置动画的执行时间:animation-duration
3.设置动画的延时:animation-delay
4.设置动画的时序函数:animation-timing-function,有5个值:ease(默认),ease-in,ease-out,ease-in-out和linear,也可以自定义函数
5.设置动画的执行次数:animation-itertion-count
animation-itertion-count:infinite//动画执行无限次
6.设置动画执行的方向:animation-direction
- normal:默认值,从from到to进行
- reverse:从to到from执行
- alternate:从from到to执行,重复执行动画时反向执行
- alternate-reverse:从to到from执行,重复执行动画时反向执行
7.设置动画的执行状态:animation-play-state
- running:默认值,动画执行
- paused:动画暂停
8.设置动画的填充模式:animation-fill-mode
- none:默认值,动画执行完毕,回到初始位置
- forwards:动画执行完毕,停在结束位置
- backwards:动画延时等待时,元素就会处于开始位置
- both:结合了forwards和backwards
9.transform属性:
- rotate:旋转
- scale:缩放
- translate:平移
- skew:倾斜
10.animation:简写属性
二十九、弹性布局
1.flex(弹性盒,伸缩盒):是css中的一种布局手段,主要用来代替浮动完成页面的布局;flex可以使元素具有弹性,让元素可以跟随页面的大小的改变而改变
2.弹性容器:要使用弹性盒,必须将一个元素设置为弹性容器。我们用display来设置弹性容器
- display:flex 设置为块级弹性容器
- display:inline-flex 设置为行内的弹性容器
3.弹性元素:弹性容器的子元素是弹性元素,一个元素可以同时是弹性容器和弹性元素
4.flex-direction:指定容器中弹性元素的排列方式
- row:默认值,弹性元素在容器中水平排列
- column:弹性元素在容器中纵向排列
- row-reverse:弹性元素在容器中反向水平排列
- column-reverse:弹性元素在容器中反向纵向排列
ps:主轴:弹性元素的排列方向称为主轴
侧轴:与主轴垂直方向的称为侧轴
5.flex-grow:指定弹性元素的伸展系数,即当父元素有多余空间时,子元素如何伸展
- 默认值是0
- 可改为其他数值,这样剩余空间会按比例分配给子元素
6.flex-shrink:指定弹性元素的收缩系数
- 默认值是0
- 可改为其他数值,这样父元素空间不足以容纳子元素时,会按比例收缩子元素
7.flex-wrap:设置弹性元素是否在弹性容器里自动换行
- nowrap:默认值,不换行
- wrap:元素沿着辅轴方向自动换行
- wrap-reverse:元素沿着辅轴反方向自动换行
8.flex-flow:flex-direction和flex-wrap的简写属性
flex-flow:row wrap;
9.justify-content:设置如何分配主轴上的空白空间
- flex-start:元素沿着主轴起边排列
- flex-end:元素沿着主轴终边排列
- center:元素居中排列
- space-around:空白分布到元素两侧
- space-evenly:空白均匀分布到元素的单侧
- space-between:空白均匀分布到元素之间
10.align-items:设置元素在辅轴上如何对齐
- stretch:默认值,将元素的长度设置为相同的值
- flex-start:元素不会拉伸,沿着辅轴起边对齐
- flex-end:沿着辅轴终边对齐
- center:元素居中对齐
- baseline:基线对齐
justify-content:center;
align-items:center;//主轴、辅轴都居中对齐
11.弹性元素的样式
(1)flex-grow:设置弹性的增长系数
(2)flex-shrink:设置弹性元素的缩减系数
(3)flex-basis:设置元素在主轴上的的基础长度,默认值是auto,表示参照元素自身的高度或宽度
(4)flex:设置弹性元素的三个样式:增长 所见 基础
(5)align-self:子类在交叉轴上的对齐方式 flex items可以通过align-self覆盖flex container设置的align-items,共6个取值:auto(默认值,遵从flex container设置的align-items);stretch、flex-start、flex-end、center、baseline,效果和align-items一样。