原生JS实现CSS动画效果
2017-04-17 00:00
926 查看
摘要: 使用setTimeout()和setInterval()重复调用函数来修改元素的内联样式达到目的,当然也可以用库(例如jQuery)设计,甚至是CSS3的transition或者animate达到目的
shake()将元素从一边到另一边快速移动或震动,fadeOut()通过指定的时间(默认为500毫秒)降低元素的透明度,使得元素淡出和消失。
shake()将元素从一边到另一边快速移动或震动,fadeOut()通过指定的时间(默认为500毫秒)降低元素的透明度,使得元素淡出和消失。
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>js实现动画</title> <style type="text/css"> button{ margin-left: 50px; } </style> </head> <body> <button onclick="shake(this,fadeOut);">shake and fade</button> <script type="text/javascript"> function shake(e,oncompleteFun,distance,time){ if(typeof e ==='string') e=document.getElementById(e); if(!distance) distance=20; if(!time) time=500; var originalStyle=e.style.cssText; e.style.position='relative'; var start=(new Date()).getTime(); animate(); function animate(){ var now=(new Date()).getTime(); var elapsed=now-start; var fraction = elapsed/time; if(fraction<1){ var x=distance*Math.sin(fraction*4*Math.PI); console.log('x='+x); e.style.left=x+'px'; setTimeout(animate,Math.min(25,time-elapsed)); }else{ e.style.cssText=originalStyle; if(oncompleteFun) oncompleteFun(e); } } } function fadeOut(e,oncompleteFun,time){ if(typeof e ==='string') e=document.getElementById(e); if(!time) time=500; var ease=Math.sqrt; var start=(new Date()).getTime(); animate(); function animate(){ var elapsed=(new Date()).getTime()-start; var fraction = elapsed/time; if(fraction<1){ var opacity = 1-ease(fraction); e.style.opacity=String(opacity); setTimeout(animate,Math.min(25,time-elapsed)); }else{ e.style.opacity='0'; if(oncompleteFun) oncompleteFun(e); } } } </script> </body> </html>
相关文章推荐
- 用wow.js实现滚动页面时触发CSS 动画效果的插件
- JS+CSS实现网页加载中的动画效果
- JS+CSS实现Google首页的动画效果
- 纯css,js原生,js原型,jquery四种方式实现轮播图效果
- 利用tween,使用原生js实现模块回弹动画效果
- google曾经的首页小图标,JS+CSS实现的动画效果
- JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
- 利用tween,使用原生js实现模块回弹动画效果
- 原生js简单实现jQuery的动画效果
- 原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
- 原生JS实现网页烟花动画效果——前端工程师必备技能!
- 通过JS和CSS,实现网页加载中的动画效果
- 原生JS实现网页烟花动画效果——前端工程师必备技能!
- 原生js和css实现图片轮播效果
- 原生JS实现的雪花飘落动画效果
- 用原生js+HTML+CSS实现一个弹幕的效果
- js、jquery和css 3中的动画实现效果
- 原生js利用鼠标滚轮实现滚动到当前页面实现动画效果
- JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
- 原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果