首页 > 安全资讯 >

jQuery基础(四、动画)

16-11-10

在js中,让页面上的元素不可见,一般修改元素的样式display为none属性,但是通过css修改的是静态的布局,然而在代码执行的时候,一般是通过js控制元素的style属性,jQuery在这里提供了一个方法 hide()。$elem hide()

元素隐藏和显示

1、jQuery中隐藏元素的hide方法
在js中,让页面上的元素不可见,一般修改元素的样式display为none属性,但是通过css修改的是静态的布局,然而在代码执行的时候,一般是通过js控制元素的style属性,jQuery在这里提供了一个方法.hide()。$elem.hide()

提供参数:.hide( options )

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

快捷参数:.hide("fast / slow")

这是一个动画设置的快捷方式,’fast’ 和 ‘slow’ 分别代表200和600毫秒的延时,就是元素会执行200/600毫秒的动画后再隐藏

注意:

jQuery在做hide操作的时候,是会保存本身的元素的原始属性值,再之后通过对应的方法还原的时候还是初始值。比如一个元素的display属性值为inline,那么隐藏再显示时,这个元素将再次显示inline。一旦透明度 达到0,display样式属性将被设置为none,这个元素将不再在页面中影响布局。

栗子:隐藏页面中的红色小块。


我是红色小块
<script type="text/javascript"> $("div").on('click',function () { $("div").hide(); }) </script>

显示结果:
这里写图片描述

如果给hide()方法中啊计入参数,就会产生动画的效果。这里就不在进行详细说明了。

2、jQuery中隐藏元素的hide方法
css中有display:none属性,同时也有display:block,所以jQuery同样提供了与hide相反的show方法。

方法的使用几乎与hide是一致的,hide是让元素显示到隐藏,show则是相反,让元素从隐藏到显示。

注意事项:

1、 show与hide方法是修改的display属性,通过是visibility属性布局需要通过css方法单独设置
2、如果使用!important在你的样式中,比如display: none !important,如果你希望.show()方法正常工作,必须使用.css(‘display’, ‘block !important’)重写样式
3、如果让show与hide成为一个动画,那么默认执行动画会改变元素的高度,高度,透明度
栗子:让红色小块,先隐藏然后显示。

$('div').hide(3000).show(3000);

显示结果:
这里写图片描述

3、jQuery中显示与隐藏切换toggle方法

show与hide是一对互斥的方法。需要对元素进行显示隐藏的互斥切换,通常情况是需要先判断元素的display状态,然后调用其对应的处理方法。比如显示的元素,那么就要调用hide,反之亦然。 对于这样的操作行为,jQuery提供了一个便捷方法toggle用于切换显示或隐藏匹配元素。

基本的操作:toggle();

这个是最基本的操作,处理元素显示或者隐藏,因为不带参数,所以没有动画,通过改变CSS的display属性,匹配的元素将被立即显示或者隐藏,没有动画
如果元素最初是显示的,它会被隐藏
如果是隐藏的,就会被显示出来
display属性将被储存并且需要的时候可以恢复。如果一个元素的display值为inline,然后是隐藏和显示,这个元素将再次显示inline

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

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

直接定位:.toggle(display)

直接提供一个参数,指定要改变的元素的最终效果。

栗子:我们来使用toggle()来改变div块的显示和隐藏。


我是红色小块
<script type="text/javascript"> $("input").on('click',function () { $("div").toggle(3000); }) </script>

显示结果:
这里写图片描述

上卷下拉效果

1、jQuery中下拉动画slideDown
.slideDown():用滑动动画显示一个匹配元素

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

.slideDown( [duration ] [, complete ] )

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

注意事项:

1、下拉动画是从无到有,所以一开始元素是需要先隐藏起来的,可以设置display:none
2、如 果提供回调函数参数,callback会在动画完成的时候调用。将不同的动画串联在一起按顺序排列执行是非常有用的。这个回调函数不设置任何参数,但是 this会设成将要执行动画的那个DOM元素,如果多个元素一起做动画效果,那么要非常注意,回调函数会在每一个元素执行完动画后都执行一次,而不是这组 动画整体才执行一次。

