• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >css3 > 前端制作动画的几种方式(css3,js)

前端制作动画的几种方式(css3,js)

作者:Jess_喵 字体:[增加 减小] 来源:互联网 时间:2017-06-02

本文主要包含js控制css3动画,js触发css3动画,html5 css3 js,h5 css3 js,ie css3.js等相关知识,Jess_喵 希望在学习及工作中可以帮助到您

制作动态的网页是是前端工程师必备的技能,很好的实现动画能够极大的提高用户体验,增强交互效果,那么动画有多少实现方式,一直对此有选择恐惧症的我就总结一下,以便在开发的时候选择最好的实现方式。

1.css的transition。

语法:

transition: property duration timing-function delay;

property:填写需要变化的css属性如:width,line-height,font-size,color等;

duration:完成过渡效果需要的时间(2s 或者2000ms)

timing-function:完成效果的速度曲线(linear,ease,ease-in,ease-out等等)

值 描述
linear 匀速(等于 cubic-bezier(0,0,1,1))。
ease 从慢到快再到慢(cubic-bezier(0.25,0.1,0.25,1))。
ease-in 慢慢变快(等于 cubic-bezier(0.42,0,1,1))。
ease-out 慢慢变慢(等于 cubic-bezier(0,0,0.58,1))。
ease-in-out 先变快再到慢(等于 cubic-bezier(0.42,0,0.58,1))。渐显渐隐效果
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。

timing-delay:动画效果的延迟触发时间(2s 或者2000ms)。

默认值分别为:all 0 ease 0

transition抓住了所设置变化属性的起始态和完成态,通过设定的速度曲线来完成动画。可以涉及到各种变化的css属性,默认为all,则所有变化的属性都会在出发时,以动画的形式展现出来。

这种动画方式是css3的,因此ie9以下是不支持的,其他的浏览器需要加前缀,并且只有两态,不支持自定义中间的状态。

例子:

<style type="text/css"> 

div

{

width:100px;

height:100px;

background:red;

transition:width 2s;

-moz-transition:width 2s; /* Firefox 4 */

-webkit-transition:width 2s; /* Safari and Chrome */

-o-transition:width 2s; /* Opera */

}

div:hover

{

width:300px;

}

</style>

<div></div> 
</div>

tips:transform是一种变化属性,该属性允许我们对元素进行旋转、缩放、移动或倾斜。可以作为transition中需要变化的属性。

前缀:

  1. transform:rotate(9deg);
  2. -ms-transform:rotate(9deg); /* Internet Explorer */
  3. -moz-transform:rotate(9deg); /* Firefox */
  4. -webkit-transform:rotate(9deg); /* Safari 和 Chrome */
  5. -o-transform:rotate(9deg); /* Opera */  

 2.css3的animation属性

语法:

animation: name duration timing-function delay iteration-count direction;

name:keyframe的名称,也就是定义了关键帧的动画的名称,这个名称用来区别不同的动画。

duration:完成动画所需要的时间(2s 或者 2000ms)

timing-function:完成动画的速度曲线

delay:动画开始之前的延迟

iteration-count:动画播放次数

direction:是否轮流反向播放动画(normal:正常顺序播放,alternate下一次反向播放)如果把动画设置为只播放一次,则该属性没有效果。

使用animation属性制作动画可以更加灵活的设置动画帧,通过不同keyframe(动画帧)的设置,实现很多优雅的效果,keyframe中的百分数是动画完成总时间的比例。

animation是设置总的动画效果,而keyframe中设置上相应的动画名字,然后在keyframe中设置具体的动画效果。当然由于是css3的属性,仍然需要注意它的兼容性,加上必须的前缀。

例子:

<style> 

div

{

    width:100px;

    height:100px;

    background:red;

    position:relative;

    animation:mymove 5s infinite;

    -webkit-animation:mymove 5s infinite; /*Safari and Chrome*/

}

@keyframes mymove

{

    1% {left:0px;}

    20%{left:200px;}

    50% {left:300px;}

    100%{left:200px;}

} 

@-webkit-keyframes mymove /*Safari and Chrome*/

{

    1% {left:0px;}

    20%{left:200px;}

    50% {left:300px;}

    100%{left:200px;}

}

</style> 

<div></div> 
</div>

3.Jquery的animate函数

语法:

$(selector).animate(styles,options)

styles:产生动画的css样式和值;

options={   speed:动画的速度(可选参数:slow,normal,fase)   easing:动画的速度函数(可选参数:swing,linear)   callback:动画完成之后要执行的函数;   queue:是否放置在效果队列中,是布尔值,为false则立即开始   specialEasing:styles参数的一个或多个属性映射及对应的easing函数。}

