$(this).animate({left:“100px”}, 1000);//1秒内将left属性改变成100像素})
})
});
图1 animate方法自定义动画
例1中当DIV移动到距离左边100px的位置之后,再次单击DIV块,DIV块将不会移动。虽然再次单击DIV块仍然会触发执行DIV单击事件匿名函数,但因为DIV已经在距离左边100px的位置,所以位置不会再发生变化。如果再次单击DIV块时想让DIV块往右移动100px,即left值变为200px,第三次单击DIV块时,DIV再往右移动100px,即left属性值变为300px,以此类推下去,即每次DIV的left属性值都在前次动画结束时left属性值的基础上增加100px,可通过如下jQuery代码实现:
$(“#box”).click(function(){
$(this).animate({left:“+=100px”}, 1000)
})
同理,如果要实现累减动画,只需要把“+=”变成“-=”。
图2 累加动画
例1通过控制left属性值改变DIV块的位置,这是很单一的动画。如果需要同时执行多个动画,例如在DIV块向右滑动的同时放大其高度,改变其透明度,根据animate()方法的语法结构,可以通过如下jQuery代码实现:
$(“#box”).click(function(){
$(this).animate({left:‘+=100px’,
height:‘400px’,
opacity:‘0.5’
}, 1000)
})
上例中的三个动画效果是同时发生的,如果想顺序执行这三个动画,例如先向左滑动100px,然后把高度放大到400px,最后把透明度改为0.5,实现以上内容可以采用链式写法,可以通过如下jQuery代码实现:
$(“#box”).click(function(){
$(this).animate({left:“+=25px”}, 500)
.animate({height:“+=20px”}, 500)
.animate({opacity:“-=θ.1”}, 500)
})
在上例中,如果想在最后一步切换CSS样式( background :blue),而不是淡出,按照前面的链式处理,其jQuery代码实现如下:
$(“#box”).click(function(){
$(this).animate({left:“+=25px”}, 500)
.animate({height:“+=20px”}, 500)
.animate({opacity:“-=0.1”}, 500)
.css(‘background’,‘blue’)
})
其中,css()方法并不会在动画队列中排队,也就是说不是等DIV块向右移动、高度变大、透明度改变完成之后才改变背景色。出现这个问题的原因是css()方法并不是动画方法,不会被加入动画队列中排队,而是插队立即执行。如果要实现预期的效果,必须使用回调函数让非动画方法实现排队。其jQuery实现代码如下:
$(“#box”).click(function(){
$(this).animate({left:“+=25px”}, 500)
.animate({height:“+=20px”}, 500)
.animate({opacity:“-=0.1”}, 500,function(){
$(this).css(‘background’,‘blue’)
})
=====================================================================
网页中有时需要停止匹配元素正在进行的动画,这时要使用停止元素的动画方法stop(),其语法格式如下所示:
stop([ clearQueue ],[gotoEnd])
其中, clearQueue
和gotoEnd
都是可选参数,为布尔值,即true或false,默认值都是false, clearQueue
代表是否要清空未执行完的动画队列,gotoEnd
代表是否直接将正在执行的动画跳转到末状态,注意不是动画队列中最后一个动画的末状态。由于 clearQueue 和gotoEnd都为可选参数,stop()方法有以下几种应用方法。
(1)两个参数都为false的情况,即stop(false,false),由于false是默认值,因此也可简写为stop(),表示不将正在执行的动画跳转到末状态,不清空动画队列。也就是说,停止当前动画,并从目前的动画状态开始动画队列中的下一个动画。
(2)第一个参数为true的情况,即stop(true,false),由于false是默认值,因此也可简写为stop(true),表示不将正在执行的动画跳转到末状态,但清空动画队列。也就是说,停止所有动画,保持当前状态,瞬间停止。
(3)第二个参数为true的情况,即stop(false,true),表示不清空动画队列,将正在执行的动画跳转到末状态,也就是说,停止当前动画,跳转到当前动画的末状态,然后进入队列中的下一个动画。
(4)两个参数都为true的情况,即stop(true,true),表示既清空动画队列,又将正在执行的动画跳转到末状态。也就是说,停止所有动画,跳转到当前动画的末状态。
例2是对stop(方法的四种情况的实例演示,应重点理解这四种情况的使用环境。
【例2】
<!doctype html>
开始一连串动画
stop()
stop(true)
stop(false, true)
stop(true, true)
什么是jQuery?
jquery。
例2的说明如下:
(1)单击按钮(stop()),由于两个参数都是false,所以单击发生时,animate没有跳到当前动画(动画1)的最终效果,而直接进入动画2,然后动画3、4、5,直至完成整个动画。
(2)单击按钮(stop(true)),由于第一个参数是true,第二个参数是false,所以animate立刻全部停止了。
(3)单击按钮(stop(false,true)),由于第一个参数是false,第二个参数是true,所以单击发生时,animate身处的当前动画(动画1)停止,并且animate直接跳到当前动画(动画1)的最终末尾效果的位置,接着正常执行下面的动画(动画2、3、4、5),直至完成整个动画。
(4)单击按钮(stop(true,true)),由于两个参数都是true,所以单击发生时,animate跳到当前动画(动画1)的最终末尾效果的位置,然后全部动画停止。
jQuery中的stop()方法有许多非常有效的用法。例如一个下拉菜单,当鼠标移上去的时候显示菜单,当鼠标离开的时候隐藏菜单,如果快速不断地将鼠标移入移出菜单(即菜单下拉动画未完成时,鼠标又移出了菜单)就会产生“动画积累”,当鼠标停止移动后,积累的动画还会持续执行,直到动画序列执行完毕。遇到这种情况时,在写动画效果的代码前加入stop(true,true),这样每次快速地移入移出菜单就正常了,当移入一个菜单的时候,停止所有加入队列的动画,完成当前的动画(跳至当前动画的最终效果位置)。
在使用animate()
方法的时候,要避免动画积累而导致的动画与用户行为不一致,用户快速地在某个元素上执行animate动画时就会出现动画积累,即前一个动画还没结束,后一个动画已开始。解决办法是判断元素是否正处于动画状态,如果元素不处于动画状态,才为元素添加新的动画,否则不添加。其jQuery实现代码如下:
if(!$(element).is(“:animated”)){ //判断元素是否处于动画状态
//如果当前没有进行动画,则添加新动画
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
JavaScript
-
js的基本类型有哪些?引用类型有哪些?null和undefined的区别。
-
如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)
-
Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?
-
JS常见的dom操作api
-
解释一下事件冒泡和事件捕获
-
事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?
-
对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?
-
this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?
-
call,apply,bind
-
显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链
-
创建对象的多种方式
-
实现继承的多种方式和优缺点
-
new 一个对象具体做了什么
-
手写Ajax,XMLHttpRequest
-
变量提升
-
举例说明一个匿名函数的典型用例
-
指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?
-
attribute和property的区别
-
document load和document DOMContentLoaded两个事件的区别
-
JS代码调试
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-
new 一个对象具体做了什么
-
手写Ajax,XMLHttpRequest
-
变量提升
-
举例说明一个匿名函数的典型用例
-
指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?
-
attribute和property的区别
-
document load和document DOMContentLoaded两个事件的区别
-
JS代码调试
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-ogonFbQx-1712882928958)]