示例动画:
这里写图片描述
2、jQuery中上卷动画slideUp
与下拉动画相反。
不带参数:$("elem").slideUp();
携带参数:

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

同样可以提供一个时间,然后可以使用一种过渡使用哪种缓动函数,jQuery默认就2种,可以通过下载插件支持。最后一个动画结束的回调方法。
因为动画是异步的,所以要在动画之后执行某些操作就必须要写到回调函数里面,这里要特别注意

动画示例:
这里写图片描述

3、jQuery中上卷下拉切换slideToggle

slideDown与slideUp是一对相反的方法。需要对元素进行上下拉卷效果的切换,jQuery提供了一个便捷方法slideToggle用滑动动画显示或隐藏一个匹配元素。

基本的操作:slideToggle();

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

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

同样的提供了时间、还有动画结束的回调。在参数对应的时间内,元素会完成动画,然后出发回调函数。同时也提供了事件的快速定义字符串’fast’和’slow’分别代表200和600毫秒的延时

注意:

display属性值保存在jQuery的数据缓存中,所以display可以方便以后可以恢复到其初始值
当一个隐藏动画后,高度值达到0的时候,display 样式属性被设置为none,以确保该元素不再影响页面布局

动画示例:
这里写图片描述

动画的淡入淡出

1、jQuery中淡出动画fadeOut

让元素在页面中不可见,除了设置样式的display:none之外,还可以设置元素的透明度为0,让元素不可见。
fadeOut()函数用于隐藏所有匹配的元素,并带有淡出的过渡动画效果

.fadeOut( [duration ], [ complete ] )

示例动画:
这里写图片描述

2、jQuery中淡入动画fadeIn

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

.fadeIn( [duration ], [ complete ] )
1、duration:指定过渡动画运行多长时间(毫秒数),默认值为400。该参数也可以为字符串”fast”(=200)或”slow”(=600)。
2、元素显示完毕后需要执行的函数。函数内的this指向当前DOM元素。

注意:

1、淡入的动画原理:操作元素的不透明度从0%逐渐增加到100%
2、如果元素本身是可见的,不对其作任何改变。如果元素是隐藏的,则使其可见

动画示例:
这里写图片描述

3、jQuery中淡入淡出切换fadeToggle

fadeToggle()函数用于切换所有匹配的元素,并带有淡入/淡出的过渡动画效果。之前也学过toggle、slideToggle 也是类似的处理方式。
fadeToggle切换fadeOut与fadeIn效果,所谓”切换”,即如果元素当前是可见的,则将其隐藏(淡出);如果元素当前是隐藏的,则使其显示(淡入)。

使用:.fadeToggle( [duration ] ,[ complete ] )

1、可选的 duration 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是 fadeToggle完成后所执行的函数名称。
2、fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。如果元素已淡出,则 fadeToggle() 会向元素添加淡入效果。如果元素已淡入,则 fadeToggle() 会向元素添加淡出效果。

示例:
这里写图片描述

4、jQuery中淡入效果fadeTo
jQuery提供了fadeTo,可以让用户设置透明度一步到位。

淡入淡出fadeIn与fadeOut都是修改元素样式的opacity属性,但是他们都有个共同的特点,变化的区间要么是0,要么是1
fadeIn:淡入效果,内容显示,opacity是0到1
fadeOut:淡出效果,内容隐藏,opacity是1到0

.fadeTo( duration, opacity ,callback)

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

这里写图片描述

动画切换比较

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

1、改变样式display为none
2、设置位置高度为0
3、设置透明度为0

1、toggle、sildeToggle以及fadeToggle的区别:

1、 toggle:切换显示与隐藏效果
2、sildeToggle:切换上下拉卷滚效果
3、fadeToggle:切换淡入淡出效果

2、toggle与slideToggle细节区别:

1、 toggle:动态效果为从右至左。横向动作,toggle通过display来判断切换所有匹配元素的可见性
2、slideToggle:动态效果从下至上。竖向动作,slideToggle 通过高度变化来切换所有匹配元素的可见性

3、fadeToggle方法

1、fadeToggle() 方法在 fadeIn() 和 fadeOut() 方法之间切换。
2、元素是淡出显示的,fadeToggle() 会使用淡入效果显示它们。
3、元素是淡入显示的,fadeToggle() 会使用淡出效果显示它们。
注释:隐藏的元素不会被完全显示(不再影响页面的布局)

