前端开发入门教程-CSS3的2D3D转换与动画
本文素材来源于黑马程序员pink老师的前端教学视频。在此基础上有部分改动。
1. 2D转换
1.1 translate() 方法
通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数。
使用 translate() 方法元素保留原来的位置,不脱标。
函数 | 描述 |
---|---|
translate(x,y) | 定义 2D 转换,沿着 X 和 Y 轴移动元素。 |
translateX(n) | 定义 2D 转换,沿着 X 轴移动元素。 |
translateY(n) | 定义 2D 转换,沿着 Y 轴移动元素。 |
1.2 rotate() 方法
通过 rotate() 方法,元素顺时针旋转给定的角度。允许负值,元素将逆时针旋转。
单位为deg,degree[dɪˈɡriː] 的缩写。
函数 | 描述 |
---|---|
rotate(angle) | 定义 2D 旋转,在参数中规定角度。 |
1.3 scale() 方法
通过 scale() 方法,元素的尺寸会增加或减少,根据给定的宽度(X 轴)和高度(Y 轴)参数。
函数 | 描述 |
---|---|
scale(x,y) | 定义 2D 缩放转换,改变元素的宽度和高度。 |
scaleX(n) | 定义 2D 缩放转换,改变元素的宽度。 |
scaleY(n) | 定义 2D 缩放转换,改变元素的高度。 |
1.4 设置转换中心点
transform-origin 属性允许您改变被转换元素的位置。
2D 转换元素能够改变元素 x 和 y 轴。3D 转换元素还能改变其 Z 轴。
值 | 描述 |
---|---|
x-axis | 定义视图被置于 X 轴的何处。可能的值:left / center / right / length / % |
y-axis | 定义视图被置于 Y 轴的何处。可能的值:top / center / bottom / length / % |
2. 动画
通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。
2.1 @keyframes 规则
@keyframes 规则用于创建动画。在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。
创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。
在动画过程中,您能够多次改变这套 CSS 样式。
以百分比来规定改变发生的时间,或者通过关键词 "from" 和 "to",等价于 0% 和 100%。
语法
@keyframes animationname {keyframes-selector {css-styles;}}
值 | 描述 |
---|---|
animation name | 必需。定义动画的名称。 |
keyframes-selector | 必需。动画时长的百分比。合法的值:0-100 / % / from(与 0% 相同)/ to(与 100% 相同) |
css-styles | 必需。一个或多个合法的 CSS 样式属性。 |
2.2 CSS3 动画属性
下面的表格列出了 @keyframes 规则和所有动画属性:
属性 | 描述 |
---|---|
@keyframes | 规定动画。 |
animation | 所有动画属性的简写属性,除了 animation-play-state 属性。 |
animation-name | 规定 @keyframes 动画的名称。 |
animation-duration | 规定动画完成一个周期所花费的秒或毫秒。默认是 0。 |
animation-timing-function | 规定动画的速度曲线。默认是 "ease"。 |
animation-delay | 规定动画何时开始。默认是 0。 |
animation-iteration-count | 规定动画被播放的次数。默认是 1。 |
animation-direction | 规定动画是否在下一周期逆向地播放。默认是 "normal"。 |
animation-play-state | 规定动画是否正在运行或暂停。默认是 "running"。 |
animation-fill-mode | 规定对象动画时间之外的状态。 |
2.3 animation-timing-function
定义和用法
animation-timing-function 规定动画的速度曲线。
速度曲线定义动画从一套 CSS 样式变为另一套所用的时间。
速度曲线用于使变化更为平滑。
语法
animation-timing-function: value;
animation-timing-function 使用名为三次贝塞尔(Cubic Bezier)函数的数学函数,来生成速度曲线。您能够在该函数中使用自己的值,也可以预定义的值:
值 | 描述 |
---|---|
linear | 动画从头到尾的速度是相同的。 |
ease | 默认。动画以低速开始,然后加快,在结束前变慢。 |
ease-in | 动画以低速开始。 |
ease-out | 动画以低速结束。 |
ease-in-out | 动画以低速开始和结束。 |
cubic-bezier(n,n,n,n) | 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。 |
2.4 animation-delay 属性
定义和用法
animation-delay 属性定义动画何时开始。
animation-delay 值以秒或毫秒计。
2.5 animation-iteration-count 属性
定义和用法
animation-iteration-count 属性定义动画的播放次数。
语法
animation-iteration-count: n|infinite;
值 | 描述 |
---|---|
n | 定义动画播放次数的数值。 |
infinite | 规定动画应该无限次播放。 |
2.6 animation-direction 属性
定义和用法
animation-direction 属性定义是否应该轮流反向播放动画。
如果 animation-direction 值是 "alternate",则动画会在奇数次数(1、3、5 等等)正常播放,而在偶数次数(2、4、6 等等)向后播放。
语法
animation-direction: normal|alternate;
值 | 描述 |
---|---|
normal | 默认值。动画应该正常播放。 |
alternate | 动画应该轮流反向播放。 |
2.7 animation-fill-mode 属性
定义和用法
animation-fill-mode 属性规定动画在播放之前或之后,其动画效果是否可见。
值 | 描述 |
---|---|
none | 不改变默认行为。 |
forwards | 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。 |
2.8 animation-play-state 属性
定义和用法
animation-play-state 属性规定动画正在运行还是暂停。
此属性可在:hover伪类中使用,也可在js中使用,来暂停动画。
语法
animation-play-state: paused|running;
值 | 描述 |
---|---|
paused | 规定动画已暂停。 |
running | 规定动画正在播放。 |
3. 3D转换
3.1 rotateX() 方法
通过 rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转。
3.2 rotateY() 旋转
通过 rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转。
3.3 perspective 属性
定义和用法
perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。
当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
语法
perspective: number|none;
值 | 描述 |
---|---|
number | 元素距离视图的距离,以像素计。 |
none | 默认值。与 0 相同。不设置透视。 |
3.4 transform-style 属性
定义和用法
transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素。
语法
transform-style: flat|preserve-3d;
值 | 描述 |
---|---|
flat | 子元素将不保留其 3D 位置。 |
preserve-3d | 子元素将保留其 3D 位置。 |
GISer, a novice who is learning hard
博客内容遵循 署名-非商业性使用-相同方式共享 4.0
国际 ( CC 4.0 BY-SA )
协议
本文永久链接是:
https://blog.manchan.top/post/introduction-to-front-end-development-2D3D-transform&animation/