css动画——transition和animation

http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html

第一部分:CSS Transition

在CSS 3引入Transition(过渡)这个概念之前,CSS是没有时间轴的。也就是说,所有的状态变化,都是即时完成。

delay的真正意义在于,它指定了动画发生的顺序,使得多个不同的transition可以连在一起,形成复杂效果。

transition的使用注意

(1)目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀。

(2)不是所有的CSS属性都支持transition。

(3)transition需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态。比如,height从0px变化到100px,transition可以算出中间状态。但是,transition没法算出0px到auto的中间状态,也就是说,如果开始或结束的设置是height: auto,那么就不会产生动画效果。类似的情况还有,display: none到block,background: url(foo.jpg)到url(bar.jpg)等等。

transition的局限

transition的优点在于简单易用,但是它有几个很大的局限。

(1)transition需要事件触发,所以没法在网页加载时自动发生。

(2)transition是一次性的,不能重复发生,除非一再触发。

(3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。

(4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

CSS Animation就是为了解决这些问题而提出的。

第二部分:CSS Animation

首先,CSS Animation需要指定动画一个周期持续的时间,以及动画效果的名称。


div:hover {
  animation: 1s rainbow;
}

上面代码表示,当鼠标悬停在div元素上时,会产生名为rainbow的动画效果,持续时间为1秒。为此,我们还需要用keyframes关键字,定义rainbow效果。


@keyframes rainbow {
  0% { background: #c00; }
  50% { background: orange; }
  100% { background: yellowgreen; }
}

同transition一样,animation也是一个简写形式。


div:hover {
  animation: 1s 1s rainbow linear 3 forwards normal;
}

这是一个简写形式,可以分解成各个单独的属性。


div:hover {
  animation-name: rainbow;
  animation-duration: 1s;
  animation-timing-function: linear;
  animation-delay: 1s;
    animation-fill-mode:forwards;
  animation-direction: normal;
  animation-iteration-count: 3;
}

浏览器前缀

目前,IE 10和Firefox(>= 16)支持没有前缀的animation,而chrome不支持,所以必须使用webkit前缀。

也就是说,实际运用中,代码必须写成下面的样子。


div:hover {
  -webkit-animation: 1s rainbow;
  animation: 1s rainbow;
}

@-webkit-keyframes rainbow {
  0% { background: #c00; }
  50% { background: orange; }
  100% { background: yellowgreen; }
}

@keyframes rainbow {
  0% { background: #c00; }
  50% { background: orange; }
  100% { background: yellowgreen; }
}
时间: 2024-10-18 16:26:01

css动画——transition和animation的相关文章

css动画(transition/transform/animation)

在开发中,一个好的用户操作界面,总会夹杂着一些动画.css用对少的代码,来给用户最佳的体验感,下面我总结了一些css动画属性的使用方法及用例代码供大家参考,在不对的地方,希望大佬直接拍砖评论. 1 transition(过渡) 使用语法: transition: property duration timing-function delay; 参数: (1) property(设置过渡效果的css属性名称):none | all | property.none表示没有属性获得过渡效果:all表示

css 动画 transition和animation

本文参考:http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html 1. transition基本用法: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="

关于CSS的Transition,Transform,Animation

Transform:DOM变形 Transition:某个DOM或者多个DOM变化,只有两个关键帧. Animation:生成动画,可以多个关键帧 Transition 需要触发的时事件. Animation不需要 关于CSS的Transition,Transform,Animation,布布扣,bubuko.com

CSS动画效果之animation

Y(^o^)Y css动画大乱弹之animation. 概述 什么是animation呢?在回答这个问题之前,先要说明什么叫做@keyframe(关键帧).@keyframe算是一个动画模板.在其中,可以使用百分比,如从0%到100%的任意值,分别在每个百分比中,加上不同的属性,从而让元素达到一种在不断变化的动画效果.这和我们制作flash动画一样,我们只需设计几个关键帧,系统就能生成动画啦! 一个@keyframe例子: 1 /*定义关键帧动画*/ 2 @keyframes myframe {

CSS3动画 transition和animation的用法和区别

transition和animation都是CSS3新增的特性,使用时需要加内核 浏览器 内核名称 W3C   IE  -ms-  Chrome/Safari -webkit-   Firefoc -moz-   opera -o-  区别: transition是过度属性,需要用户自行触发,触发时间比如:点击,鼠标悬浮等 animation是动画属性,其不需要用户触发,网页加载完成后自动执行 使用: transation{过度属性 过度时间 动画类型 延迟时间} -o-transation{过

关于css3里的transition和animation

** 做了很久的项目了,transition和animation两个css3属性经常被用到实际项目当中,想想把它整理出来.如下: 1:先介绍transition: a,在做项目中经常会遇见这样的情景,比如一个按钮,当鼠标移入进去的时候改变按钮背景颜色以及字体颜色,此时我们一般会这么做: .btn{width: 80px;height: 25px;border: 1px solid #333;color:#333;text-align: center;line-height: 25px;} .bt

CSS动画 animation与transition

一.区分容易混淆的几个属性和值 先区分一下css中的几个属性:animation(动画).transition(过渡).transform(变形).translate(移动). CSS3中的transform(变形)属性用于内联元素和块级元素,可以旋转.扭曲.缩放.移动元素,它的属性值有以下五个:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix: transform(变形)是CSS3中的元素的属性,而translate只是transform的一个属性

[ css 过渡和动画 transition animation ] 过渡和动画听课笔记记录

HTML5 过渡: 过渡:给改变添加过程; 要实现这一点就必须规定两项条件: 1.规定要将效果添加到那个css的属性上(那个属性需要进行改变); 2.规定效果的时长; 3.transition:属性 时长(要将多个属性进行过渡设置,中间以逗号进行区分,如果要是将整体属性全部变化可以省略属性而直接设置时间就好了); CSS过渡属性: 1.transition-property:指定过渡或动态模拟的css属性; 1.1 none:没有指定任何样式; 1.2 all:给所有样式进行更改(通常我们不写就

css——动画(transform, transition, animation)

transform 静态属性,一旦写进style里面,会立即显示作用,无任何变化过程.(类似于left, right, top, bottom这类属性) 主要用来做元素的变形 改变元素样式的属性主要有以下五个 translate3d(x,y,z) 用来控制元素在页面的三轴上的位置 rotate(10deg) 是用来控制元素旋转角度(度deg) skewx,y 制作斜度,2d里面创建3d透视图的必备属性 scale3d(2, 1.5, -6) 用来放大缩小效果,属性是比值 matrix3d css