自定义动画

1、jQuery中动画animate(上)

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

例如一个执行3秒的淡出动画:$(elem).fadeOut(3000)
而使用animate可以这样写:

$(elem).animate({   
    opacity:0
},3000)

语法:

.animate( properties ,[ duration ], [ easing ], [ complete ] )
.animate( properties, options )

参数详解:
properties:

一个或多个css属性的键值对所构成的Object对象。要特别注意所有用于动画的属性必须是数字的,除非另有说明;这些属性如果不是数字的将不能使用基本的jQuery功能。

duration时间

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

easing动画运动的算法

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

complete回调

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

示例动画:变换红色小块的宽度、高度;
这里写图片描述

2、jQuery中动画animate(下)

animate在执行动画中,如果需要观察动画的一些执行情况,或者在动画进行中的某一时刻进行一些其他处理,我们可以通过animate提供的第二种设置语法,传递一个对象参数,可以拿到动画执行状态一些通知。
.animate( properties, options )
options参数:
duration - 设置动画执行的时间
easing - 规定要使用的 easing 函数,过渡使用哪种缓动函数
step:规定每个动画的每一步完成之后要执行的函数
progress:每一次动画调用的时候会执行这个回调,就是一个进度的概念
complete:动画完成回调

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

3、jQuery中停止动画stop

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

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

1、.stop(); 停止当前动画,点击在暂停处继续开始
2、.stop(true); 停止当前执行动画元素的所有动画行为
3、.stop(true,true); 停止当前执行动画元素的所有动画行为,并且直接到达动画最后一帧

jQuery核心方法

1、jQuery中each方法的应用

jQuery中有个很重要的核心方法each,大部分jQuery方法在内部都会调用each,其主要的原因的就是jQuery的实例是一个元素合集。
jQuery的大部分方法都是针元素合集的操作,所以jQuery会提供$(selector).each()来遍历jQuery对象
.each只是处理jQuery对象的方法,jQuery还提供了一个通用的jQuery.each方法,用来处理对象和数组的遍历

jQuery.each(array, callback )
jQuery.each( object, callback )
第一个参数传递的就是一个对象或者数组,第二个是回调函数

回调函数中传入的两个参数,如果遍历的是数组,第一个参数是索引值,第二个参数是数组的值;如果遍历是对象,第一个参数是属性,第二个参数是属性值。

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

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

注意:

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

3、jQuery中去空格神器trim方法

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

注意点:

1、移除字符串开始和结尾处的所有换行符,空格(包括连续的空格)和制表符(tab)
2、如果这些空白字符在字符串中间时,它们将被保留,不会被移除

4、jQuery中DOM元素的获取get方法

jQuery是一个合集对象,如果需要单独操作合集中的的某一个元素,可以通过.get()方法获取到。
语法:.get( [index ] )
例如有这样的页面结构:

1
2
3

我们要找到第二个dom元素,可以使用.get(1)

需要注意的是:

1、 get方法是获取的dom对象,也就是通过document.getElementById获取的对象
2、get方法是从0开始索引

负索引值参数;

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

5、jQuery中DOM元素的获取index方法

.index()方法,从匹配的元素中搜索给定元素的索引值,从0开始计数。
语法:参数接受一个jQuery或者dom对象作为查找的条件。

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

1、如果不传递任何参数给 .index() 方法,则返回值就是jQuery对象中第一个元素相对于它同辈元素的位置
2、如果在一组元素上调用 .index() ,并且参数是一个DOM元素或jQuery对象, .index() 返回值就是传入的元素相对于原先集合的位置
3、如果参数是一个选择器, .index() 返回值就是原先元素相对于选择器匹配元素的位置。如果找不到匹配的元素,则 .index() 返回 -1

比如,我们已知某元素,要插在元素在列表中的某个位置索引。例如:

  
  • li标签1
  • li标签2
  • li标签3
  • li标签4
<script type="text/javascript"> window.onload=function () { var num= $("li").index(document.getElementById('test2')); alert(num); } </script>

显示结果:

这里写图片描述

相关文章
最新文章
热点推荐