本博文源于jQuery,旨在学习jquery中动画的一些操作。
程序中,我们调用了animate()函数,并传入两个参数:
$("#box").animate({
"left":800,
"top":300,
"width":100,
"height":100,
"border-radius":"50%"
},2000);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.box {
width: 100px;
height: 100px;
background-color: blue;
position: relative;
}
</style>
</head>
<body>
<div class="box" id="box"></div>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$("#box").animate({
"left":800,
"top":300,
"width":100,
"height":100,
"border-radius":"50%"
},2000);
</script>
</body>
</html>
基本上我们常用到的都可以,除了一些
不考虑兼容性那就需要用c3做动画,如果考虑兼容性那就直接jquery适合
学习这些,来个例子体会就行了
$("#box1").animate({"left":1000},1000);
$("#box2").animate({"left":1000},1000);
$("#box3").animate({"left":1000},1000);
$("#box4").animate({"left":1000},1000);
$("#box5").animate({"left":1000},1000);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.box {
width: 100px;
height: 100px;
background-color: blue;
position: relative;
margin-bottom: 10px;
}
</style>
</head>
<body>
<div class="box" id="box1"></div>
<div class="box" id="box2"></div>
<div class="box" id="box3"></div>
<div class="box" id="box4"></div>
<div class="box" id="box5"></div>
<!-- <div class="box" id="box"></div> -->
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
//不同元素的animate()动画会同时进行
$("#box1").animate({"left":1000},1000);
$("#box2").animate({"left":1000},1000);
$("#box3").animate({"left":1000},1000);
$("#box4").animate({"left":1000},1000);
$("#box5").animate({"left":1000},1000);
</script>
</body>
</html>
$("#box").animate({"left":1000},1000);
$("#box").animate({"top":400},1000);
$("#box").animate({"left":0},1000);
$("#box").animate({"top":0},1000);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.box {
width: 100px;
height: 100px;
background-color: blue;
position: relative;
margin-bottom: 10px;
}
</style>
</head>
<body>
<!-- <div class="box" id="box1"></div>
<div class="box" id="box2"></div>
<div class="box" id="box3"></div>
<div class="box" id="box4"></div>
<div class="box" id="box5"></div> -->
<div class="box" id="box"></div>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
//同一个元素的多个animate()动画会排队进行
$("#box").animate({"left":1000},1000);
$("#box").animate({"top":400},1000);
$("#box").animate({"left":0},1000);
$("#box").animate({"top":0},1000);
</script>
</body>
</html>
$("#box").animate({
"left":1000,
"top":400
},2000);
$("#box").animate({"left":1000},1000);
$("#box").animate({"top":400},1000);
答:
animate第三个参数支持回调函数,回调函数就是指,当动画执行完毕之后执行的动作
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.box {
width:80px;
height: 80px;
background-color: #ccc;
position: relative;
}
</style>
</head>
<body>
<div class = "box"></div>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(".box").animate({"left":800},1000,function(){
$(this).css("background-color","green");
});
</script>
</body>
</html>
动画的停止函数stop(),里面有两个默认参数false
$(选择器).animate(是否清空后续动画队列,是否立即完成当前剩余动画)
两个都是false,意味着不清空后续动画序列,不完成当前剩余动画。
true true :清空后续动画序列,完成当前剩余动画
来个例子测试一下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.box {
width: 100px;
height: 100px;
background-color: blue;
position: relative;
margin-top: 20px;
}
</style>
</head>
<body>
<button id="btn1">stop()</button>
<button id="btn2">stop(true)</button>
<button id="btn3">stop(true,true)</button>
<button id="btn4">stop(false,true)</button>
<div class="box" id="box"></div>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$("#box").animate({"left":1000},5000);
$("#box").animate({"top":400},5000);
$("#btn1").click(function(){
$("#box").stop();
});
$("#btn2").click(function(){
$("#box").stop(true);
});
$("#btn3").click(function(){
$("#box").stop(true,true);
});
$("#btn4").click(function(){
$("#box").stop(false,true);
});
</script>
</body>
</html>
第一个按钮false .false 按住之后不清空后续动画队列,并且不立即完成当前剩余动画。所以单击按钮1,虽然盒子会停止当前正在执行的从左到右运动的动画,但是没有清空动画队列,所以盒子会立即进行第二段动画
第二个按钮true false,意思是清空后续动画队列,并且不完成当前剩余动画,单击按钮2,不但会停止,后续也不执行了
第三个按钮 true true 不但会清空动画队列,而且还会立即完成当前动画。所以盒子直接跳到最右边
第四个按钮false true 不会清空动画队列,立即完成当前动画,也就是直接跳到最右边,然后继续完成后面队列动画
想让动画延缓执行,那就需要用到动画延迟
例如:下面的语句使盒子延迟2000毫秒后再进行动画
$(".box").delay(2000).animate({"left":1000},1000);
这篇博文独立写延迟案例,效果非常炫酷,值得一看!
jQuery广告小动画制作(含测试源码)
当一个正处于动画状态的时候,突然执行animate,不会立即响应,而是做完自己的动画才响应动画。,因此这就是动画积累了,解决这个方法需要用到stop(true),按照定义,请空后续动画队列,并且不完成当前剩余动画,美其名曰立即响应用户行为
$("#btn1").click(function(){
$("#box").stop(true).animate({"left":800},1000);
});
$("#btn2").click(function(){
$("#box").stop(true).animate({"left":0},1000);
});
```javascript
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.box {
width: 100px;
height: 100px;
background-color: orange;
position: relative;
}
</style>
</head>
<body>
<button id="btn1">往左跑</button>
<button id="btn2">往右跑</button>
<div class="box" id="box"></div>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$("#btn1").click(function(){
$("#box").stop(true).animate({"left":800},1000);
});
$("#btn2").click(function(){
$("#box").stop(true).animate({"left":0},1000);
});
</script>
</body>
</html>
jquery将一些常见的动画封装成独立的函数
这两个函数的效果时以滑动方式隐藏元素,里面的参数是毫秒,但也支持“fast”、“slow”、“normal”
描述词语 | 对应的时长(毫秒) |
---|---|
slow | 600 |
normal | 400 |
fast | 200 |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
background-color: skyblue;
margin-top: 10px;
}
</style>
</head>
<body>
<button id="btn1">slideDown</button>
<button id="btn2">slideUp</button>
<div ></div>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$("#btn1").click(function(){
$("div").slideDown("fast");
});
$("#btn2").click(function(){
$("div").slideUp("fast");
});
</script>
</body>
</html>
这个函数跟上面的slideup和down类似,里面参数类型也跟它相似,一个案例体会一下
$("button").click(function(){
$("div").fadeIn("slow");
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
background-color: skyblue;
margin-top: 10px;
display: none;
}
</style>
</head>
<body>
<button>按我淡入</button>
<div ></div>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$("button").click(function(){
$("div").fadeIn("slow");
});
</script>
</body>
</html>