本节主要讲的是隐藏与显示(hide,show,toggle)、上卷下拉(sildeDown,slideUp,slideToggle)、淡入淡出(fadeOut,fadein,fadeToggle,fadeTo)、自定义动画 (animate,stop)以及其他核心方法的使用!
(1)jquery的隐藏和显示动画
jQuery中隐藏元素的hide方法
$elem.hide() 用来隐藏元素
.hide( options ) 当提供hide方法一个参数时,.hide()就会成为一个动画方法。.hide()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作,快捷参数:.hide("fast / slow")
语法:$(selector).hide(speed,callback)
例:$("button:last").click(function() {
$("#a2").hide({
duration: 3000,
complete: function() {
alert('执行3000ms动画完毕')
}
});
或者:
$("#btn").click(function() {
$("#right").hide(3000,function(){
alert('执行3000ms动画完毕')
})
})
jQuery中显示元素的show方法
语法:$(selector).show(speed,callback)用法和hide一致!
例:
$("button").click(function() {
$("#a1").hide(3000).show(3000)
});
注意:
(1)show与hide方法是修改的display属性,通过visibility属性修改需要通过css方法单独设置
(2)如果样式中使用!important,比如display: none !important,想让.show()方法正常工作,必须使用.css('display', 'block !important')重写样式
(3)如果让show与hide成为一个动画,那么默认执行动画会改变元素的高度,高度,透明度
jQuery中显示与隐藏切换toggle方法
基本的操作:toggle(); 元素的显示与隐藏(display属性)
用法:$(selector).toggle(speed,callback,switch)
也可以直接定位:.toggle(true|false),指定元素的最终效果
例:
$("button:first").click(function() {
$(".left").toggle(3000)
});
(2)上卷下拉效果
jQuery中下拉动画slideDown
slideDown() 方法用于向下滑动元素。
用法:$(selector).slideDown(speed,callback);
可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
可选的 callback 参数是滑动完成后所执行的函数名称。
例:
$("button:first").click(function() {
$("#a1").slideDown(3000)
});
jQuery中上卷动画slideUp
slideUp() 方法用于向上滑动元素。
语法:$(selector).slideUp(speed,callback);
可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
可选的 callback 参数是滑动完成后所执行的函数名称。
例:
$("button:last").click(function() {
$("#a2").slideUp(3000,function(){
alert('动画执行结束')
})
});
jQuery中上卷下拉切换slideToggle
slideToggle() 方法可以在 slideDown() 与 slideUp() 方法之间进行切换。
用法:$(selector).slideToggle(speed,callback);
例:
$("#flip").click(function(){
$("#panel").slideToggle();
});
(3)淡入淡出效果
jQuery中淡出动画fadeOut
fadeOut()方法用于淡出可见元素。
用法:$(selector).fadeOut(speed,callback);
可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
可选的 callback 参数是 fading 完成后所执行的函数名称。
例:
$("button").click(function(){
$("#div1").fadeOut();
$("#div2").fadeOut("slow");
$("#div3").fadeOut(3000);
});
jQuery中淡入动画fadeIn
fadeIn() 用于淡入已隐藏的元素。
用法:$(selector).fadeIn(speed,callback);
例:
$("button").click(function(){
$("#div1").fadeIn();
$("#div2").fadeIn("slow");
$("#div3").fadeIn(3000);
});
jQuery中淡入淡出切换fadeToggle
fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。
用法:$(selector).fadeToggle(speed,callback);
例:
$("button").click(function(){
$("#div1").fadeToggle();
$("#div2").fadeToggle("slow");
$("#div3").fadeToggle(3000);
});
淡入淡出fadeIn与fadeOut都是修改元素样式的opacity属性,但是他们都有个共同的特点,变化的区间要么是0,要么是1,当opacity的值为0时,即隐藏该元素设置为display:none;
jQuery中淡入效果fadeTo
fadeTo() 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)。
$(selector).fadeTo(speed,opacity,callback);
必需的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。
可选的 callback 参数是该函数完成后所执行的函数名称。
例:
$("button").click(function(){
$("#div1").fadeTo("slow",0.15);
$("#div2").fadeTo("slow",0.4);
$("#div3").fadeTo("slow",0.7);
});
jQuery中toggle与slideToggle以及fadeToggle的比较
(1)toggle:切换显示与隐藏效果
(2)sildeToggle:切换上下拉卷滚效果
(3)fadeToggle:切换淡入淡出效果
toggle与slideToggle细节区别:
(1)toggle:动态效果为从右至左。横向动作,toggle通过display来判断切换所有匹配元素的可见性
(2)slideToggle:动态效果从下至上。竖向动作,slideToggle 通过高度变化来切换所有匹配元素的可见性
fadeToggle方法
(1)fadeToggle() 方法在 fadeIn() 和 fadeOut() 方法之间切换。
(2)元素是淡出显示的,fadeToggle() 会使用淡入效果显示它们。
(3)元素是淡入显示的,fadeToggle() 会使用淡出效果显示它们。
注释:隐藏的元素不会被完全显示(不再影响页面的布局)
(4)自定义动画
jQuery中动画animate
animate() 方法用于创建自定义动画。
$(selector).animate({params},speed,callback);
必需的 params 参数定义形成动画的 CSS 属性,json写法
可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
可选的 callback 参数是动画完成后所执行的函数名称。
例:
$("button").click(function(){
$("div").animate({
left:'250px',
opacity:'0.5',
height:'150px',
width:'150px'
});
});
当使用 animate()时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,使用 marginRight 而不是 margin-right,等等。
animate() - 使用相对值,可以定义相对值(该值相对于元素的当前值)。需要在值的前面加上 += 或 -=:
$("button").click(function(){
$("div").animate({
left:'250px',
height:'+=150px',
width:'+=150px'
});
});
animate() - 使用预定义的值,可以把属性的动画值设置为 "show"、"hide" 或 "toggle":
$("button").click(function(){
$("div").animate({
height:'toggle'
});
});
animate() - 使用队列功能 果您在彼此之后编写多个 animate() 调用,jQuery 会创建包含这些方法调用的“内部”队列。然后逐一运行这些 animate 调用。
$("button").click(function(){
var div=$("div");
div.animate({height:'300px',opacity:'0.4'},"slow");
div.animate({width:'300px',opacity:'0.8'},"slow");
div.animate({height:'100px',opacity:'0.4'},"slow");
div.animate({width:'100px',opacity:'0.8'},"slow");
});
(5)jQuery其他核心方法
jQuery中停止动画stop
stop() 方法用于停止动画或效果,在它们完成之前。stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。
$(selector).stop(stopAll,goToEnd);
可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。
可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。
因此,默认地,stop() 会清除在被选元素上指定的当前动画。
(1).stop(); 停止当前动画,点击在暂停处继续开始
(2).stop(true); 如果同一元素调用多个动画方法,尚未被执行的动画被放置在元素的效果队列中。这些动画不会开始,直到第一个完成。当调用.stop()的时候,队列中的下一个动画立即开始。如果goToEnd参数提供true值,那么在队列中的动画其余被删除并永远不会运行
(3).stop(true,true); 当前动画将停止,但该元素上的 CSS 属性会被立刻修改成动画的目标值
例:
$("#aaron").animate({
height: 300
}, 5000)
$("#aaron").animate({
width: 300
}, 5000)
$("#aaron").animate({
opacity: 0.6
}, 2000)
分析:(1)stop():只会停止第一个动画,第二个第三个继续
(2)stop(true):停止第一个、第二个和第三个动画
(3)stop(true ture):停止动画,直接跳到第一个动画的最终状态
jQuery其他核心知识
each() 方法规定为每个匹配元素规定运行的函数。
语法:$(selector).each(function(index,element))
必需。为每个匹配元素规定运行的函数。index - 选择器的 index 位置element - 当前的元素(也可使用 "this" 选择器)
例: $.each(['属性1', '属性2'], function(i, item) {
$aaron.append("索引=" + i + "; 元素=" + item);
});//结果索引=0; 元素=属性 索引=1; 元素=属性2
jQuery中查找数组中的索引inArray
jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值。如果数组中不存在该值,则返回 -1。
语法:jQuery.inArray( value, array ,[ fromIndex ] )
fromIndex规定查找的起始值,默认数组是0开始
例:$.inArray(5,[1,2,3,4,5,6,7]) //返回对应的索引:4
注意:如果要判断数组中是否存在指定值,你需要通过该函数的返回值不等于(或大于)-1来进行判断
例:var index = $.inArray('a',['a','b','c','d','a','c'],2);
$aaron.text('a的索引是: '+ index)
} //返回4
jQuery中去空格trim方法
jQuery.trim()函数用于去除字符串两端的空白字符,也可以写作$.trim()
例:$("#exec2").click(function() {
alert("值的长度:" + $.trim($("#results2").val()).length)
});
jQuery中DOM元素的获取get方法
如果需要单独操作合集中的的某一个元素,可以通过.get()方法获取到
语法:.get( [index ] )
(1)get方法是获取的dom对象,也就是通过document.getElementById获取的对象
(2)get方法是从0开始索引查找第二个元素可以写作: $(a).get(1)
负索引值参数表示从后往前索引,起始值是-1 例: $(a).get(-2)
eq() 返回的是jquery对象,get()返回的是dom元素,所以$(a).get(1)无法直接通过jquery方法操作,需要通过$($(a).get(1)).css()改变,而$(a).get(1)需要通过$(a).get(1).style.的方式
jQuery中DOM元素的获取index方法
.index()方法,从匹配的元素中搜索给定元素的索引值,从0开始计数。
语法:.index()
.index( selector )
.index( element )
(1)如果不传递任何参数给 .index() 方法,则返回值就是jQuery对象中第一个元素相对于它同辈元素的位置
(2)如果在一组元素上调用 .index() ,并且参数是一个DOM元素或jQuery对象, .index() 返回值就是传入的元素相对于原先集合的位置
(3)如果参数是一个选择器, .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之前有a元素,同辈元素是a开始为0,所以li的开始索引是1
如果要快速找到第二个li在列表中的索引,可以通过如下2种方式处理:
$("li").index(document.getElementById("test2")) //结果:1
$("li").index($("#test2")) //结果:1
学完这些,基本的教程都已经学完,你就可以尝试写一下一些特效了,或者去看一下你之前看不懂的那些jquery特效,你会发现其实好简单!