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插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
基于jquery.page.js实现分页效果
Jan 01 jQuery
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
jquery的$().each和$.each的区别
Jan 18 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
jQuery实现动态向上滚动
Dec 21 jQuery
jquery实现穿梭框功能
Jan 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
Terran魔法科技
2020/03/14 星际争霸
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
Vue.use源码分析
2017/04/22 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
js类的继承定义与用法分析
2019/06/21 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
python修改字典内key对应值的方法
2015/07/11 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
一个入门级python爬虫教程详解
2021/01/27 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
业务员简历自我评价
2014/03/06 职场文书
房产买卖委托公证书
2014/04/04 职场文书
比赛口号大全
2014/06/10 职场文书
党校学习个人总结
2015/02/15 职场文书
创先争优活动个人总结
2015/03/04 职场文书
化工厂员工工作总结
2015/10/15 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
以下牛机,你有几个
2022/04/05 无线电
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS