CSS3 新增了三种颜色设置方式,分别是: rgba 、 hsl 、 hsla 。
CSS3 新增的选择器有:动态伪类、目标伪类、语言伪类、 UI 伪类、结构伪类、否定伪类、伪元素;
使用 box-shadow 属性为盒子添加阴影。
box-shadow: h-shadow v-shadow blur spread color inset;
/* 写两个值,含义:水平位置、垂直位置 */
box-shadow: 10px 10px;
/* 写三个值,含义:水平位置、垂直位置、颜色 */
box-shadow: 10px 10px red;
/* 写三个值,含义:水平位置、垂直位置、模糊值 */
box-shadow: 10px 10px 10px;
/* 写四个值,含义:水平位置、垂直位置、模糊值、颜色 */
box-shadow: 10px 10px 10px red;
/* 写五个值,含义:水平位置、垂直位置、模糊值、外延值、颜色 */
box-shadow: 10px 10px 10px 10px blue;
/* 写六个值,含义:水平位置、垂直位置、模糊值、外延值、颜色、内阴影 */
box-shadow: 10px 10px 20px 3px blue inset;
opacity 属性能为整个元素添加透明效果, 值是 0 到 1 之间的小数, 0 是完全透明, 1 表示完全不透明。
opacity 与 rgba 的区别?
注意:若值为 text ,那么 backgroun-clip 要加上 -webkit- 前缀。
background-size: 300px 200px;
background-size: 100% 100%;
background-size: contain;
background-size: cover;
background: color url repeat position / size origin clip
CSS3 允许元素设置多个背景图片
/* 添加多个背景图 */
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;
border-radius:10px;
border-raidus: 左上角x 右上角x 右下角x 左下角x / 左上y 右上y 右下y 左下y
注意: outline-offset 不是 outline 的子属性,是一个独立的属性。
outline:50px solid blue;
text-shadow: h-shadow v-shadow blur color;
注意:要使得 text-overflow 属性生效,块容器必须显式定义 overflow 为非 visible
值, white-space 为 nowrap 值。
text-decoration: text-decoration-line || text-decoration-style || text-decoration-color
子属性及其含义:
注意:文字描边功能仅 webkit 内核浏览器支持。
background-image: linear-gradient(to top,red,yellow,green);
background-image: linear-gradient(to right top,red,yellow,green);
使用角度设置线性渐变的方向。
background-image: linear-gradient(30deg,red,yellow,green);
调整开始渐变的位置。
background-image:linear-gradient(red50px,yellow100px,green150px);
多个颜色之间的渐变, 默认从圆心四散。(注意:不一定是正圆,要看容器本身宽高比)
background-image: radial-gradient(red,yellow,green);
使用关键词调整渐变圆的圆心位置。
background-image: radial-gradient(at right top,red,yellow,green);
使用像素值调整渐变圆的圆心位置。
background-image: radial-gradient(at 100px 50px,red,yellow,green);
调整渐变形状为正圆 。
background-image: radial-gradient(circle,red,yellow,green);
background-image: radial-gradient(100px,red,yellow,green);
background-image: radial-gradient(50px 100px,red,yellow,green);
无论线性渐变,还是径向渐变,在没有发生渐变的位置,继续进行渐变,就为重复渐变。
我们可以利用渐变,做出很多有意思的效果:例如:横格纸、立体球等等。
@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- */
}
字体图标的具体使用方式,每个平台不尽相同,最好参考平台使用指南,视频中我们是以使用最多
的阿里图标库作为演示。
阿里图标官网地址:https://www.iconfont.cn/
2D 位移可以改变元素的位置,具体使用方式如下:
transform: translateX(30px) translateY(40px);
.box {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
2D 缩放是指:让元素放大或缩小,具体使用方式如下:
2D 旋转是指:让元素在二维平面内,顺时针旋转或逆时针旋转,具体使用方式如下:
注意: rotateZ(20deg) 相当于 rotate(20deg) ,当然到了 3D 变换的时候,还能写:
rotate(x,x,x)
2D 扭曲是指:让元素在二维平面内被“拉扯”,进而“走形”,实际开发几乎不用,了解即可,具体使用方式如下:
多个变换,可以同时使用一个 transform 来编写。
transform: translate(-50%, -50%) rotate(45deg);
注意点:多重变换时,建议最后旋转。
重要原则:元素进行 3D 变换的首要操作:父元素必须开启 3D 空间!
使用 transform-style 开启 3D 空间,可选值如下:
flat : 让子元素位于此元素的二维平面内( 2D 空间)—— 默认值
preserve-3d : 让子元素位于此元素的三维空间内( 3D 空间)
何为景深?—— 指定观察者与 z=0 平面的距离,能让发生 3D 变换的元素,产生透视效果,看来更加立体。
使用 perspective 设置景深,可选值如下:
注意: perspective 设置给发生 3D 变换元素的父元素!
所谓透视点位置,就是观察者位置;默认的透视点在元素的中心。
使用 perspective-origin 设置观察者位置(透视点的位置),例如:
/* 相对坐标轴往右偏移400px, 往下偏移300px(相当于人蹲下300像素,然后向右移动400像素看元素) */ perspective-origin: 400px 300px;
注意:通常情况下,我们不需要调整透视点位置。
3D 位移是在 2D 位移的基础上,可以让元素沿 z 轴位移,具体使用方式如下:
3D 旋转是在 2D 旋转的基础上,可以让元素沿 x 轴和 y 轴旋转,具体使用方式如下:
3D 缩放是在 2D 缩放的基础上,可以让元素沿 z 轴缩放,具体使用方式如下:
多个变换,可以同时使用一个 transform 来编写。
transform: translateZ(100px) scaleZ(3) rotateY(40deg);
注意点:多重变换时,建议最后旋转。
11.8. 背部可见性
使用 backface-visibility 指定元素背面,在面向用户时是否可见,常用值如下:
注意: backface-visibility 需要加在发生 3D 变换元素的自身上。
过渡可以在不使用 Flash 动画,不使用 JavaScript 的情况下,让元素从一种样式,平滑过渡为另一
种样式。
常用值:
不是所有的属性都能过渡,值为数字,或者值能转为数字的属性,都支持过渡,否则不支持
过渡。
常见的支持过渡的属性有:颜色、长度值、百分比、 z-index 、 opacity 、 2D 变换属
性、 3D 变换属性、阴影。
常用值:
作用:指定开始过渡的延迟时间,单位: s 或 ms
常用值:
在线制作贝赛尔曲线:https://cubic-bezier.com
12.5. transition 复合属性
transition:1s 1s linear all;
一段动画,就是一段时间内连续播放 n 个画面。每一张画面,我们管它叫做“帧”。一定时间内连续快速播放若干个帧,就成了人眼中所看到的动画。同样时间内,播放的帧数越多,画面看起来越流畅。
关键帧指的是,在构成一段动画的若干帧中,起到决定性作用的 2-3 帧。
13.3. 动画的基本使用
第一步:定义关键帧(定义动画)
/*写法一*/
@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*/
}
}
第二步:给元素应用动画,用到的属性如下:
.box {
/* 指定动画 */
animation-name: testKey;
/* 设置动画所需时间 */
animation-duration: 5s;
/* 设置动画延迟 */
animation-delay: 0.5s;
}
animation-timing-function ,设置动画的类型,常用值如下:
animation-iteration-count ,指定动画的播放次数,常用值如下:
animation-direction ,指定动画方向,常用值如下:
animation-fill-mode ,设置动画之外的状态
animation-play-state ,设置动画的播放状态,常用值如下:
只设置一个时间表示 duration ,设置两个时间分别是: duration 和 delay ,其他属性没有数量和
顺序要求。
.inner {
animation: atguigu 3s 0.5s linear 2 alternate-reverse forwards;
}
备注: animation-play-state 一般单独使用。
作用:专门用于实现类似于报纸的布局。
常用属性如下:
column-count :指定列数,值是数字。
column-width :指定列宽,值是长度。
columns :同时指定列宽和列数,复合属性;值没有数量和顺序要求。
column-gap :设置列边距,值是长度。
column-rule-style :设置列与列之间边框的风格,值与 border-style 一致。
column-rule-width :设置列与列之间边框的宽度,值是长度。
column-rule-color :设置列与列之间边框的颜色。
coumn-rule :设置列边框,复合属性。
column-span 指定是否跨列;值: none 、 all 。
小贴士:
伸缩容器: 开启了 flex 的元素,就是:伸缩容器。
伸缩项目:伸缩容器所有子元素自动成为了:伸缩项目。
属性名: flex-direction
常用值如下:
注意:改变了主轴的方向,侧轴方向也随之改变。
flex-flow 是一个复合属性,复合了 flex-direction 和 flex-wrap 两个属性。 值没有顺序要求。
flex-flow: row wrap;
属性名: justify-content
常用值如下:
所需属性: align-items
常用值如下:
所需属性: align-content
常用值如下:
方法一:父容器开启 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;
}
备注:主轴横向:宽度失效;主轴纵向:高度失效
flex 是复合属性,复合了: flex-grow 、 flex-shrink 、 flex-basis 三个属性,默认值为 0 1auto 。
媒体查询
完整列表请参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media
完整列表请参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media
用法一:
用法二:
@media screen and (max-width:768px) {
/*CSS-Code;*/
}
@media screen and (min-width:768px) and (max-width:1200px) {
/*CSS-Code;*/
}
MDN 上对 BFC 的描述:
块格式化上下文(Block Formatting Context,BFC) 是 Web 页面的可视 CSS 渲染的一部分,
是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
更加通俗的描述: