弹簧式显示隐藏动画,听上去好像有点复杂,其实就是模拟弹球落地的效果,很久之前想到了,无奈当时 jQuery 以及 JavaScript 技术仍未学好,木有办法做出很好的效果。前些天突然又想做,便写出来了,先放上 Demo 。
看完 Demo ,应该放上代码了,在介绍代码前,给大家介绍一下 jQuery .animate 方法的 easing (过渡)参数, 相对于 styles, speed ,这个参数用得比较少, jQuery 中默认的动画方法 hide() , show() , slideDown() , slideUp() , fadeIn() , fadeIn() 也是基于 .animate 的 styles, speed 参数便可实现, 而 easing 则可以用于实现更丰富的动画效果。 easing 的值可以采用 jQuery UI Effects 中提供的过渡效果,这里 Kayo 直接提取了一种过渡效果扩展到 jQuery 而不加载整个 jQuery UI 库了。
下面放上代码:
1.加载 jQuery 库
1 | < script src = "http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js" ></ script > |
2.HTML
1 2 3 4 | < div class = "spring" > < p >动画 Demo</ p > < span class = "button" >Click Me!</ span > </ div > |
3.CSS
1 2 3 4 | body, div, p { margin : 0 ; padding : 0 ; } .spring { text-align : center ; height : 450px ; } .spring p { background : #f6f6f6 ; color : #444 ; font-size : 50px ; padding : 100px 0 ; } .spring .button { display : block ; padding : 10px 0 ; } |
4.JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 扩展过渡效果到 jQuery jQuery.extend(jQuery.easing,{ def : "easeOutQuad" , swing : function (c, a, b, d, e) { return jQuery.easing[jQuery.easing.def](c, a, b, d, e) }, easeOutBounce: function (c, a, b, d, e) { return (a /= e) < 1 / 2.75 ? d * 7.5625 * a * a + b: a < 2 / 2.75 ? d * (7.5625 * (a -= 1.5 / 2.75) * a + 0.75) + b: a < 2.5 / 2.75 ? d * (7.5625 * (a -= 2.25 / 2.75) * a + 0.9375) + b: d * (7.5625 * (a -= 2.625 / 2.75) * a + 0.984375) + b } }); // 实现动画 $( function (){ var springSpeed = 600; // 动画速度 var theSpringHeight = $( '.button' ).offset().top; $( '.spring' ).css({marginTop: -theSpringHeight}); $( '.button' ).toggle( function (){ $( '.spring' ).animate({marginTop: 0}, springSpeed, 'easeOutBounce' ); }, function (){ $( '.spring' ).animate({marginTop: -theSpringHeight}, springSpeed, 'easeOutBounce' ); }); }); |
本文由 Kayo Lee 发表,本文链接:https://kayosite.com/jquery-spring-animate.html
评论列表
這個彈性很好啊 HOHO 點開 貌似還有震感 HOHO
@沫 嘻嘻,拿来当大横幅,可以吸引人的噢!
这个好玩,可以挂横幅广告~
@刘印博客 而且还是充满弹性的广告~
挺动感的。
脑子闪过一个想法…
一进网站./..一个部分一个部分的弹出…
先是header…sidebar.footer最後main
然後组装成完整的网站…像变形金刚一样…
不过只是想想…
@kkStx 好作品就是来源于好创意,话说这个idea不错
@Kayo 這算是把FLASH jQuery化吧
@kkStx 正是,不过得修炼多N年的jQuery才有此功力了!
这个效果不错,很有质感,有点象电影里面开场的时候Logo砸下来的效果
@饭哆 电影那个好像还要斜着下来的,改一下更像了!
这个效果很棒啊,果断收走了
@老谢 闲来折腾出的产物,有用就好
分享只是一种美德
这个效果还是不错的,需要就来抄抄!
@小呆 欢迎欢迎
!
很好。
为
非常好的效果。