CSS3 新增的 3D 变换属性: CSS3 3D 转换支持开发者在 css 代码中利用 css3 的 3D 函数,在页面里开发出一些简单的 3D 效果。
本节内容要点:
- 利用 transform 改变各个元素位置
- 利用 transition 增加动态效果
- 利用 perspective 属性改变视角
3D 元素的属性#
- transform:利用一些方法对元素进行 2D 或者 3D 转换。具体 转换方法参看 3D 元素的方法
 语法:transform: none|transform-functions;- none定义不进行转换。
- transform-functions使用3D 元素的方法
 
- transform-origin:设置元素坐标系原点的位置,影响到 2D、3D 的旋转效果 
 语法:- transform-origin: x-axis y-axis z-axis;- x-axis 定义视图被置于 X 轴的何处。可能的值:
 left
 center
 right
 length
 %
- y-axis 定义视图被置于 Y 轴的何处。可能的值:
 top
 center
 bottom
 length
 %
- z-axis 定义视图被置于 Z 轴的何处。可能的值:
 length
 - 示例: - -webkit-transform-origin:20% 40%; /* Safari 和 Chrome */- 取值对比: 1.数字和百分比相对于左上角 2.关键字相对于整个元素 - top = top center = center top = 50% 0 right = right center = center right = 100%或(100% 50%) bottom = bottom center = center bottom = 50% 100% left = left center = center left = 0或(0 50%) center = center center = 50%或(50% 50%) top left = left top = 0 0 right top = top right = 100% 0 bottom right = right bottom = 100% 100% bottom left = left bottom = 0 100%- 浏览器支持  Internet Explorer 10、Firefox、Opera 支持 transform-origin 属性。 Internet Explorer 10、Firefox、Opera 支持 transform-origin 属性。
 Internet Explorer 9 支持替代的 -ms-transform-origin 属性(仅适用于 2D 转换)。
 Safari 和 Chrome 支持替代的 -webkit-transform-origin 属性(3D 和 2D 转换)。
 Opera 只支持 2D 转换。
- x-axis 定义视图被置于 X 轴的何处。可能的值:
- transform-style:规定如何在 3D 空间中呈现被嵌套的元素 
 语法:- transform-style: flat|preserve-3d;- flat所有子元素在 2D 平面呈现。
 沿着 X 轴或 Y 轴方向旋转该元素将导致位于正或负 Z 轴位置的子元素显示在该元素的平面上,而不是它的前面或者后面。著作权归作者所有。
- preserve-3d子元素将保留其 3D 位置。
 - 示例: - -webkit-transform-style: preserve-3d; /* Safari 和 Chrome */- 浏览器支持  Firefox 支持 transform-style 属性。 Firefox 支持 transform-style 属性。
 Chrome、Safari 和 Opera 支持替代的 -webkit-transform-style 属性。
- perspective:perspective 属性定义 3D 元素距视图的距离,以像素计。(改变视角距离) - 提示:请与 perspective-origin 属性一同使用该属性,这样您就能够改变 3D 元素的底部位置。
语法: perspective: number|none;
- number元素距离视图的距离,以像素计。
- none默认值。与 0 相同。不设置透视。
 - 示例: - div { perspective: 500; -webkit-perspective: 500; /* Safari 和 Chrome */ }- 浏览器支持 
 目前浏览器都不支持 perspective 属性。
 Chrome 和 Safari 支持替代的 -webkit-perspective 属性。
- 提示:请与 perspective-origin 属性一同使用该属性,这样您就能够改变 3D 元素的底部位置。
语法: 
- perspective-origin:改变 3D 元素的底部位置(改变视角的朝向) 
 语法:- perspective-origin: x-axis y-axis;数字和百分比相对于左上角- x-axis 定义视图被置于 X 轴的何处。可能的值:
 left
 center
 right
 length
 %
- y-axis 定义视图被置于 Y 轴的何处。可能的值:
 top
 center
 bottom
 length
 %
 - 示例: - div { perspective: 150; perspective-origin: 10% 10%; -webkit-perspective: 150; /* Safari 和 Chrome */ -webkit-perspective-origin: 10% 10%; /* Safari 和 Chrome */ }- 浏览器支持 
 目前浏览器都不支持 perspective-origin 属性。
 Chrome 和 Safari 支持替代的 -webkit-perspecitve-origin 属性。
- x-axis 定义视图被置于 X 轴的何处。可能的值:
- backface-visibility:backface-visibility 属性定义当元素不面向屏幕时是否可见。 
 语法:- backface-visibility 属性定义当元素不面向屏幕时是否可见。- visible背面是可见的。
- hidden背面是不可见的。
 - 示例: - div { backface-visibility: hidden; -webkit-backface-visibility: hidden; /* Chrome 和 Safari */ -moz-backface-visibility: hidden; /* Firefox */ -ms-backface-visibility: hidden; /* Internet Explorer */ }- 浏览器支持 
 只有 Internet Explorer 10+ 和 Firefox 支持 backface-visibility 属性。
 Opera 15+、Safari 和 Chrome 支持替代的 -webkit-backface-visibility 属性。
3D 元素的方法#
语法: transform: none|transform-functions; 方法使用应该加transform:前缀
- none定义不进行转换。
- transform-functions3D 变换函数。具体函数及功能如下:- matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
- translate3d(x,y,z) 定义 3D 转化。
- translateX(x) 定义 3D 转化,仅使用用于 X 轴的值。
- translateY(y) 定义 3D 转化,仅使用用于 Y 轴的值。
- translateZ(z) 定义 3D 转化,仅使用用于 Z 轴的值。
- scale3d(x,y,z) 定义 3D 缩放转换。
- scaleX(x) 定义 3D 缩放转换,通过给定一个 X 轴的值。
- scaleY(y) 定义 3D 缩放转换,通过给定一个 Y 轴的值。
- scaleZ(z) 定义 3D 缩放转换,通过给定一个 Z 轴的值。
- rotate3d(x,y,z,angle) 定义 3D 旋转。
- rotateX(angle) 定义沿 X 轴的 3D 旋转。
- rotateY(angle) 定义沿 Y 轴的 3D 旋转。
- rotateZ(angle) 定义沿 Z 轴的 3D 旋转。
- perspective(n) 定义 3D 转换元素的透视视图。
 
示例:
div {
  transform: rotate(7deg);
  -ms-transform: rotate(7deg); /* IE 9 */
  -moz-transform: rotate(7deg); /* Firefox */
  -webkit-transform: rotate(7deg); /* Safari 和 Chrome */
  -o-transform: rotate(7deg); /* Opera */
}浏览器支持 Internet Explorer 10、Firefox、Opera 支持 transform 属性。
Internet Explorer 10、Firefox、Opera 支持 transform 属性。
Internet Explorer 9 支持替代的 -ms-transform 属性(仅适用于 2D 转换)。
Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。
Opera 只支持 2D 转换。