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中clone()函数实现表单中增加和减少输入项
May 13 jQuery
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
Jul 12 jQuery
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
jquery 键盘事件的使用方法详解
Sep 13 jQuery
基于jQuery实现定位导航位置效果
Nov 15 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
菊花转动的jquery加载动画效果
Aug 19 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
基于JQuery实现页面定时弹出广告
May 08 jQuery
jQuery实现简单QQ聊天框
Aug 27 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
javascript event 事件解析
2011/01/31 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
python代码编写计算器小程序
2020/03/30 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
Python中if有多个条件处理方法
2020/02/26 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
电子商务应届生自我鉴定
2014/01/13 职场文书
优秀会计求职信
2014/07/04 职场文书
学习党代会心得体会
2014/09/05 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
幼儿学前班评语
2014/12/29 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server