`
rainsilence
  • 浏览: 160482 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Css3 3d animation Step1---如何实现css动画

阅读更多

 

前言:

好久没写文章了,今天看到webQQ又一次升级。我用的chrome的画面切换甚至用到了css 3d animation+3dtransform。

 

本系列文章用于介绍如何仅用css实现3d动画,这是本系列的第一篇文章,仅仅只介绍了动画。也许这篇文章也许过于超前,因为大部分的浏览器器,甚至包括FF,都还没有实现3d transform。涉及到animation的部分,你可以通过webkit内核的浏览器(Chrome or Safari)或者Firefox来浏览,但是涉及到3d transform的东西请用webkit的浏览器器浏览。

 

Css3 @KeyFrames Rule

什么是KeyFrames?直译过来就是关键帧。你可以把他理解为flash中的关键帧。他以关键字from开始,to结束。中间的部分都为百分比。意为动画到了某个百分比时,他的状态。而帧与帧之间的补间动画浏览器会帮你自动生成。

 

例如:

 

<style type="text/css">  
      
    @keyframes myfirst {  
        from {background: red;}  
        to {background: yellow;}  
    }  
  
    @-moz-keyframes myfirst /* Firefox */ {  
        from {background: red;}  
        to {background: yellow;}  
    }  
  
    @-webkit-keyframes myfirst /* Safari and Chrome */ {  
        from {background: red;}  
        to {background: yellow;}  
    }  
      
</style>  

 为了支持将来可能有的标准,你不得不写3遍。

试着运行下面的代码,里面可能会有你没见过的属性,我们下面会讲到

 

 大家等待了两秒后,突然从画面左上角出现一个方块,花费5秒从红色变到黄色。可能大家已经猜到了

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Insert title here</title>  
  
  
<style type="text/css">  
      
    @keyframes myfirst {  
        from {background: red;}  
        to {background: yellow;}  
    }  
  
    @-moz-keyframes myfirst /* Firefox */ {  
        from {background: red;}  
        to {background: yellow;}  
    }  
  
    @-webkit-keyframes myfirst /* Safari and Chrome */ {  
        from {background: red;}  
        to {background: yellow;}  
    }  
      
    #sample {  
        animation-name: myfirst;  
        animation-duration: 5s;  
        animation-timing-function: linear;  
        animation-delay: 2s;  
        animation-iteration-count: infinite;  
        animation-direction: alternate;  
        animation-play-state: running;  
        /* Firefox: */  
        -moz-animation-name: myfirst;  
        -moz-animation-duration: 5s;  
        -moz-animation-timing-function: linear;  
        -moz-animation-delay: 2s;  
        -moz-animation-iteration-count: infinite;  
        -moz-animation-direction: alternate;  
        -moz-animation-play-state: running;  
        /* Safari and Chrome: */  
        -webkit-animation-name: myfirst;  
        -webkit-animation-duration: 5s;  
        -webkit-animation-timing-function: linear;  
        -webkit-animation-delay: 2s;  
        -webkit-animation-iteration-count: infinite;  
        -webkit-animation-direction: alternate;  
        -webkit-animation-play-state: running;  
    }  
      
</style>  
  
</head>  
<body>  
    <div id="sample" style="width:120px; height:120px;">  
          
    </div>  
</body>  
</html>  

 

 

animation-name: 和上面的@keyframe的名字对应起来,代表当前用的是何种变换

animation-duration: 代表动画开始到结束总共耗时多少时间

animation-timing-function: 代表动画的进行是均匀的还是先快后慢还是?他有这几个枚举值:linear:线性,ease:默认值,先慢后快,到了快一半的时候再变慢,ease-in:先,ease-out:先快后慢。ease-in-out:两头慢,中间快。cubic-bezier(n,n,n,n):自定义,n只能输入0-1之间的值。输入的值越大,移动的越慢,4个n代表了动画的4个阶段25%,50%,75%,100%。

 

也就是说,linear,ease等值,只是cubic-bezier在浏览器中的预设值,可以简单表示如下:

 

 

#linear {animation-timing-function: cubic-bezier(0,0,1,1;}  
#ease {animation-timing-function: cubic-bezier(0.25,0.1,0.25,1);}  
#ease-in {animation-timing-function: cubic-bezier(0.42,0,1,1);}  
#ease-out {animation-timing-function: cubic-bezier(0,0,0.58,1);}  
#ease-in-out {animation-timing-function: cubic-bezier(0.42,0,0.58,1);} 

 

animation-delay:代表动画延迟多少时间开始,默认为0

animation-iteration-count:代表动画执行多少次,默认为1.如果输入infinite,则代表无限次

animation-direction:默认值为normal,代表动画执行完后从头开始。如果设置为alternate,那么动画在结束后,第二遍会反着执行一遍

animation-play-state:默认值running,代表现在是执行状态。如果要让动画停止,只需要把这个值赋值为paused

 

 

好,接下来把上面的代码串联起来。

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Insert title here</title>  
  
  
<style type="text/css">  
      
    @keyframes myfirst {  
        from {left:0px; top:0px; background: red; }  
        50% {left:100px; top:80px;}  
        70%, 80% {transform: rotate(-360deg);left:240px; top:240px;}  
        to {left:279px; top:279px; background: yellow;}  
    }  
  
    @-moz-keyframes myfirst /* Firefox */ {  
        from {left:0px; top:0px; background: red; }  
        50% {left:100px; top:80px;}  
        70%, 80% {-moz-transform: rotate(-360deg);left:240px; top:240px;}  
        to {left:279px; top:279px; background: yellow;}  
    }  
  
    @-webkit-keyframes myfirst /* Safari and Chrome */ {  
        from {left:0px; top:0px; background: red; }  
        50% {left:100px; top:80px;}  
        70%, 80% {-webkit-transform: rotate(-360deg) scale(0.5, 0.5);left:240px; top:240px;}  
        to {left:279px; top:279px; background: yellow;}  
    }  
      
    #sample {  
        animation-name: myfirst;  
        animation-duration: 5s;  
        animation-timing-function: linear;  
        animation-iteration-count: infinite;  
        animation-direction: alternate;  
        /* Firefox: */  
        -moz-animation-name: myfirst;  
        -moz-animation-duration: 5s;  
        -moz-animation-timing-function: linear;  
        -moz-animation-iteration-count: infinite;  
        -moz-animation-direction: alternate;  
        /* Safari and Chrome: */  
        -webkit-animation-name: myfirst;  
        -webkit-animation-duration: 5s;  
        -webkit-animation-timing-function: linear;  
        -webkit-animation-iteration-count: infinite;  
        -webkit-animation-direction: alternate;  
    }  
      
</style>  
  
</head>  
<body>  
    <div style="width:400px; height:400px; border-style:dashed; border-width:1px; position:relative;">  
        <div id="sample" style="width:120px; height:120px; position:absolute;"></div>  
    </div>  
      
</body>  
</html>  

 

上面的sample可以参考附件。以上就是css-animation标准的全部内容上面的sample可以参考附件。

 

 

 

 

 

分享到:
评论

相关推荐

    纯css3-球形3d旋转-多图3d球形旋转

    本项目“纯css3-球形3d旋转-多图3d球形旋转”着重展示了如何利用CSS3的特性来实现一个动态的、三维球形的图像旋转展示效果。这种效果可以用于网站的轮播图、产品展示或任何需要吸引用户注意力的地方。 首先,我们来...

    jquery绑定 css3 animation-keyframes关键帧动画

    ### 使用jQuery绑定CSS3 Animation-Keyframes关键帧动画 #### 前言 本文将详细介绍如何通过jQuery来控制CSS3中的`animation-keyframes`关键帧动画的启动与停止。这种技术非常实用,尤其当动画需要根据用户的操作...

    css动画 css-animation-101.pdf

    在Web上实现动画,主要依靠CSS3的两个关键特性:过渡(Transitions)和动画(Animations)。过渡用于平滑地改变一个元素从一种样式到另一种样式的状态,而动画则更加强大,可以控制整个过程的时间线和关键帧,实现更...

    通过CSS3中的animation-iteration-count属性来实现爱心效果

    通过CSS3中的animation-iteration-count属性来实现爱心效果

    纯css3 3D旋转科技球体动画特效

    【纯CSS3 3D旋转科技球体动画特效】是一种利用现代浏览器支持的CSS3特性实现的视觉效果,它能够创建出引人入胜、富有动态感的科技风格球体旋转展示。在网页设计和开发中,这样的特效可以增强用户体验,使网站或应用...

    css3-3d-shine-text.zip

    CSS3作为CSS的最新版本,引入了许多新的特性和功能,其中之一就是3D效果的实现。本篇文章将详细探讨如何使用CSS3来创建具有3D光泽效果的文字,以"css3-3d-shine-text.zip"中的实例为引导,帮助你理解和掌握这一技巧...

    纯CSS3实现的3D小球动画在线演示

    同时,CSS3的3D变换使得小球具有立体感,落地和跳动的效果通过关键帧动画实现,呈现出逼真的物理运动规律。 具体到CSS3的3D变换,主要涉及以下几个属性: 1. `transform`:这个属性允许我们对元素进行旋转、缩放、...

    CSS3 animation属性制作逼真的大风车旋转动画

    CSS3的Animation属性是现代网页设计中的一个重要工具,它使得开发者能够创建复杂的动态效果,如平滑的过渡、动画序列等,而无需依赖JavaScript或者其他外部库。在本案例中,我们将深入探讨如何使用CSS3的animation...

    css3 3D邮寄信封打开动画特效

    通过以上知识点的应用,"css3 3D邮寄信封打开动画特效"可以实现一个引人入胜的用户体验,增加网站的互动性和趣味性。在实际项目中,开发者需要结合具体需求和用户群体,恰当地运用这些技术,打造既美观又实用的网页...

    CSS3动画的集合

    2. **动画属性**:CSS3提供了几个属性来控制动画的行为,包括`animation-name`、`animation-duration`、`animation-timing-function`、`animation-delay`、`animation-iteration-count`、`animation-direction`、`...

    CSS3 animation动画

    **CSS3 Animation动画详解** CSS3是Web设计领域的一个重大突破,它引入了许多新的特性,其中最引人注目的就是动画(Animation)功能。通过CSS3的动画,开发者可以为网页元素添加平滑、动态的效果,提升用户体验。在...

    CSS3 animation超酷网页Loading加载进度条动画效果

    本文将深入探讨如何利用CSS3的animation属性制作出超酷的网页Loading加载进度条动画效果。 首先,我们需要了解CSS3的animation属性。CSS3的animation属性是一组属性的简写形式,包括`animation-name`、`animation-...

    CSS3特效-CSS3实现烟花特效

    CSS3是层叠样式表(Cascading Style Sheets)的第三版,它引入了许多新特性和功能,极大地扩展了网页设计的可能性,包括动画和特效。烟花特效就是其中的一种,它可以为网页增添节日氛围或者为用户界面带来独特的视觉...

    css3 animation酷炫的文字动画特效

    在本文中,我们将深入探讨如何使用CSS3 Animation创建酷炫的文字动画特效。CSS3 Animation是现代网页设计中不可或缺的一部分,它允许我们为元素添加平滑、动态的效果,从而提升用户体验和视觉吸引力。在这个主题中,...

    css3-3d-circle-progress-chart.zip

    《CSS3 3D圆形进度图的实现与应用》 CSS3是层叠样式表的最新版本,它引入了一系列令人兴奋的新特性,其中3D效果是其一大亮点。本篇文章将深入探讨如何利用CSS3创建3D圆形进度图表,以及在实际项目中的应用。 一、...

    纯CSS3实现的3D旋转线条球体动画特效源码.zip

    【标题】纯CSS3实现的3D旋转线条球体动画特效源码 在现代网页设计中,CSS3已经成为创建动态效果和复杂动画的关键工具。这个3D旋转线条球体动画特效利用了CSS3的特性,提供了无需JavaScript的交互式视觉体验。通过...

    css3彩色3D文字上下漂浮动画特效

    总结起来,创建"css3彩色3D文字上下漂浮动画特效"涉及的关键技术点包括:CSS3的`@keyframes`动画、`transform`属性(尤其是`rotateX`和`rotateY`)、`perspective`属性(实现3D效果)、以及`animation`属性来组合...

    CSS3实现逼真的3D星空背景动画特效

    本文将详细介绍如何使用CSS3来实现这种逼真的3D星空背景动画特效。 首先,CSS3中的3D变换是实现这种效果的关键。通过使用`transform`属性,我们可以对元素进行旋转、缩放和平移等3D操作。在创建星空背景时,通常会...

    HTML5CSS3 3D环形图片墙 伴随旋转动画

    CSS3的过渡(transition)和动画(animation)特性让图片墙的旋转动画成为可能。`transition`可以指定当元素的某个属性值改变时,其变化过程应该经过多长时间和何种方式完成。而`@keyframes`规则则定义了一个动画的...

    CSS3样式表-CSS3动画.pptx

    在CSS3中,动画是通过`@keyframes`规则定义,并通过`animation`属性来应用到特定的选择器上。下面将详细讲解这两个关键概念以及相关的动画属性。 ### 1. `@keyframes` 规则 `@keyframes`规则是CSS3动画的核心,...

Global site tag (gtag.js) - Google Analytics