CSS3过渡效果(css3transition)
CSS3的出现最引⼈注意的地⽅莫过于css动画(CSS Animation)了,⽽css3过渡(CSS Transition)让动画变的⽣动更逼真。今天就带⼤家⼀起来认识⼀下CSS Transition。
CSS3 Transitions
有了它,我们从⼀种效果转换到另⼀种效果⽽⽆需javascript或flash,我们只需⼀段CSS代码⽽已。
浏览器⽀持
属性浏览器
transition
Internet Explorer不⽀持过渡属性。
Firefox4需要前缀-moz-。
Chrome和Safari需要前缀-webkit-。
Opera需要前缀-o-。
它是如何⼯作?
CSS3的过渡效果,让⼀个元素从⼀种效果转换到另⼀种效果。
要做到这⼀点,你必须指定两件事:
1. 指定要添加效果的CSS属性
2. 指定效果的持续时间。
举例说明:
div
{
transition:width 2s;
-moz-transition:width 2s;/* Firefox 4 */
-webkit-transition:width 2s;/* Safari and Chrome */
-o-transition:width 2s;/* Opera */
}
注意:如果未指定动画延迟时间,过渡将没有任何效果,因为默认值是0。
⿏标放上去的时候,变换开始:
div:hover
{
width:300px;
}
在哪⾥定义动画效果?
css3动画⼀般通过⿏标事件或者说状态定义动画,通常我们可以⽤CSS中伪类
中伪类和js中的⿏标事件来定义。
动态伪类起作⽤的元素
起作⽤的元素描述
动态伪类
:link只有链接未访问的链接
:visited只有链接访问过的链接
:hover所有元素⿏标经过元素
:
active所有元素⿏标点击元素
:focus所有可被选中的元素元素被选中
js的事件也可以,⽐如click,focus,mousemove,mouseover,mouseout等等
transition的基本语法:
css3动画通过transition属性和其他css属性(颜⾊,宽⾼,变形,位置等等)配合来实现。transition的语法:
transition : [<'transition-property'> || <'transition-duration'> || <'transition-timing-
function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> ||
<'transition-timing-function'> || <'transition-delay'>]]*
当然这是简写,我们也可以完整的写:
transition-property: none | all | [ <IDENT> ] [ ',' <IDENT> ]*;
transition-duration: <time> [, <time>]*
transition-timing-function: ease | linear | ease-in | ease-out | ease-in-out | cubic-
bezier(<number>, <number>, <number>, <number>) [, ease | linear | ease-in | ease-
out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>)]*
transition-delay: <time> [, <time>]*
那些属性可以变换?
transition-property:要变化的属性,⽐如元素变宽则是width,⽂字颜⾊要变⾊这是W3C给出了⼀个可变换属性的列表:
CSS属性改变的对象
background-color⾊彩
background-image只是渐变
background-position百分⽐,长度
border-bottom-color⾊彩
border-bottom-width长度
border-color⾊彩
border-left-color⾊彩
border-left-width长度
border-right-color⾊彩
border-right-width长度
border-spacing长度
border-top-color⾊彩
border-top-width长度
border-width长度
bottom百分⽐,长度
color⾊彩
crop百分⽐
font-size百分⽐,长度
font-weight数字
grid-*数量
height百分⽐,长度
left百分⽐,长度
letter-spacing长度
line-height百分⽐,长度,数字
margin-bottom长度
margin-left长度
margin-right长度
margin-top长度
max-height百分⽐,长度
max-width百分⽐,长度
min-height百分⽐,长度
min-width百分⽐,长度
opacity数字
outline-color⾊彩
outline-offset整数
outline-width长度
padding-bottom长度
padding-left长度
padding-right长度
padding-top长度
right百分⽐,长度
js控制css3动画触发text-indent百分⽐,长度
text-shadow阴影
top百分⽐,长度
vertical-align百分⽐,长度,关键词
visibility可见性
width百分⽐,长度
word-spacing百分⽐,长度
z-index正整数
zoom数字
⼏乎所有的有⾊彩、⼤⼩或位置等组件的CSS属性,包括许多新添加的CSS3属性,都可以应⽤变换。⼀个值得注意的例外是box-shadow,不过部分浏览器还是对box-shadow添加了⽀持。
该取值还有个强⼤的“all”取值,表⽰上表所有属性;
除了以上属性外,当然还有css3中⼤放异彩的css3变形,⽐如放⼤缩⼩,旋转斜切,渐变等等。
动画时间
transition-duration:动画执⾏的时间,以秒为单位,⽐如0.1秒可以写成”0.1s”或者”.1s”,注意后⾯有个“s”单位。
动画执⾏的计算⽅式
transition-timing-function :动画执⾏的计算⽅式,这⾥时间函数是令⼈崩溃的贝塞尔曲线,幸好css3提过了⼏个取值:
ease:逐渐慢下来,函数等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0).
linear:线性过度,函数等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0).
ease-in:由慢到快,函数等同于贝塞尔曲线(0.42, 0, 1.0, 1.0).
ease-out:由快到慢, 函数等同于贝塞尔曲线(0, 0, 0.58, 1.0).
ease-in-out:由慢到快在到慢, 函数等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
cubic-bezier:特定的cubic-bezier曲线。 (x1, y1, x2, y2)四个值特定于曲线上点P1和点P2。所有值需在[0, 1]区域内,否则⽆效。
动画延迟
transition-delay:在动作和变换开始之间等待多久,通常⽤秒来表⽰(⽐如, .1s)。如果你不想延迟,该值可省略。
重叠动画
经常会碰到同⼀元素会有多个动画同时执⾏的时侯,⽐如⽂字颜⾊和背景同时变化:
-webkit-transition: color .25s linear , background-color 1s linear;
和transform(变形)结合的⼀些动画
这时候transition-property建议取值为“all”;
典型的应⽤举例:
放⼤缩⼩:
#scale { -webkit-transition: all .3s ease-in-out; } #scale:hover { -webkit-transform: scale(1.5); }
旋转:
#rotate { -webkit-transition: all 1s ease-in-out;}
#rotate:hover {-webkit-transform: rotate(720deg);}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论