第73天:jQuery基本动画总结

 

一,DOM对象跟jQuery对象相互转换

jQuery的对象转换成DOM对象:

方式一:$(“#btn”)[0]

方式二:$(“#btn”)。get(0)

DOM对象转换成jQuery的对象:

$(document) - >把DOM对象转成了jQuery对象

var btn = document.getElementById(“bt n”);

btn - > $(btn);

 二,jQuery的基本动画

  jQuery的的动画效果能够轻松的为网页添加动画效果,为网页带来了新的活力。

1,jQuery的中隐藏元素的隐藏方法

让页面上的元素不可见,一般可以通过设置CSS的显示为无属性。但是通过CSS直接修改是静态的布局,如果在代码执行的时候,一般是通过JS控制元素的风格属性,这里的jQuery提供了一个快捷的方法.hide()来达到这个效果

 

$ elem.hide()

 

提供参数:

 

.hide(options) 当提供隐藏方法一个参数时,.hide()就会成为一个动画方法..hide()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作

 

$(“button:last”)。click(function(){

$( “#A2”)。hide({

持续时间:3000,

 

})

});

 

2,jQuery的中显示元素的显示方法

 

躲是让元素显示到隐藏,显示则是相反,让元素从隐藏到显示

 

- showhide方法是修改的显示属性,通过是visibility属性布局需要通过css方法单独设置

- 如果使用!important在你的样式中,比如display:none!important,如果你希望.show()方法正常工作,必须使用.css('display','block!important')重写样式

- 如果让show与hide成为一个动画,那么默认执行动画会改变元素的高度,高度,透明度

3,jQuery的中显示与隐藏切换切换方法

基本的操作:toggle() ;

 

这是最基本的操作,处理元素显示或者隐藏,因为不带参数,所以没有动画。通过改变CSS的显示属性,匹配的元素将被立即显示或隐藏,没有动画。

 

- 如果元素是最初显示,它会被隐藏

- 如果隐藏的,它会显示出来

 

显示属性将被储存并且需要的时候可以恢复。如果一个元素的显示值为直列,然后是隐藏和显示,这个元素将再次显示的内联

 

提供参数:切换([持续时间] [,完成])

 

同样的提供了时间,还有动画结束的回调。在参数对应的时间内,元素会发生显示/隐藏的改变,在改变的过程中会把元素的高,宽,不透明度进行一系列动画效果。这个元素其实就是显示与隐藏的方法

 

$(“button:last”)。click(function(){

$( “右”)切换(3000)

});

 

4,jQuery的中下拉动画了slideDown

 

.slideDown():用滑动动画显示一个匹配元素

 

.slideDown()方法将给匹配元素的高度的动画,这会导致页面的下面部分滑下去,弥补了显示的方式

 

常见的操作,提供一个动画是时间,然后传递一个回调,用于知道动画是什么时候结束

 

.slideDown([duration] [,complete])

 

持续时间(持续时间)是以毫秒为单位的,数值越大,动画越慢,不是越快。字符串'快' '慢' 分别代表200600毫秒。的延时如果提供任何其他字符串,或者这个duration参数被省略,那么默认使用400毫秒的延时。

 

具体使用:

 

$(“ele”)slideDown(1000,function(){
//等待动画执行1秒后,执行别的动作....
}) ;

 

注意事项:

 

- 下拉动画是从无到有,所以一开始元素是需要先隐藏起来的,可以设置display:none

- 如果提供回调函数参数,回调会在动画完成的时候调用。将不同的动画串联在一起按顺序排列执行是非常有用的。这个回调函数不设置任何参数,但是这会设成将要执行动画的那个DOM元素,如果多个元素一起做动画效果,那么要非常注意,回调函数会在每一个元素执行完动画后都执行一次,而不是这组动画整体才执行一次

 

 

$(“button:last”)。click(function(){

$( “#A2”)。slideDown(3000,function(){

警报( '动画执行结束')

})

});

 

5, jQuery中上卷动画slideUp

最简单的使用:不带参数

 

$( “ELEM”)效果基本show();

 

这个使用的含义就是:找到元素的高度,然后采用一个下滑动画让元素一直滑到隐藏,当高度为0的时候,也就是不可见的时,修改元素显示样式属性被设置为无。这样就能确保这个元素不会影响页面布局了

 

带参数:

 

.slideUp([duration] [,easing] [,complete])

 

同样可以提供一个时间,然后可以使用一种过渡使用哪种缓动函数,jQuery的默认就2种,可以通过下载插件支持。最后一个动画结束的回调方法。

 

