Transform 转换
Transform
属性向元素应用 2D 或 3D 转换,该属性允许我们对元素进行旋转、缩放、移动或倾斜,主要有以下几个方法:translate()
、rotate()
、scale()
、skew()
、matrix()
。
JavaScript 语法: object.style.transform="rotate(xdeg)" |
Transform 属性:
transform
向元素应用 2D 或 3D 转换。transform-origin
允许你改变被转换元素的位置。transform-style
规定被嵌套元素如何在 3D 空间中显示。perspective
规定 3D 元素的透视效果。perspective-origin
规定 3D 元素的底部位置。backface-visibility
定义元素在不面对屏幕时是否可见。
浏览器支持:
- Internet Explorer 10、Firefox、Opera 支持 transform 属性。
- Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。
- Internet Explorer 9 要求前缀 -ms- 版本(仅适用于 2D 转换)。
- Opera 只支持 2D 转换。
translate()
元素根据给定的 left
(x 坐标) 和 top
(y 坐标) 位置参数,从其当前位置移动。
translate(x, y)
定义 2D 转换,沿着 X 和 Y 轴移动元素。translateX(n)
定义 2D 转换,沿着 X 轴移动元素。translateY(n)
定义 2D 转换,沿着 Y 轴移动元素。translateZ(z)
定义 3D 转化,仅使用用于 Z 轴的值。
语法:
transform: translate(x, y); |
Examples:
/* 使div向左偏移10px, 向上偏移20px */ |
rotate()
元素旋转给定的角度。
rotate共包含三个方法:
rotate(n)
元素顺时针旋转给定的角度。允许负值,元素将逆时针旋转(2D转换)。rotateX(x)
元素围绕其 X 轴以给定的度数进行旋转(3D转换)。rotateY(y)
元素围绕其 Y 轴以给定的度数进行旋转(3D转换)。rotate3d(x, y, z, angle)
定义 3D 旋转。
语法:
transform: rotate(n); |
Examples:
/* 使div顺时针旋转20° */ |
scale()
元素的尺寸会增加或减少,根据给定的宽度(X 轴)和高度(Y 轴)参数。
scale(x, y)
定义 2D 缩放转换,改变元素的宽度和高度。scale3d(x, y, z)
定义 3D 缩放转换。scaleX(x)
定义 2D 缩放转换,改变元素的宽度。scaleY(y)
定义 2D 缩放转换,改变元素的高度。scaleZ(z)
定义 3D 缩放转换,通过给定一个 Z 轴的值。
语法:
transform: scale(x, y); |
Examples:
/* 使div宽度转换为原始尺寸的 2 倍,把高度转换为原始高度的 4 倍。 */ |
skew()
元素翻转给定的角度,根据给定的水平线(X 轴)和垂直线(Y 轴)参数。
skew(x-angle, y-angle)
定义 2D 倾斜转换,沿着 X 和 Y 轴。skewX(angle)
定义 2D 倾斜转换,沿着 X 轴。skewY(angle)
定义 2D 倾斜转换,沿着 Y 轴。
语法:
transform: skew(x-angle, y-angle); |
Examples:
/* 使div 围绕 X 轴把翻转 30 度,围绕 Y 轴翻转 20 度。 */ |
matrix()
暂时跳过,后续研究
Transition 过渡
过渡是元素从一种样式逐渐改变为另一种的效果,要实现这一点,必须规定两项内容:
- 规定您希望把效果添加到哪个 CSS 属性上
- 规定效果的时长
当指定的 CSS 属性改变值改变出发时(比如hover,必须指定触发后会改变的style样式),过渡效果开始,如果时长未规定,则不会有过渡效果,因为默认值是 0。
语法:
transition: style time; |
过渡属性:
transition
简写属性,用于在一个属性中设置四个过渡属性。transition-property
规定应用过渡的 CSS 属性的名称。transition-duration
定义过渡效果花费的时间。默认是 0。transition-timing-function
规定过渡效果的时间曲线。默认是 “ease”。transition-delay
规定过渡效果何时开始。默认是 0。
Examples:
/* |
浏览器支持:
- Internet Explorer 10、Firefox、Chrome 以及 Opera 支持 transition 属性。
- Safari 和 Chrome 25 以及更早的版本需要前缀 -webkit-。
- Internet Explorer 9 以及更早的版本,不支持 transition 属性。
animation和@keyframes动画
@keyframes
规则用于创建动画。在 @keyframes
中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。animation
用于把 @keyframes
中创建的动画捆绑到某个css选择器。
用百分比来规定变化发生的时间,或用关键词 from
和 to
,等同于 0%
和 100%
。0%
是动画的开始,100%
是动画的完成。
为了得到最佳的浏览器支持,应该始终定义 0%
和 100%
选择器。
必须定义动画的名称和时长。如果忽略时长,则动画不会允许,因为默认值是 0。
属性:
@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
规定对象动画时间之外的状态。
Examples:
/* |
浏览器支持:
- Internet Explorer 10、Firefox 以及 Opera 支持
@keyframes
规则和animation
属性。 - Chrome 和 Safari 需要前缀
-webkit-
。 - Internet Explorer 9,以及更早的版本,不支持
@keyframes
规则或animation
属性。
参考:
[1.CSS3 教程](http:/* www.w3school.com.cn/css3/index.asp)
进阶:
[1.理解CSS3 transform中的Matrix(矩阵)](http:/* blog.csdn.net/henren555/article/details/9699449)
[2.好吧,CSS3 3D transform变换,不过如此!](http:/* www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/)