jQuery动画_动力节点节点Java学院整理


Posted in jQuery onJuly 04, 2017

用JavaScript实现动画,原理非常简单:我们只需要以固定的时间间隔(例如,0.1秒),每次把DOM元素的CSS样式修改一点(例如,高宽各增加10%),看起来就像动画了。

但是要用JavaScript手动实现动画效果,需要编写非常复杂的代码。如果想要把动画效果用函数封装起来便于复用,那考虑的事情就更多了。

使用jQuery实现动画,代码已经简单得不能再简化了:只需要一行代码!

让我们先来看看jQuery内置的几种动画样式:

show / hide

直接以无参数形式调用show()和hide(),会显示和隐藏DOM元素。但是,只要传递一个时间参数进去,就变成了动画:

var div = $('#test-show-hide');
div.hide(3000); // 在3秒钟内逐渐消失

时间以毫秒为单位,但也可以是'slow','fast'这些字符串:

var div = $('#test-show-hide');
div.show('slow'); // 在0.6秒钟内逐渐显示

toggle()方法则根据当前状态决定是show()还是hide()。

slideUp / slideDown

你可能已经看出来了,show()和hide()是从左上角逐渐展开或收缩的,而slideUp()和slideDown()则是在垂直方向逐渐展开或收缩的。

slideUp()把一个可见的DOM元素收起来,效果跟拉上窗帘似的,slideDown()相反,而slideToggle()则根据元素是否可见来决定下一步动作:

var div = $('#test-slide');
div.slideUp(3000); // 在3秒钟内逐渐向上消失

fadeIn / fadeOut

fadeIn()和fadeOut()的动画效果是淡入淡出,也就是通过不断设置DOM元素的opacity属性来实现,而fadeToggle()则根据元素是否可见来决定下一步动作:

var div = $('#test-fade');
div.fadeOut('slow'); // 在0.6秒内淡出

自定义动画

如果上述动画效果还不能满足你的要求,那就祭出最后大招:animate(),它可以实现任意动画效果,我们需要传入的参数就是DOM元素最终的CSS状态和时间,jQuery在时间段内不断调整CSS直到达到我们设定的值:

var div = $('#test-animate');
div.animate({
  opacity: 0.25,
  width: '256px',
  height: '256px'
}, 3000); // 在3秒钟内CSS过渡到设定值

animate()还可以再传入一个函数,当动画结束时,该函数将被调用:

var div = $('#test-animate');
div.animate({
  opacity: 0.25,
  width: '256px',
  height: '256px'
}, 3000, function () {
  console.log('动画已结束');
  // 恢复至初始状态:
  $(this).css('opacity', '1.0').css('width', '128px').css('height', '128px');
});

实际上这个回调函数参数对于基本动画也是适用的。

有了animate(),你就可以实现各种自定义动画效果了:

animate()

串行动画

jQuery的动画效果还可以串行执行,通过delay()方法还可以实现暂停,这样,我们可以实现更复杂的动画效果,而代码却相当简单:

var div = $('#test-animates');
// 动画效果:slideDown - 暂停 - 放大 - 暂停 - 缩小
div.slideDown(2000)
  .delay(1000)
  .animate({
    width: '256px',
    height: '256px'
  }, 2000)
  .delay(1000)
  .animate({
    width: '128px',
    height: '128px'
  }, 2000);
}
</script>

因为动画需要执行一段时间,所以jQuery必须不断返回新的Promise对象才能后续执行操作。简单地把动画封装在函数中是不够的。

为什么有的动画没有效果

你可能会遇到,有的动画如slideUp()根本没有效果。这是因为jQuery动画的原理是逐渐改变CSS的值,如height从100px逐渐变为0。但是很多不是block性质的DOM元素,对它们设置height根本就不起作用,所以动画也就没有效果。

此外,jQuery也没有实现对background-color的动画效果,用animate()设置background-color也没有效果。这种情况下可以使用CSS3的transition实现动画效果。

jQuery 相关文章推荐
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
jQuery实现选中行变色效果(实例讲解)
Jul 06 jQuery
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
Sep 20 jQuery
jQuery使用zTree插件实现可拖拽的树示例
Sep 23 jQuery
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
详解jQuery设置内容和属性
Apr 11 jQuery
jQuery属性选择器用法实例分析
Jun 28 jQuery
jQuery实现简易QQ聊天框
Feb 10 jQuery
jquery更改元素属性attr()方法操作示例
May 22 jQuery
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
jQuery实现点击关注和取消功能
Jul 03 #jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 #jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 #jQuery
jQuery表单设置值的方法
Jun 30 #jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 #jQuery
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 #jQuery
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 #jQuery
You might like
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
详解Vue.js中.native修饰符
2018/04/24 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python实现从ftp服务器下载文件的方法
2015/04/30 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
python开发一款翻译工具
2020/10/10 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
长江三峡导游词
2015/01/31 职场文书
试用期辞职信范文
2015/03/02 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
消防演习感想
2015/08/10 职场文书
python如何进行基准测试
2021/04/26 Python
一起来学习Python的元组和列表
2022/03/13 Python