因为动画是异步的,所以要在动画之后执行某些操作就必须要写到回调函数里面,这里要特别注意

 

$(“button:last”)。click(function(){

$( “#A2”)。slideUp(3000,function(){

警报( '动画执行结束')

})

});

 

6,jQuery的中上卷下拉切换的slideToggle

 

jQuery的提供了一个便捷方法的slideToggle用滑动动画显示或隐藏一个匹配元素

 

基本的操作:slideToggle();

 

这是最基本的操作,获取元素的高度,使这个元素的高度发生改变,从而让元素里的内容往下或往上滑。

 

提供参数:.slideToggle([duration],[complete])

 

同样的提供了时间,还有动画结束的回调。在参数对应的时间内,元素会完成动画,然后出发回调函数

 

同时也提供了时间的快速定义,字符串'fast'和'slow'分别代表200和600毫秒的延时

 

注意:

 

- 显示属性值保存在jQuery的数据缓存中,所以显示可以方便以后可以恢复到其初始值

- 当一个隐藏动画后,高度值达到0的时候,显示样式属性被设置为无,以确保该元素不再影响页面布局

 

$(“button”)。click(function(){

$(“#a1”)。slideToggle(3000)

});

 

 

7,jQuery的中淡出动画淡出

 

设置元素透明度为0,可以让元素不可见,透明度的参数是0〜1之间的值,通过改变这个值可以让元素有一个透明度的效果。常见的淡入淡出动画正是这样的原理。

 

淡出()函数用于隐藏所有匹配的元素,并带有淡出的过渡动画效果

 

所谓 “淡出” 隐藏的,元素是隐藏状态不对作任何改变,元素是可见的,则将其隐藏。

 

.fadeOut([duration],[完整])

 

通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数。这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。

 

字符串'fast'和'slow'分别代表200和600毫秒的延时。如果提供任何其他字符串,或者这个duration参数被省略,那么默认使用400毫秒的延时

 

$( “P”)淡出()。

 

$( “P”)。淡出({

持续时间:1000

});

$( “P”)。fadeOut2000function(){

警报( “隐藏完毕!”);

});

8,jQuery的中淡入动画淡入

 

淡出是淡出效果,相反的还有淡入效果淡入,方法使用上两者都是一致的,只是结果相反

 

.fadeIn([持续时间],[完成])

 

- duration:指定过渡动画运行多长时间(毫秒数),默认值为400.该参数也可以为字符串“fast”(= 200)或“slow”(= 600)。

- 元素显示完毕后需要执行的函数。函数内的这个指向当前DOM元素。

 

淡入()函数用于显示所有匹配的元素,并带有淡入的过渡动画效果。

 

注意:

 

- 淡入的动画原理:操作元素的不透明度从0%逐渐增加到100%

- 如果元素本身是可见的,不对其作任何改变。如果元素是隐藏的,则使其可见

 

9,jQuery的中淡入淡出切换fadeToggle

 

fadeToggle()函数用于切换所有匹配的元素,并带有淡入/淡出的过渡动画效果。之前也学过切换,slideToggle也是类似的处理方式

 

fadeToggle切换fadeOut与fadeIn效果,所谓“切换”,即如果元素当前是可见的,则将其隐藏(淡出) ;如果元素当前是隐藏的,则使其显示(淡入)

 

常用语法:.fadeToggle([duration],[complete])

 

可选的持续时间参数规定效果的时长。它可以取以下值:“slow”,“fast”或毫秒。可选的callback参数是fadeToggle完成后所执行的函数名称。

 

fadeToggle() 方法可以在 fadeIn() fadeOut()方法之间进行切换。如果元素已淡出,则fadeToggle()会向元素添加淡入效果。如果元素已淡入,则fadeToggle()会向元素添加淡出效果。

(和上面的方式一样)

10, jQuery中淡入效果fadeTo

 

淡入淡出淡入淡出与都是修改元素样式的不透明度属性,但是他们都有个共同的特点,变化的区间要么是0,要么是1

 

fadeIn:淡入效果,内容显示,opacity是0到1
fadeOut:淡出效果,内容隐藏,opacity是1到0

 

如果要让元素保持动画效果,执行opacity = 0.5的效果时,要如何处理?

 

如果不考虑CSS3,我们用JS实现的话,基本就是通过定时器,在设定的时间内一点点的修改的不透明度的值,最终为0.5,原理虽说简单,但是总不如一键设置这么舒服,jQuery的提供了fadeTo方法,可以让改变透明度一步到位

 

语法

 

.fadeTo(持续时间,不透明度,回调)

 

