1 2 3 4 5 6 -moz-transform: skew(30deg, -10deg); -webkit-transform: skew(30deg, -10deg); -o-transform
浏览器支持Skew属性目前只被Firefox, Safari/Chrome和Oprea 10.5支持,而且还要使用浏览器的私有前缀-moz- 和-webkit-。
Matrix没错,Matrix就是矩阵,矩阵是高等数学中非常基础的一个东东,而在CSS 3中确实一个相当高级的功能,CSS 3引入matrix函数,可以非常灵活的实现上述的各种效果。它有6个参数(a,b,c,d,e,f),它事实上是一个3*3矩阵,经过该矩阵将旧的参数转换成新值:
| a b e |
| c d f |
| 0 0 1 |
如果你有兴趣深入研究,可以看一下这里,这是SVG的一个文档,但是对于matrix变换的原理是通用的。
让我们来看一个例子吧:
1 2 3 4 5 6 -moz-transform--webkit-transform--o-transform-
浏览器支持可喜的是,IE支持matrix滤镜,虽然它不支持大部分CSS3变形功能,但是使用它的这个滤镜,基本也可以实现相同的效果,不过,你要先搞明白矩阵运算再说。webkit和Firefox(3.5+)、Opera 10.5都支持该功能。
链式变形变形常常是单独的,但是如果你想同时用到多种变形,代码也是可以快速整合的,特别是使用私有扩展。幸运的是,我们有一些内置的缩写:
1 2 3 4 5 6 7 8 9 10 11 #nav{ -moz-transform-webkit-transform-o-transform-moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -moz-transform-webkit-transform-o-transform
这些变形可以被链到一起,从而让你的代码更高效:
1 2 3 4 5 #nav{ -moz-transformrotate-webkit-transformrotate-o-transformrotate
这些属性的真正的威力是合并到一起。你可以移动、旋转、缩放并控制任何内联元素和块级元素而不使用JavaScript。一旦这些属性的支持变的更加广泛,我们就可以创建更丰富和更轻量的界面和应用。
transform-origintransform-origin不是transform的一个子功能,但是和transform关系非常密切。它可以用来指定transform的起点,比如,rotate变形的默认起点是其中间,你可以将起点设置在左上角,或者左下角,这样rotate变形的结果就可能大不相同了。
transform-origin接受两个参数,它们可以是百分比,em,px等具体的值,也可以是left,center,right,或者 top,middle,bottom等描述性参数。几个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 -webkit-transform-origin-o-transform-origin... -moz-transform-origin%; -webkit-transform-origin%; -o-transform-origin%; ...-moz-transform-origin:top left; -webkit-transform-origin:top left; -o-transform-origin:top left; ...}
浏览器兼容性该属性目前也只有webkit、firefox和Opera 10.5支持,而且需要添加各自的私有前缀。
transition(转换)一个涉及到CSS属性的基本的转换就是定义和移动一个元素从它的静止状态(比如,深蓝色背景)到它的hover或者激活状态(比如,浅蓝色背景)。
转换可以和变形同时使用(以及引发诸如:hover 或:focus事件)以创建一些动画。淡出背景色彩,滑动一个元素以及让一个对象旋转都可以通过CSS转换实现。
1 2 3 4 5 6 7 8 9 10 aa-webkit-transition-property:background-color; -o-transition-property:background-color; /* 让它持续两秒钟*/ -webkit-transition-duration:2s; -o-transition-duration:2s; }
转换的一些参数指定转换的CSS属性名称,比如,上面的例子中,将转换应用于background-color属性。
定义转换花费的时间(从旧属性换到新属性花费的时间)
可以理解为过度效果。指定转换过程中的中间值。可以用cubic-bezier指定。当然有几个常用的内置值:ease | linear | ease-in | ease-out | ease-in-out
这个比较容易理解,就是转换延迟的时间。时间可以为正整数、负整数和零,非零的时候必须设置单位是s(秒)或者ms(毫秒),为负数的时候,转换的动作会从该时间点开始显示,之前的动作被截断。
注:参数部分为前端观察翻译时添加,原文中没有。
浏览器支持像transform属性一样酷,但是目前只有WebKit浏览器支持。Opera 10.5 pre版本也可以通过添加-o-前缀来支持。-moz-transition已经在最近的nightly-build版本的Firefox 3.7中可用。你也可以添加-moz-transition到你的CSS中以实现将来的增强。甚至可以添加一个不用私有前缀的属性,以防万一。
Animation动画是CSS 3最有用的地方。你可以将我们在上面讨论的所有的元素与动画属性比如animation-duration、animation-name 和animation-timing-function整合以创建像Flash动画一样的效果——纯CSS。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 -webkit-transform-style: preserve-3d; /*让整个行使用x-轴旋转、7秒中的动画、无限次播放以及线性 */ -webkit-animation-name: x-spin; -webkit-animation-duration: 7s; -webkit-animation-iteration-count: infinite; -webkit-animation-timing-function% % %