$(myElement).animate({

       left: 500,

       top: 200

}, {duration:'3000',

       specialEasing: {

            left: 'swing',

            top: 'linear'

        }

}); 
</div>

该方法通过CSS样式将元素从一个状态改变为另一个状态。CSS属性值是逐渐改变的,这样就可以创建动画效果。

只有数字值可创建动画(比如 "margin:30px")。字符串值无法创建动画(比如 "background-color:red")。

可以使用的属性有:(使用比如 "fontSize"来设置,而非 CSS 名称(比如 "font-size"))

backgroundPosition,borderWidth,borderBottomWidth,borderLeftWidth

borderRightWidth,borderTopWidth,borderSpacing

margin,marginBottom,marginLeft,marginRight,marginTop

outlineWidth

padding,paddingBottom,paddingLeft,paddingRight,paddingTop

height,width

maxHeight,maxWidth,minHeight,minWidth

font,fontSize

bottom,left,right,top

letterSpacing,wordSpacing,lineHeight,textIndent

可见通过jquery的animation生成动画的过程中可同时使用多个属性,也可以定义相对值(该值相对于元素的当前值)。需要在值的前面加上 += 或 -=,如(height:'+=150px'),还可以使用队列机制进行步骤式的动画如:

div.animate({height:'300px',opacity:'0.4'},"slow");

div.animate({width:'300px',opacity:'0.8'},"slow");

div.animate({height:'100px',opacity:'0.4'},"slow");

div.animate({width:'100px',opacity:'0.8'},"slow"); 
</div>

动画就会按照顺序一步一步实现,并且不用考虑兼容性,因为几乎都兼容。 

 但是,animate函数只能够实现一些数值属性,能够实现的变化非常有限制,而且使用这个函数时还要配合stop来使用,在达到某条件时终止动画,设置比较复杂。

4.原生js动画

 原生js动画利用js代码,将动画一步以函数的方式写出来,可以实现多种动画样式,而且可以自己做兼容性处理,自己设立每一步的动画效果,并且能够完成比较复杂的效果,但是代码量很大。如下面的例子:需要自己定义所有的动态函数,并进行计算、判断和处理

<div id="odiv" class="odiv">

     <div id="sdiv" class="sdiv">

     </div>

</div>

<script language="javascript">

window.onload = function(){

     var odiv = document.getElementById('odiv');

     odiv.onmouseover = function(){

      startMover(0);

 }

 odiv.onmouseout = function(){

      startMover(-200);

 }

}

var timer = null;

function startMover(a){//速度和目标值

     clearInterval(timer);//执行当前动画同时清除之前的动画

     var odiv = document.getElementById('odiv');

 timer = setInterval(function(){

     var speed = (a-odiv.offsetLeft)/10;//缓冲动画的速度参数变化值

 //如果速度是大于0,说明是向右走,那么就向上取整

     speed = speed>0?Math.ceil(speed):Math.floor(speed);

 //Math.floor();向下取整

     if(odiv.offsetLeft == a){

      clearInterval(timer);


  


 

您可能想查找下面的文章:

  • css3加js做一个简单的3D行星运转效果实例代码
  • 使用JS+CSS3技术:让你的名字动起来
  • 纯css3(无图片/js)制作的几个社交媒体网站的图标
  • 纯css3无js实现的Android Logo(有简单动画)
  • 前端制作动画的几种方式(css3,js)

相关文章

  • 2017-06-02CSS3动画animation实现云彩向左滚动
  • 2017-06-02CSS3中的@keyframes关键帧动画的选择器绑定
  • 2017-06-02CSS3中31种选择器使用方法教程
  • 2017-06-02CSS3使用多列制作瀑布流
  • 2017-06-02CSS3属性box-shadow使用指南
  • 2017-06-02css3.0 图形构成实例练习二
  • 2017-06-02浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
  • 2017-06-02纯CSS3发光分享按钮的实现教程
  • 2017-06-0225个CSS3动画按钮和菜单教程分享
  • 2017-06-02纯CSS3实现地球自转实现代码(图文教程附送源码)

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
    • html5+css3之制作header实例与更新
    • 利用CSS3的flexbox实现水平垂直居中与三列等高布局
    • 利用CSS3实现文本框的清除按钮相关的一些效果
    • CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
    • css3实现背景颜色渐变让图片不再是唯一的实现方式
    • 利用CSS3实现平移动画效果示例代码
    • 使用css3实现的windows8开机加载动画
    • CSS3实现文字波浪线效果示例代码
    • IE浏览器单独写CSS样式的几种方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有