必需的持续时间参数规定效果的时长。它可以取以下值:“slow”,“fast”或毫秒.fadeTo()方法中必需的opacity参数将淡入淡出效果设置为给定的不透明度(值介于0与1之间)。可选的callback参数是该函数完成后所执行的函数名称。

 

$(“p”)。fadeTo(“slow”,0.5);

 

$(“p”)。fadeTo(1000,0.2);

 

$( “P”)。fadeTo10000.9函数(){

警报( '完成')

});

 

11,jQuery的中切换与的slideToggle以及fadeToggle的比较

 

操作元素的显示和隐藏可以有几种方法。

例如:

 

- 改变样式display为none

- 设置位置高度为0

- 设置透明度为0

 

都能达到这个目的,并且针对这样的处理jQuery的都提供了各自的方法。显示/隐藏sildeDown / sildeUp淡入/淡出。除此之外,还引入了切换sildeToggle以及fadeToggle切换方法

 

拨动,sildeToggle以及fadeToggle的区别:

 

- toggle:切换显示与隐藏效果

- sildeToggle:切换上下拉卷滚效果

- fadeToggle:切换淡入淡出效果

 

当然细节上还是有更多的不同点:

 

切换与的slideToggle细节区别:

 

- toggle:动态效果为从右至左。横向动作,toggle通过display来判断切换所有匹配元素的可见性

- slideToggle:动态效果从下至上。竖向动作,slideToggle通过高度变化来切换所有匹配元素的可见性

 

fadeToggle方法

 

- fadeToggle()方法在fadeIn()和fadeOut()方法之间切换。

- 元素是淡出显示的,fadeToggle()会使用淡入效果显示它们。

- 元素是淡入显示的,fadeToggle()会使用淡出效果显示它们。

- 注释:隐藏的元素不会被完全显示(不再影响页面的布局)

12,jQuery的中动画动画(上)

 

有些复杂的动画通过之前学到的几个动画函数是不能够实现,这时候就需要强大的动画方法了

 

操作一个元素执行3秒的淡入动画,对比一下2组动画设置的区别

 

语法:

.animate(属性,[持续时间],[缓动],[完成]).
animate(属性,选项)

 

.animate()方法允许我们在任意的数值的CSS属性上创建动画0.2种语法使用,几乎差不多了,唯一必要的属性就是一组CSS属性键值对。这组属性和用于设置的CSS( )方法的属性键值对类似,除了属性范围做了更多限制。第二个参数开始可以单独传递多个实参也可以合并成一个对象传递了

 

参数分解: properties:一个或多个css属性的键值对所构成的Object对象。要特别注意所有用于动画的属性必须是数字的,除非另有说明;这些属性如果不是数字的将不能使用基本的jQuery的功能。比如常见的,边界,边缘,衬垫,宽度,高度,字体,左,上,右,下,wordSpacing等等这些都是能产生动画效果的装置技术领域色很明显不可以,因为参数是红色或者GBG这样的值,非常用插件,否则正常情况下是不能只用动画效果的。注意,CSS样式使用DOM名称(比如“fontSize”)来设置,而非CSS名称(比如“font-size “)。

 

特别注意单位,属性值的单位像素(px),除非另有说明。单位em和%需要指定使用

 

.animate({
left:50,
width:' 50px'opacity
:'show',
fontSize:“10em”,
},500);

 

除了定义数值,每个属性能使用'show','hide',和'toggle'。这些快捷方式允许定制隐藏和显示动画用来控制元素的显示或隐藏

 

.animate({
width:“toggle”
});
 

 

如果提供一个以+ =或 - =开始的值,那么目标值就是以这个属性的当前值加上或者减去给定的数字来计算的

 

.animate({
left:'+ = 50px'
},“slow”);
 

 

持续时间

 

动画执行的时间,持续时间是以毫秒为单位的;值越大表示动画执行的越慢,不是越快。还可以提供'快'和'慢'字符串,分别表示持续时间为200和600毫秒。

 

宽松的动画运动的算法

 

jQuery的库中默认调用摆动。如果需要其他的动画算法,请查找相关的插件

 

完成回调

 

动画完成时执行的函数,这个可以保证当前动画确定完成后发会触发

 

