标签:
CSS 过渡(transition)是通过定义元素从起点的状态和结束点的状态,在一定的时间区间内实现元素平滑地过渡或变化的一种补间动画机制。你可以让属性的改变过程持续一段时间,而不是立即生效。
通过transition你可以决定哪个属性发生动画效果 (可以通过明确地列出这些属性),何时开始动画 (通过设置delay), 动画持续多久 (通过设置duration), 以及如何动画 (通过定义timing函数,比如线性地或开始快结尾慢)。
Transition又包含了四个子属性,分别为:
定义也非常灵活,先介绍一下这4个子属性:
all
,元素任何可过渡(transition)属性值变化时都将执行过渡(transition)效果。none
时,动画立即停止。all。
语法:
例如:
语法:
例如:
指定CSS属性的变换速率,预设的有:ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier(x1, y1, x2, y2),默认值时easy:
指定一个动画开始执行的时间,即当改变元素属性值后多长时间开始执行“转换效果”,初始默认值为0;
语法:
例如:
过渡可以简写。
语法:
例如:
以 transition-property
的值列表长度为标准,如果某个属性值列表长度短于它的,则重复值以长度一致, 例如:
将按下面这样处理:
类似地,如果某个属性的值列表长于 transition-property
的,将被截短。 例如:
将按下面这样处理:
css3动画一般通过鼠标事件或者鼠标状态定义动画,通常我们可以用CSS中伪类、使用js修改元素的样式属性或追加删除样式来执行定义的动画。CSS中伪类执行动画包括:
动态伪类 | 起作用的元素 | 描述 |
:link | 只有链接 | 未访问的链接 |
:visited | 只有链接 | 访问过的链接 |
:hover | 所有元素 | 鼠标经过元素 |
:active | 所有元素 | 鼠标点击元素 |
:focus | 所有可被选中的元素 | 元素被选中 |
上面的例子就是使用CSS中伪类执行动画的。 使用js修改元素的样式属性或追加删除样式来执行动画: 一般是鼠标事件操作和定时操作(window.setTimeout(),window.setInterval());
还应注意当一个元素使用过渡(transition)后,立即使用.appendChild()
将其加入到DOM中或删除其display: none;
。这被视为如果初始状态从来没有存在过那么元素总是在它的最终状态。克服这个限制最简单的办法是使用极少毫米数的window.setTimeout()。
transitionend
事件会在 CSS transition 过渡完成时触发. 当transition完成前被移除或者取消,比如移除css的transition-property
属性,此事件将不会被触发。哥浏览器下事件的支持情况。
Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|
1.0 开始webkitTransitionEnd |
4.0 (2.0) 开始transitionend |
10开始transitionend |
10.5 开始oTransitionEnd 12 开始otransitionend
12.10 开始 |
3.2 开始webkitTransitionEnd |
transitionend
事件会在 每个过渡属性完成时都触发该事件,而且浏览器下还有不一致的地方,比如border过渡的时候,webkit下只触发一次,输出:
过渡属性: border; 时间:2
而firefox输出:
过渡属性: border-left-color; 时间:2
过渡属性: border-bottom-color; 时间:2
过渡属性: border-right-color; 时间:2
过渡属性: border-top-color; 时间:2
过渡属性: border-left-width; 时间:2
过渡属性: border-bottom-width; 时间:2
过渡属性: border-right-width; 时间:2
过渡属性: border-top-width; 时间:2
建议在使用的时候判断是否所有的属性是否已经过渡完成,或者判断特定的属性名在执行该事件。
标签:
原文地址:http://www.cnblogs.com/theWayToAce/p/5291636.html