HTML5技术

动画特效的原生、jQ和CSS3方法 - Dylan_dwh

字号+ 作者:H5之家 来源:博客园 2015-11-04 14:58 我要评论( )

最近一直在看运动的JS特效,主要看的是原生写法,太麻烦了,最终看到写了个运动的方法,后面可以直接引用,然后发现这个方法和jQ其实差不多了,代码分别如下: 基本的HMTL和CSS 原生、jQ和CSS3运动模块 div 一、原生JS写法 // 原生写法 window.onload= funct

  最近一直在看运动的JS特效,主要看的是原生写法,太麻烦了,最终看到写了个运动的方法,后面可以直接引用,然后发现这个方法和jQ其实差不多了,代码分别如下:

  基本的HMTL和CSS

  

原生、jQ和CSS3运动模块 div

一、原生JS写法

//原生写法 window.onload=function(){ var div11=document.getElementById('div1'); var div21=document.getElementById('div2'); var div31=document.getElementById('div3'); div11.onmouseover=function() {startMove(div11,'height',200);}; div21.onmouseover=function() {startMove(div21,'width',200);}; div31.onmouseover=function() {startMove(div31,'opacity',100);}; div11.onmouseout=function() {startMove(div11,'height',100);}; div21.onmouseout=function() {startMove(div21,'width',100);}; div31.onmouseout=function() {startMove(div31,'opacity',30);}; }; function getStyle(obj, attr) { if(obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } } //function getStyle(obj, attr) { // return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr]; // startMove(obj, attr, iTarget) { clearInterval(obj.timer); obj.timer=setInterval(function (){ var iCur=0; if(attr=='opacity') { iCur=parseInt(parseFloat(getStyle(obj, attr))*100); } else { iCur=parseInt(getStyle(obj, attr)); } var iSpeed=(iTarget-iCur)/8; iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); if(iCur==iTarget) { clearInterval(obj.timer); } else { if(attr=='opacity') { obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')'; obj.style.opacity=(iCur+iSpeed)/100; } else { obj.style[attr]=iCur+iSpeed+'px'; } } }, 30) }

View Code

二、jQ写法

<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $().ready(function(){ $('#div1').mouseover(function(){ $(this).animate( {width:'200px'},"slow" ); }); $('#div2').mouseover(function(){ $(this).animate( {height:'200px'},"slow" ); }); $('#div3').mouseover(function(){ $(this).animate( {opacity:'1'},"slow" ); }); $('#div1').mouseout(function(){ $(this).animate( {width:'100px'},"slow" ); }); $('#div2').mouseout(function(){ $(this).animate( {height:'100px'},"slow" ); }); $('#div3').mouseout(function(){ $('#div3').animate( {opacity:'0.3'},"slow" ); }) }) </script>

View Code

三、CSS3写法

#div2{transition:height 2s 2s;} #div1{transition:width 2s;} #div3{transition: opacity 2s;-moz-transition:opacity 2s;-webkit-transition:opacity 2s;-o-transition:opacity 2s;} #div1:hover{width: 200px;} #div2:hover{height: 200px;} #div3:hover{ opacity:0; filter: alpha(opacity=0);}

View Code

对比可以看出还是CSS3方法比较合适,通过原先的学习下原理,复杂的运动模式用jQ,最优的选用CSS3(不考虑低版本IE的兼容性的情况下)。

CSS3已经支持IE10及以上的版本。

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【CSS3动画】下拉菜单模拟 - Glunefish

    【CSS3动画】下拉菜单模拟 - Glunefish

    2017-04-12 13:00

  • HTML5动画(二):Canvas 实现圆形进度条并显示数字百分比 - 孟然

    HTML5动画(二):Canvas 实现圆形进度条并显示数字百分比 - 孟然

    2017-02-23 14:05

  • HTML5动画(一):实现树叶飘落 - 孟然

    HTML5动画(一):实现树叶飘落 - 孟然

    2017-02-10 12:00

  • CSS 几款比较常用的翻转特效 - 周全535201285

    CSS 几款比较常用的翻转特效 - 周全535201285

    2017-02-06 16:00

网友点评
s