if(v ==“1”){

//数值的单位默认是px

$ aaron.animate({

宽度:300,

身高:300

});

} else if(v ==“2”){

//在现有高度的基础上增加100px

$ aaron.animate({

宽度:“+ = 100px”,

身高:“+ = 100px”

});

} else if(v ==“3”){

$ aaron.animate({

fontSize:“5em”

},2000,function(){

alert(“动画fontSize执行完毕!”);

});

LSE如果(V == “4”){

//通过切换参数切换高度

$ aaron.animate({

宽度:“切换”

});

}

 

13,jQuery的中动画动画(下)

动画在执行动画中,如果需要观察动画的一些执行情况,或者在动画进行中的某一时刻进行一些其他处理,我们可以通过动画提供的第二种设置语法,传递一个对象参数,可以拿到动画执行状态一些通知

 

.animate(属性,选项)

 

选项参数

 

- duration - 设置动画执行的时间

- easing - 规定要使用的缓动函数,过渡使用哪种缓动函数

- step:规定每个动画的每一步完成之后要执行的函数

- 进度:每一次动画调用的时候会执行这个回调,就是一个进度的概念

- 完成:动画完成回调

 

其中最关键的一点就是:

 

如果多个元素执行动画,回调将在每个匹配的元素上执行一次,不是作为整个动画执行一次

 

列出常用的方式:

 

$('#elem')。animate({
width:'toggle',
height:'toggle'
}{
duration:5000,
specialEasing:{
width:'linear',
height:'easeOutBounce'
},
complete:function() {
$(this).after('<div>动画完成。</ div>');
}
});
 

14,jQuery的中停止动画停止

 

动画在执行过程中是允许被暂停的,当一个元素调用。停止()方法,当前正在运行的动画(如果有的话)立即停止

 

语法:

 

.stop([clearQueue],[jumpToEnd])。
stop([queue],[clearQueue],[jumpToEnd])

 

停止还有几个可选的参数,简单来说可以这3种情况

 

- .stop(); 停止当前动画,点击在暂停处继续开始

- .stop(true); 如果同一元素调用多个动画方法尚未被执行的动画被放置在元素的效果队列中。这些动画不会开始,直到第一个完成。当调用.stop()的时候,队列中的下一个动画立即开始。如果clearQueue参数提供真实值,在那么队列中的动画其余被删除并永远不会运行

- .stop(true,true); 当前动画将停止,但该元素上的CSS属性会被立刻修改成动画的目标值

 

简单的说:参考下面代码,

 

$(“#aaron”)。animate({
height:300
},5000)
$(“#aaron”)。animate({
width:300
},5000)
$(“#aaron”)。animate({
opacity:0.6
},2000)
 

 

- stop():只会停止第一个动画,第二个第三个继续

- stop(true):停止第一个,第二个和第三个动画

- 停止(真实):停止动画,直接跳到第一个动画的最终状态

 

15,jQuery的中每个方法的应用

 

的jQuery中有个很重要的核心方法每个,大部分的jQuery方法在内部都会调用每个,其主要的原因的就是jQuery的的实例是一个元素合集

 

如下:找到所有的DIV,并且都设置样式,CSS只是一个方法,所以内部会调用每个处理这个格的合集,给每个格都设置样式属性

 

$( '格')。CSS(...)
 

 

jQuery的的大部分方法都是针元素合集的操作,所以jQuery的会提供$(选择)。每个()来遍历jQuery的对象

 

。每个只是处理jQuery的对象的方法,jQuery的还提供了一个通用的jQuery.each方法,处理用来对象状语从句:数组的遍历

 

语法

 

jQuery.each(array,callback)
jQuery.each(object,callback)

 

一个第参数传递的就是一个对象或者数组,第二个是回调函数

 

$ .each([“Aaron”,“慕课网”],函数(索引,值){
//索引是索引,也就是数组的索引
//值就是数组中的值了
});

 

每个就是对循环方法的一个包装,内部就是通过用于遍历数组与对象,通过回调函数返回内部迭代的一些参数,第一个参数是当前迭代成员在对象或数组中的索引值(从0开始计数) ,第二个参数是当前迭代成员(与此的引用相同

 

jQuery.each()函数还会根据每次调用函数回调的返回值来决定后续动作如果返回值为假,则停止循环(相当于普通循环中的中断);如果返回其他任何值,均表示继续执行下一个循环。

 

$ .each([“Aaron”,“慕课网”],函数(索引,值){
return false; //停止迭代
});

 

jQuery的方法可以很方便的遍历一个数据,不需要考虑这个数据是对象还是数组

 

//遍历数组元素

$ .each(['Aaron','慕课网'],功能(i,item){

$ aaron.append(“索引=”+ i +“;元素=”+ item);

});

 

$。每个({

名称:“张三”,

年龄:18岁

},function(property,value){

$ aaron.append(“属性名=”+ property +“;属性值=”+ value);

});

 

16,jQuery的中查找数组中的索引inArray

 

在PHP有in_array()判断某个元素是否存在数组中,JavaScript的却没有,但是jQuery的封装了inArray()函数判断元素是否存在数组中注意了:在ECMAScript5已经有数据的的indexOf方法支持了,但是jQuery的保持了版本向下兼容,所以封装了一个inArray方法

 

jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值。如果数组中不存在该值,则返回-1

 

语法:

 

jQuery.inArray(value,array,[fromIndex])

 

用法非常简单,一个传递的检测目标值,传递然后原始的数组,可以通过的fromIndex规定查找的起始值,默认数组是0开始

 

例如:在数组中查找值是5的索引

 

$ .inArray(5,[1,2,3,4,5,6,7])//返回对应的索引:4
 

 

注意:

 

如果要判断数组中是否存在指定值,你需要通过该函数的返回值不等于(或大于)-1来进行判断

 

if(v ==“1”){

 

var index = $ .inArray('Aaron',['test','Aaron','array','慕课网']);

 

$ aaron.text('Aaron的索引是:'+ index)

 

} else if(v ==“2”){

 

//指定索引开始的位置

var index = $ .inArray('a',['a','b','c','d','a','c'],2);

 

$ aaron.text('a的索引是:'+ index)

}

 

17,jQuery的中去空格神器修剪方法

 

页面中,通过输入可以获取用户的输入值,例如常见的登录信息的提交处理。用户的输入不一定是标准的,输入一段密码:'1123456“,注意了:密码的前后会留空,这可能是用户的无心的行为,但是密码确实又没错,针对这样的行为,者开发要应该判断输入侧值的前后是否有空白符,换行符,符制表这样明显的无意义的输入侧值。

 

jQuery.trim()函数用于去除字符串两端空白字符

 

这个函数很简单,没有多余的参数用法

 

需要注意:

 

- 移除字符串开始和结尾处的所有换行符,空格(包括连续的空格)和制表符(tab)

- 如果这些空白字符在字符串中间时,它们将被保留,不会被移除

 

alert(“值的长度:”+ $ .trim($(“#results2”)。val())。length)

 

18,jQuery的中DOM元素的获取GET方法

 

jQuery的是一个合集对象,如果需要单独操作合集中的的某一个元素,可以通过获得()方法获取到

 

以下有3个一元素结构:

 

<A> 1 </A>
<A> 2 </A>
<A> 3 </A>
 

 

通过jQuery的获取所有的一个元素合集$( “A”),如果想进一步在合集中找到第二个2 DOM元素单独处理,可以通过GET方法

 

语法:

 

.get([index])
 

注意2点

 

- 获取方法是获取的dom对象,也就是通过document.getElementById获取的对象

- 得方法是从0开始索引

 

所以第二个a元素的查找:$(a).get(1)

 

负索引值参数

 

得到还方法可以从后往前索引,传递一个负索引值,注意的负值的索引起始值是-1

 

同样是找到第二元素,可以传递$(一)获得(-2)

 

$ aaron.get(1).style.color =“blue”

$ aaron.get(-1).style.color =“#8A2BE2”

 

19,jQuery的中DOM元素的获取指数方法

 

获得方法是通过已知的索引在合集中找到对应的元素。如果反过来,已知元素如何在合集中找到对应的索引呢?

 

的.index()方法,从匹配的元素中搜索给定元素的索引值,从0开始计数。

 

语法:参数接受一个jQuery的DOM或者对象作为查找的条件

 

.index()。
index(selector)
.index(element)

 

- 如果不传递任何参数给.index()方法,则返回值就是jQuery对象中第一个元素相对于它同辈元素的位置

- 如果在一组元素上调用.index(),并且参数是一个DOM元素或jQuery对象,.index()返回值就是传入的元素相对于原​​先集合的位置

- 如果参数是一个选择器,.index()返回值就是原先元素相对于选择器匹配元素的位置。如果找不到匹配的元素,则.index()返回-1

 

简单来说:

 

<ul>
<a> </a>
<li id =“test1”> 1 </ li>
<li id =“test2”> 2 </ li>
<li id =“test3”> 3 </ li>
< / UL>
 

 

$(“li”)。index()没有传递参数,返回的结果是1,它的意思是返回同辈的排序顺序,第一个li之前有一个元素,同辈元素是一个开始为0,所以li的开始索引是1

 

如果要快速找到第二个立在列表中的索引,可以通过如下2种方式处理

 

$(“li”)。index(document.getElementById(“test2”))//结果:1
$(“li”)。index($(“#test2”))//结果:1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值