一、 css3新增选择器
01. 子级选择器
- 子级选择器用于选取带有特定父元素的元素。
- 书写语法:element1>element2
- 注:
- 如果element2元素不是父元素的element1的直接子元素,则不会被选择。
- 在 >符号之前书写父级的选择器
- 在 >符号之后写子级选择器
- 满足父子关系级关系方可选择中标签。
02. 兄弟选择器
| 选择器 | 简介 |
|---|---|
| element1+element2 | 匹配同一个父元素中紧跟在element1后面的一个element2元素 |
| element1~element2 | 匹配同一个父元素中在的element1后面的所有的element2元素 |
.box1 > p {
color: red;
}
03. 相邻兄弟选择器
- 相邻兄弟选择器可以用于选择紧接在另一个元素后的兄弟元素,而且二者有相同的父元素。
- 书写语法:element1+element2。
- 注:
- 选中的是紧跟在E1之后的同级元素E2。
- 只能选中紧跟在后面的一个E2元素。
- 二者有相同的父元素,只能选择一个元素
- +符号前后可以添加空格书写。
.box3 h1 + p{
color: purple;
}
04. 其他兄弟选择器(普通兄弟选择器)
- 其他兄弟选择器匹配同一个父元素中在element1后面的所有elment2元素。
- 书写语法:element1~element2。
- 注:
- 选择element1之后出现的所有element2。
- 两种元素必须拥有相同的父元素,但是element2不必直接紧随element1。
- ~符号前后可以添加空格书写。
- 可以选择后面的所有选择器;必须有相同的父元素
.box4 h1 ~ p{
color: royalblue;
}
05.结构伪类选择器
| 选择器 | 简介 |
|---|---|
| E:first-child | 匹配父元素中的第一个子元素 |
| E:last-child | 匹配父元素中的最后一个元素 |
| E:nth-child(n) | 匹配父元素中的第n个字元素(n为even选中是偶数,n为odd选中是奇数) |
| E:first-of-type | 指定类型的第一个 |
| E:last-of-type | 指定类型E的最后一个 |
| E:nth-of-type | 指定类型E的第n个 |
-
nth-child(n)
-
n可以是数字,关键字和公式
-
n如果是数字,就是选择第n个
-
常见的关键词even偶数,odd奇数
-
常见的公式如下(如果n是公式,则从0开始计算,n是从0,1,2,3…一直递增)
-
但是第0元素或者超出了元素的个数会被忽略。
公式 取值 2n 偶数 2n+1 奇数 5n 5 10 15… n+5 从第五个开始(包含第五个)到最后,5 6 7 8 9 10… -n+5 前5个(包含第五个),5 4 3 2 1 0…
-
-
E:nth-child(n)和E:nth-of-type(n)的区别
- E:nth-child(n) 匹配父元素的第n个子元素E,同时需要满足两个条件
- E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E,会忽略其他同级的非同类型元素。
/* 结构选择器 */
/* 选中第一个子元素*/
.box5 :first-child{
color: white;
}
/* 选中最后一个子元素*/
.box5 :last-child{
color: red;
}
/* 选中指定的子元素*/
.box5 :nth-child(even){
color: green;
}
/* 选中p标签下的第一个子元素*/
.box5 p:first-of-type{
background-color: hotpink;
}
/* 选中p标签下的最后一个子元素*/
.box5 p:last-of-type{
background-color: lightblue;
}
/* 选中p标签下指定的子元素*/
.box5 p:nth-of-type(odd){
background-color: lightcoral;
}
06. 伪元素选择器
-
新增伪元素 选择器 | 介绍 | | --------------- | --------------- | | E::before | 在E元素内部的前面插入一个元素 | | E::after | 在E元素内部的后面插入一个元素 | | E::first-letter | 选择到了E容器内的第一个字母 | | E::first-line | 选择到了E容器内的第一行文本
-
h5和传统写法区别
- 单冒号E:before
- 双冒号E::before
- 浏览器对以上写法都能识别,双冒号是h5的语法规范。
-
伪元素的注意事项
- 伪元素只能给双标签添加,不能给单标签添加。
- 伪元素的冒号前不能有空格,如E ::before这个写法是错误的。
- 伪元素里面必须写上属性content:"";
- before和after创建一个元素,但是属于行内元素。
- 因为在DOM里面看不见刚才创建的元素,所以我们称为伪元素。
07. 属性选择器
- 属性选择器用来选择包含指定属性的标签。
08. 选择器权重
- 基础选择器:id选择器>类选择器>标签选择器>*
- 伪类选择器、属性选择器的权重等于类选择器。
- 伪元素选择器的权重等于标签选择器。
二、 css3盒模型
- css3中可以通过box-sizing来指定盒模型,方便设置如何计算一个元素的总宽度和总高度。
box-sizing: content-box;正常的盒模型- Standard模式:盒子总体大小为width(height)+padding+border,内容区域是width和height部分。
box-sizing: border-box;怪异模型,- Quirks模式:怪异模式中,盒子总体大小为width和height,padding、border内容区域会收缩。
CSS3新增属性
01. 边框圆角
-
属性名:border-radius
-
作用:设置边框的圆角。
-
属性值:可以是px,或者%,%参考的是盒子整体宽度、高度的%。 属性值 | 说明 | | ------------------ | ---------------------------------- | | x-radius/ y-radius | /分割两部分属性值,前面为水平半径,后面为垂直半径,得到的是椭圆角。 | | radius | 一个属性值,则水平和垂直都设置为同一个值,得到的是圆角。
-
单一属性
border-top-left-radius:半径(左上角)border-top-right-radius:半径(右上角)border-bottom-left-radius:半径(左下角)border-bottom-right-radius:半径(右下角)
-
简写方法
- border-radius相当于四个单一属性的简写方法,类似padding也有可以有四种值得写法。
- border-radius:左上角 右上角 右下角 左下角;
- border-radius:左上角 右上角和左下角 右下角;
- border-radius:左上角和右下角 右上角和左下角;
- border-radius:四个值相同;
-
/的属性值写法
- border-radius属性值中出现了 / 斜线
- / 前面可以设置水平方向四种值的写法
- / 后面可以设置垂直方向四种值的写法。
border-radius:50% 20% 40% / 20% 30%;
- border-radius属性值中出现了 / 斜线
02. css3文字阴影
- text-shadow可向文本应用阴影,通过属性值能够规定水平阴影、垂直阴影、模糊距离、以及阴影的颜色
| 属性值 | 简介 |
|---|---|
| h-shadow | 必需。水平阴影的位置。允许负值。 |
| v-shadow | 必需。垂直阴影的位置。允许负值。 |
| blur | 可选。模糊的距离。 |
| color | 可选。阴影的颜色。 |
- 文字阴影语法
- text-shadow属性向文本添加阴影,属性值有2-3个长度值和一个可选的颜色值进行规定,省略的长度是0.
03. css3盒子阴影
-
边框阴影
- box-shadow属性用于对盒子边框添加阴影。 属性值 | 简介 | | -------- | ---------------- | | h-shadow | 必需。水平阴影的位置。允许负值。 | | v-shadow | 必需。垂直阴影的位置。允许负值。 | | blur | 可选。模糊的距离。 | | color | 可选。阴影的颜色。 | | spread | 可选。阴影的尺寸。 | | inset | 可选。将外部阴影改为内部阴影。
-
边框阴影语法
- box-shadow属性向盒子添加阴影,属性值有2-4个长度值、可选的颜色值以及可选的inset关键词来规定,省略的长度是0。
- 多层阴影
-
box-shadow属性也可以向盒子添加多个阴影,逗号分隔多个阴影的属性值。 -
注意:多阴影中,先写的阴影压盖在后写的阴影上。
-
04. css3过渡属性
-
动画效果
- CSS3出现之前,前端一般使用Flash动画或JavaScript制作动画。
- 帧动画:通过一帧一帧的画面按照固定顺序和速度播放,如电影胶片。
-
过渡属性
- 属性名:transition
- 作用:在不使用Flash动画或JavaScript的情况下,使用transition可实现补间动画(过渡效果),并当元素只有“属性”发生变化时即存在两种状态(我们用A和B代指),那么A和B之间就可以实现平滑的过渡的动画效果。为方便看效果,使用:hover切换状态。
transition:过渡的属性 过渡时间 运动曲线 延时时间;属性 | 描述 | | -------------------------- | ---------------------- | | transition | 用于在一个属性中设置四个过渡属性。 | | transition-property | 规定应用过渡的CSS属性的名称。 | | transition-duration | 定义过渡效果花费的时间。默认是0 | | transition-timing-function | 规定过渡效果的时间曲线。默认是“ease ” | | transition-delay | 规定过渡效果何时开始。默认是0;
-
transition-property过渡属性
- none表示没有属性过渡
- all表示所有变化的属性都过渡
- 属性名 使用具体的属性名,多个属性名中间逗号分隔
-
-时间
- 过渡时间:以s秒为单位。
- 延时时间:以s秒为单位。0s也必须加单位。
-
transition-timing-function时间曲线 值 | 描述 | | ------------------------- | ----------------------------------------------------------------- | | linear | 规定以相同速度开始至结束的过渡效果。(匀速直线) | | ease | 规定慢速开始,然后变快,然后慢速结束的过渡效果。(先快后慢) | | ease-in | 规定以慢速开始的过渡效果。(越来越快) | | ease-out | 规定以慢速结束的过渡效果。(越来越慢) | | ease-in-out | 规定以慢速开始和结束的过渡效果。 | | cubic-bezier(x1,y1,x2,y2) | 在cubic-bezier函数中定义自己的值。x1、x2取是0至1之间的数值,y1、y2取值任意,四个值表示拉扯的点的两个坐标。
05. 2D转换
- 2D转换
- 属性名:transform
- 作用:对元素进行移动、缩放、转动、拉长或拉伸。配合过渡和即将学习的动画知识,可以取代大量之前只能靠Flash才可以实现的效果。
- 属性值:多种转换方法的属性值,可以实现不同的转换效果。
- 位移translate()
- transform的属性值为translate()时,可以实现位移效果。
- 书写语法: 值 | 说明 | | -------------- | ----------------------------------- | | translate(x,y) | x,y分别为水平和垂直方向位移的距离,可以为px值或百分比,区分正负。 | | translate(x) | 只有一个数值,表示水平方向的位移
-
缩放scale()
-
transform的属性值为scale()时,可以实现元素缩放效果。
-
书写语法:
值 说明 scale(x,y) x,y分别为改变元素的宽度和高度的倍数 scale(n) 只有一个值,表示宽度和高度同时缩放n倍 scaleX(n) 改变元素的宽度 scaleY(n) 改变元素的高度
-
-
旋转rotate()
- transform属性值设置为ratate()时,实现元素的旋转。
- 书写语法:
- rotate(数字deg)
- deg为度数单位,正数表示顺时针旋转,负数表示逆时针旋转。2D的旋转只有一个属性值。
- 注意:元素旋转后,坐标轴也跟着发生转变
- 因此,多个属性值同时设置给transform时,书写顺序不同导致的转换效果有差异。
-
倾斜skew()
- transform属性值设置为skew()时,实现元素的倾斜。
- 书写语法:transform:skew(数字deg,数字deg);
- 两个属性值分别表示水平和垂直方向倾斜的角度,属性值可以为正可以为负,第二个数值不写默认为0
- 基准点transform-origin属性
- 作用:设置调整元素的水平和垂直方向原点的位置。
- 调整元素的基准点。
- 属性值:包含两个,中间使用空格分隔。 值 | 说明 | | - | ----------------------------------------- | | x | 定义X轴的原点在何处。可能的值:left、center、right、像素值、百分比 | | y | 定义Y轴的原点在何处。可能的值:top、center、bottom、像素值、百分比
卡包特效实例
06. 3D转换
transform属性不止能实现2D,也可以制作3D立体转换效果,比普通的x,y轴组成的平面效果多了一条z轴
- 透视
- 透视可以将一个2D平面,在转换的过程中,呈现3D效果。
- 透视特点:近大远小。
- 注意:并非任何情况下需要透视效果,根据开发需要进行设置,如果需要展示z轴的变化,则设置透视效果。
- 透视属性perspective
- 属性名:perspective
- 作用:设置在z轴的视线焦点的观察位置,从而实现3D查看效果。
- 属性值:像素值,数组越大,观察点距离z轴原点越远,图形效果越完整且接近原始尺寸。
- 注意:透视属性需要设置给3D变化元素的父级。
- 3D旋转
- 3D旋转比2D旋转更复杂。需要分别对三个方向的旋转角度值:
- 属性值: 值 | 说明 | | -------------- | ----------- | | rotateX(angle) | 定义沿着X轴的3D旋转 | | rotateY(angle) | 定义沿着Y轴的3D旋转 | | rotateZ(angle) | 定义沿着Z轴的3D旋转
- 注意:属性值的角度区分正负,正数表示沿对应坐标轴顺时针方向旋转,负数表示沿对应坐标轴逆时针方向旋转。
- 3D位移
-
类似地,位移也分三个方向的移动:
-
属性值: 值 | 说明 | | ------------- | ---------------- | | translateX(x) | 设置X轴的位移值。 | | translateY(y) | 设置Y轴的位移值 | | translateZ(z) | 定义3D位移,设置Z轴的位移值。
-
属性值为像素值或百分比,正负表示位移的方向。正值向对应轴的正方向移动,负值向对应轴的负方向移动。
-
- transform-style属性
- 用于设置被嵌套的子元素在父元素的3D空间中显示,子元素会保留自己的3D转换坐标轴。
- 属性值:
- flat:所有子元素在2D平面呈现
- preserve-3d:保留3D空间
- 3D元素构建是指某个图形是由多个元素构成,可以给这些元素的父元素设置transform-style:preserve-3d,来使其变成一个真正的3D图形。
- 一般来说,该属性设置3D变化图形的父级元素。
07. 动画
- css3中提供了自己的动画制作方法,这可以在许多网页中取代动画图片。Flash动画以及JavaScript。
- css3动画分为两步:创建动画、绑定动画。
- @keyframes规则
- @keyframes中规定某项CSS样式,就能创建由从一种样式逐渐变化为另一种样式的效果。
- 可以改变任意多的样式任意多的次数。
- 需要使用百分比来规划变化发生的时间,或用关键词"from"和“to”,等同于0%和100%。
- 0%是动画的开始,100%是动画的完成。
- @keyframes书写方法
@keyframes动画名称{
动画过程,可以添加任意百分比处的动画细节
}
- animation属性
- 需要将@keyframes中创建的动画捆绑到某个选择器,否则不会产生动画效果。
- animation属性用于对动画进行捆绑。
- 其中必须设置动画名称和过渡时间,其他属性值可以根据需求设置。
- 语法:
div{
animation:动画名称 过渡时间 速度曲线 动画次数 延时时间;
}
-
实现动画主要由两个部分组成
- 声明并设置关键帧
<style>
@keyframes fly{
0%{
left:5%;
top:10px;
transform:rotate(5deg);
}
50%{
left:40%;
top:100px;
transform:rotate(25deg);
}
100%{
left:75%;
top: 15px;
transform:rotate(0deg);
}
}
</style>
- 调用关键帧:animation:
- 语法顺序:animation:1 2 3 4 5 6 7
| 属性 | 说明 |
|---|---|
| animation-name | 1.由@keyframes创建的动画名称 |
| animation-duration | 2.动画时间 |
| animation-timing-function | 3.动画的速度曲线 |
| animation-delay | 4.延迟时间 |
| animation-iteration-count | 5.动画的播放次数值通常为整数,默认值为:1特殊值infinte:表示动画无限次播放 |
| animation-direction | 6.动画的播放方向normal 默认值,动画按正常播放reverse 动画反向播放alternate 动画在奇数次(1 3 5...)正向播放,在偶数次(2 4 6...)反向播放atlernate-reverse动画在奇数次(1 3 5...)反向播放,在偶数次(2 4 6...)正向播放 |
| animation-play-state; | 7.动画的播放状态tunning 将暂停的动画重新播放paused 将正在播放的元素动画停下来 |
08. 正方体
- 思路:
- 根据6个div元素来显示正方体的每一个面
- 根据transform 的 属性 rotate角度调节
- 将每一个div的背景设置为背景图片,
- 然后根据正方体的每一个面需要的角度用rotateX或者rotateY来调整
- 最后根据translateZ轴来移动图片,来组成一个正方体
- 最后用@keyframes来旋转图片的角度