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实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 jQuery
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 jQuery
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
jquery使用FormData实现异步上传文件
Oct 25 jQuery
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 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 之入门篇
2006/12/04 PHP
php 全局变量范围分析
2009/08/07 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
vue-loader教程介绍
2017/06/14 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
解读! Python在人工智能中的作用
2017/11/14 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
中专生职业生涯规划书范文
2013/12/29 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
购房意向书范本
2014/04/01 职场文书
企业宣传标语
2014/06/09 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL