扫码关注官方订阅号
1.制作一个滚动的金币,随着页面加载,完成一个两个过程的动画,第一步逐渐旋转变大,到达第一个位置后,留下一个动画留影,第二步继续移动,到达第二个位置后,留下一个动画留影,结束动画。2.我尝试过使用定时器,判定定位的left来进行留影,但是效果并不好,没有流畅感,而且无法解决,逐渐旋转变大的特效。3.截图
人生最曼妙的风景,竟是内心的淡定与从容!
试试这个@keyframes,这个是菜鸟教程的地址例子如下,和他差不多吧
@keyframes myfirst { 0% {background: red; left:0px; top:0px;} 25% {background: yellow; left:200px; top:0px;} 50% {background: blue; left:200px; top:200px;} 75% {background: green; left:0px; top:200px;} 100% {background: red; left:0px; top:0px;} } @-webkit-keyframes myfirst /* Safari and Chrome */ { 0% {background: red; left:0px; top:0px;} 25% {background: yellow; left:200px; top:0px;} 50% {background: blue; left:200px; top:200px;} 75% {background: green; left:0px; top:200px;} 100% {background: red; left:0px; top:0px;} }
为啥不试试css3的动画呢
除了css3 和flash,请问还有更好的方案吗?js动画,存在大量的CPU运算和GPU,从运算开始,到每一帧的动画展示,这其中都有一个时间差,所以采用纯js的方案,肯定是不行的。推荐采用css3+js来做,另外可以搜索下关于提高css3动画流畅度的博文(非常多)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <img src="img/00.jpg" id="img" alt=""> <script> function img(){ var _img = document.getElementById("img"); _img.style.width = "100px"; _img.style.height = "100px"; setTimeout("obj()",1000) } function obj(){ var _img = document.getElementById("img"); var _img_w = parseInt(_img.style.width); var _img_h = parseInt(_img.style.height); if (_img_w < 200) { _img_w++ } if (_img_h < 200) { _img_h++ } _img.style.width = _img_w + "px"; _img.style.height = _img_h + "px"; setTimeout("obj()",500) } img() </script> </body> </html>
不知道这样对不对 新手~
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #jinbi{ width:60px; height:60px; background:gold; border-radius:50%; text-align:center; line-height: 60px; font-size:30px; font-weight:bold; position:absolute; left:10px; top:100px; } #jinbi-1{ width:80px; height:80px; background:red; border-radius:50%; text-align:center; line-height: 80px; font-size:50px; font-weight:bold; position:absolute; left:94px; top:100px; transform:rotate(21deg); display:none; } </style> </head> <body> <p id="jinbi"> ¥ </p> <!-- 另外两个金币,先隐藏 --> <p id="jinbi-1">¥</p> <script src="lib/js/jquery.js"></script> <script> $(function(){ var widthNum = $("#jinbi").width();//金币宽度 var heightNum = $("#jinbi").height();//金币高度 var leftNum = 10;//left值 var topNum = 100;//top值 var rotateNum = 0;//旋转角度 function change(){ //判断 if(widthNum == 80){ //显示备用金币 $("#jinbi-1").css("display","block"); } if(widthNum == 130){ clearInterval(countTime); } widthNum ++; heightNum ++; fontNum = widthNum/2; leftNum +=4; //保证圆心在同一水平线 topNum = 100-(heightNum - 60)/2; rotateNum ++; $('#jinbi').css({ "width":widthNum+"px", "height":heightNum+"px", "font-size":fontNum+"px", "line-height":widthNum+"px", "left":leftNum + "px", "top":topNum +"px", "transform":"rotate("+ rotateNum +"deg)" }); } // change(); var countTime = setInterval(function(){ change(); },50) }) </script> </body> </html>
我用jquery写的,你看看!!!
就这点效果用js实现有什么不流畅的。说下思路,一个代码处理canvas里旋转并放大的动画,另外一个代码移动canvas这个DOM的位置,到达指定位置后,将canvas的内容保存为一张图片(执行toDataURL方法),然后清除canvas内容,重新进行第一步。不要用setTimeout,用requestAnimationFrame这个方法。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
试试这个@keyframes,这个是菜鸟教程的地址
例子如下,和他差不多吧
为啥不试试css3的动画呢
除了css3 和flash,请问还有更好的方案吗?js动画,存在大量的CPU运算和GPU,从运算开始,到每一帧的动画展示,这其中都有一个时间差,所以采用纯js的方案,肯定是不行的。推荐采用css3+js来做,另外可以搜索下关于提高css3动画流畅度的博文(非常多)
不知道这样对不对 新手~
我用jquery写的,你看看!!!
就这点效果用js实现有什么不流畅的。说下思路,一个代码处理canvas里旋转并放大的动画,另外一个代码移动canvas这个DOM的位置,到达指定位置后,将canvas的内容保存为一张图片(执行toDataURL方法),然后清除canvas内容,重新进行第一步。不要用setTimeout,用requestAnimationFrame这个方法。