jQuery 动画效果代码分享
作者:unaMattin 发布时间:2023-11-24 00:10:12
一.显示、隐藏
jQuery 中显示方法为:.show(),隐藏方法为:.hide()。在无参数的时候,只是硬性的显示内容和隐藏内容。
$('.show').click(function(){ //设置个触发事件
$('#box').show(); //显示
});
$('.hide').click(function(){ //设置个触发事件
$('#box').hide(); //隐藏
});
在.show()和.hide()方法可以传递一个参数,这个参数以毫秒(1000 毫秒等于 1 秒钟)来控 制速度。并且里面富含了匀速变大变小,以及透明度变换。
$('.show').click(function(){
$('#box').show(1000); //显示用了 1 秒
}); $('.hide').click(function(){
$('#box').hide(1000); //隐藏用了 1 秒
});
除了直接使用毫秒来控制速度外,jQuery 还提供了三种预设速度参数字符串:slow、 normal 和 fast,分别对应 600 毫秒、400 毫秒和 200 毫秒。
$('#box').show('slow'); //600 毫秒
$('#box').show('normal'); //400 毫秒
$('#box').show('fast'); //200 毫秒
注意:不管是传递毫秒数还是传递预设字符串,如果不小心传递错误或者传递空字符串。 那么它将采用默认值:400 毫秒。
使用.show()和.hide()的回调函数,可以实现列队动画效果。
(1)使用函数名调用自身
$('.show').click(function(){
$('#box').show('slow',function showspan(){
$(this).next().show('slow',showspan);
});
})
(2)使用 arguments.callee 匿名函数自调用
$('.show').click(function(){
$('#box').show('slow',function(){
$(this).next().show('slow',arguments.callee);
});
})
我们在使用.show()和.hide()的时候,如果需要一个按钮切换操作,需要进行一些条件判 断。而 jQuery 提供给我们一个类似功能的独立方法:.toggle()。
$('.toggle').click(function(){
$(this).toggle('slow');
});
二.滑动、卷动 jQuery 提供了一组改变元素高度的方法:.slideUp()、.slideDown()和.slideToggle()。顾名 思义,向上收缩(卷动)和向下展开(滑动)。
$('.down').click(function(){ //向下滑动
$('#box').slideDown();
});
$('.up').click(function(){ //向上滑动
$('#box').slideUp();
});
$('.toggle').click(function(){ //切换
$('#box').slideToggle();
});
注意:滑动、卷动效果和显示、隐藏效果一样,具有相同的参数。
三.淡入、淡出
jQuery 提供了一组专门用于透明度变化的方法:.fadeIn()和.fadeOut(),分别表示淡入、 淡出,当然还有一个自动切换的方法:.fadeToggle()。
$('.in').click(function(){ //淡入
$('#box').fadeIn('slow');
});
$('.out').click(function(){ //淡出
$('#box').fadeOut('slow');
});
$('.toggle').click(function(){ //切换
$('#box').fadeToggle();
});
上面三个透明度方法只能是从 0 到 100,或者从 100 到 0,如果我们想设置指定值就没 有办法了。而 jQuery 为了解决这个问题提供了.fadeTo()方法。
$('.toggle').click(function(){
$('#box').fadeTo('slow',0.33); //0.33 表示值为 33%
});
ps:值数为0到1,对应百分比
四.自定义动画
jQuery 提供了几种简单常用的固定动画方面我们使用。但有些时候,这些简单动画无法 满足我们更加复杂的需求。这个时候,jQuery 提供了一个.animate()方法来创建我们的自定
义动画,满足更多复杂多变的要求。
$('.animate').click(function(){
$('#box').animate({
'width':'300px',
'fontSize':'50px',
'opacity':0.5
});
});
注意:一个 CSS 变化就是一个动画效果,上面的例子中,已经有四个 CSS 变化,已经 实现了多重动画同步运动的效果。
必传的参数只有一个,就是一个键值对 CSS 变化样式的对象。还有两个可选参数分别 为速度和回调函数。
$('.animate').click(function(){
$('#box').animate({
'width':'500px',
'height':'400px',
},2000,function(){
alert('执行完毕');
});
});
到目前位置,我们都是创建的固定位置不动的动画。如果想要实现运动状态的位移动画, 那就必须使用自定义动画,并且结合 CSS 的绝对定位功能。
$('.animate').click(function(){
$('#box').animate({
'top':'300px', //先必须设置 CSS 绝对定位
'left':'200px'
});
});
ps:必须先在css里设置参照物,绝对定位
自定义动画中,每次开始运动都必须是初始位置或初始状态,而有时我们想通过当前位 置或状态下再进行动画。jQuery 提供了自定义动画的累加、累减功能。
$('.animate').click(function(){
$('#box').animate({
left:'+=100px',
width:'+=100px',
height:'+=100px'
});
});
五.列队动画方法
之前我们已经可以实现列队动画了,如果是同一个元素,可以依次顺序或连缀调用。如 果是不同元素,可以使用回调函数。但有时列队动画太多,回调函数的可读性大大降低。为 此,jQuery 提供了一组专门用于列队动画的方法。
//连缀无法实现按顺序列队
$('#box').slideUp('slow').slideDown('slow').css('background','orange');
注意:如果动画方法,连缀可以实依次列队,而.css()方法不是动画方法,会在一开始传入列队之前。那么,可以采用动画方法的回调函数来解决。
//使用回调函数,强行将.css()方法排队到.slideDown()之后
$('#box').slideUp('slow').slideDown('slow',function({
$(this).css('background','orange');
});
但如果这样的话,当列队动画繁多的时候,可读性不但下降,而原本的动画方法不够清 晰。所以,我们的想法是每个操作都是自己独立的方法。那么 jQuery 提供了一个类似于回 调函数的方法:.queue()。
//使用.queue()方法模拟动画方法跟随动画方法之后
$('#box').slideUp('slow').slideDown('slow').queue(function(){
$(this).css('background','orange');
});
现在,我们想继续在.queue()方法后面再增加一个隐藏动画,这时发现居然无法实现。 这是.queue()特性导致的。解决方法:jQuery的.queue()的回调函数可以 传递一个参数,这个参数是 next 函数,在结尾处调用这个 next()方法即可再连缀执行列队动画。
//使用 next 参数来实现继续调用列队动画 $('#box').slideUp('slow').slideDown('slow').queue(function(next{
$(this).css('background','orange');
next();
}).hide('slow');
ps:.queue()方法还有一个功能,就是可以得到当前动画个列队的长度(具体不做演示)
jQuery 还提供了一个清理列队的功能方法:.clearQueue()。把它放入一个列队的回调函 数或.queue()方法里,就可以把剩下为执行的列队给移除。
//清理动画列队
$('#box').slideDown('slow',function(){
$(this).clearQueue()
});
六.动画相关方法
很多时候需要停止正在运行中的动画,jQuery 为此提供了一个.stop()方法。它有两个可 选参数:.stop(clearQueue,gotoEnd);clearQueue 传递一个布尔值,代表是否清空未执行完的 动画列队,gotoEnd 代表是否直接将正在执行的动画跳转到末状态。
$('.animate').click(function(){
$('#box').animate({
'left':'300px' },1000);
$('#box').animate({
'top':'300px' },1000);
$('#box').animate({
'width':'300px' },1000);
$('#box').animate({
'height':'300px' },1000);
});
$('.stop').click(function(){
$('#box').stop(true,false);
});
//注意:第一个参数表示是否取消列队动画,默认为 false。如果参数为 true,当有列队动 画的时候,会取消后面的列队动画。第二参数表示是否到达当前动画结尾,默认为 false。 如果参数为 true,则停止后立即到达末尾处。可以自行复制体验。
有时在执行动画或列队动画时,需要在运动之前有延迟执行,jQuery 为此提供了.delay() 方法。这个方法可以在动画之前设置延迟,也可以在列队动画中间加上。
//开始延迟 1 秒钟,中间延迟 1 秒
$('.animate').click(function(){
$('#box').delay(1000).animate({
'left':'300px' },1000);
$('#box').animate({
'bottom':'300px' },1000);
$('#box').delay(1000).animate({
'width':'300px' },1000);
$('#box').animate({
'height':'300px' },1000);
});
arguments.callee 在哪一个函数中运行,它就代表哪一个函数。 一般用在匿名函数中。在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名字,无名可调。这时就可以用arguments.callee来代替匿名的函数
//递归执行自我,无限循环执行
$('#box').slideToggle('slow',function(){
$(this).slideToggle('slow',arguments.callee);
});
$.fx.off属性可以关闭所有动画效果。
$.fx.off=true; //默认为 false
均理解完毕。
以上所述是小编给大家介绍的 jQuery 动画效果代码分享,希望对大家有所帮助。
来源:http://blog.csdn.net/unamattin/article/details/53140587
猜你喜欢
- 实现方案:我们直接参考实例代码:private String pattern = "((http|ftp
- typora-copy-images-to: ./一键清除maven仓库中下载失败的jar包maven是一款非常优秀的项目管理工具,特别是其
- 简介由于最近的项目需求,需要在把配置类导入到容器中,通过查询,使用@Import注解就能实现这个功能,@Import注解能够帮我们吧普通配置
- spring容器是负责实例化、配置、组装组件的容器。容器的配置有很多,常用的是xml、Java注解和Java代码。在spring中Ioc容器
- 本文的目的是要实现左右滑动的指引效果。那么什么是指引效果呢?现在的应用为了有更好的用户体验,一般会在应用开始显示一些指引帮助页面,使用户能更
- 目录Sonar概述一、 搭建sona服务二、idea配置三、 配置maven的setting.xml文件四、idea中 mvn sonar:
- 使用ProcessBuilder踩到的坑最近使用ProcessBuilder执行命令,命令内容正确,但始终报错命令实行失败,是因为不熟悉Pr
- 好久没有做web了,JSON目前比较流行,闲得没事,所以动手试试将对象序列化为JSON字符(尽管DotNet Framework
- 前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析。PaginatedDataTablePaginatedDataT
- 1、mybatis-plus @DS实现动态切换数据源原理首先mybatis-plus使用com.baomidou.dynamic.data
- 1、volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)&nb
- 开发环境win10Android Studio效果用于多级菜单展示,或选择。如 每个省,市,县;如 树木的病虫害;关键代码 @overrid
- 一、Java后端使用MultipartFile@PostMapping(value = "/upload")  
- SpringMVC接收到请求和数据后,进行一些了的处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎
- 这篇文章主要介绍了JAVA实现账户取款和存款操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以
- cookie和session的区别和联系cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储
- Java7引入了Fork Join的概念,来更好的支持并行运算。顾名思义,Fork Join类似与流程语言的分支,合并的概念。也就是说Jav
- 本文实例讲述了Java基于Runtime调用外部程序出现阻塞的解决方法, 是一个很实用的技巧。分享给大家供大家参考。具体分析如下:有时候在j
- 首先写一个测试文件然后点击IDEA右侧的maven,然后选择package,之后点击上面运行或者直接双击即可,等下方控制台构建成功即可:然后
- 对象创建的几种方法:使用new关键字使用clone方法反射机制反序列化以上四种都可以产生java对象1,3都会明确的显式的调用构造函数2是在