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 相关文章推荐
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
jquery弹窗时禁止body滚动条滚动的例子
Sep 21 jQuery
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
jQuery实现带进度条的轮播图
Sep 13 jQuery
jQuery实现可以计算进制转换的计算器
Oct 19 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
destoon复制新模块的方法
2014/06/21 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
Python中返回字典键的值的values()方法使用
2015/05/22 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
PyQt5组件读取参数的实例
2019/06/25 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
南京青奥会口号
2014/06/12 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
2014年信用社工作总结
2014/11/25 职场文书
师德标兵事迹材料
2014/12/19 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
python 镜像环境搭建总结
2022/09/23 Python