jquery的事件沒有on,js的有。

1、show() 顯示 由小變大緩慢顯示
<html lang="en">
<head>
<meta charset="UTF-8">
<title>魔降風雲變</title>
<style>
#box{
width: 200px;
height: 200px;
background-color: red;
display: none;
}
</style>
</head>
<body>
<button id="btn">動畫</button>
<div id="box"></div>
<script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
<script type="text/javascript">
$('#btn').click(function () {
$('#box').show()
})
</script>
</body>
</html>
按鈕.click事件。預設不顯示的内容.show(),顯示出來
一開始是沒有的:
點選一下就出現了。
show中可以添加毫秒,1000毫秒是一秒。由小變大緩慢顯示
<html lang="en">
<head>
<meta charset="UTF-8">
<title>魔降風雲變</title>
<style>
#box{
width: 200px;
height: 200px;
background-color: red;
display: none;
}
</style>
</head>
<body>
<button id="btn">動畫</button>
<div id="box"></div>
<script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
<script type="text/javascript">
$('#btn').click(function () {
$('#box').show(2000)
})
</script>
</body>
</html>
View Code
$('#btn').click(function () {
$('#box').show(2000)
})
2、hide() 隐藏 由大到小指定速度隐藏
<html lang="en">
<head>
<meta charset="UTF-8">
<title>魔降風雲變</title>
<style>
#box{
width: 200px;
height: 200px;
background-color: red;
/*display: none;*/
}
</style>
</head>
<body>
<button id="btn">動畫</button>
<div id="box"></div>
<script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
<script type="text/javascript">
$('#btn').click(function () {
$('#box').hide(2000)
})
</script>
</body>
</html>
$('#btn').click(function () {
$('#box').hide(2000)
})
3、show,hide指定時間顯示隐藏動畫結合
<html lang="en">
<head>
<meta charset="UTF-8">
<title>魔降風雲變</title>
<style>
#box{
width: 200px;
height: 200px;
background-color: red;
display: none;
}
</style>
</head>
<body>
<button id="btn">動畫</button>
<div id="box"></div>
<script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
<script type="text/javascript">
$('#btn').click(function () {
if($(this).text()==='顯示'){ //jq節點對象.text() 擷取節點文本
$(this).text('隐藏') //jq節點對象.text('内容') 修改節點的文本
$('#box').show(2000) //jq節點對象.show()顯示display:none的内容
}else { //jq節點對象.show(2000) 指定時間由小到大顯示display:none的内容
$(this).text('隐藏');{
$(this).text('顯示') //jq節點對象.hide() 隐藏顯示的内容
$('#box').hide(2000) //jq節點對象.hide(2000)指定時間由大到小隐藏顯示的内容
} // if小花else花是判斷語句。 對象.事件(函小花)是綁定事件 小中if條件事件無。
}
})
</script>
</body>
</html>
檔案比圖檔變化快,想要圖檔放大或縮小之後再變文字:
<script type="text/javascript">
$('#btn').click(function () {
if($(this).text()==='顯示'){
$('#box').show(2000,function () {
$('#btn').text('隐藏') //對象.show(毫秒,這麼多毫秒之後做的函數)
} ) //不能用$(this),它在這裡不是btn
}else {
$(this).text('隐藏');{
$('#box').hide(2000,function (){ //對象.hide(毫秒,這麼多毫秒之後做的函數)
$('#btn').text('顯示')
})
}
}
})
</script>
3、toggle()記錄點選次數
點選一下變化一下。當給toggle一個時間參數的時候,如果點選次數過快,他會記錄點選次數。如果你停止點選了,但是記錄的次數還沒執行完,他會繼續執行直到點選次數次執行結束
<html lang="en">
<head>
<meta charset="UTF-8">
<title>魔降風雲變</title>
<style>
#box{
width: 200px;
height: 200px;
background-color: red;
display: none;
}
</style>
</head>
<body>
<button id="btn">顯示</button>
<div id="box"></div>
<script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
<script type="text/javascript">
$('#btn').click(function () {
$('#box').toggle(1000)
})
</script>
</body>
</html>
<script type="text/javascript">
$('#btn').click(function () {
$('#box').toggle(1000)
})
</script>
這時需要添加stop方法,先停止掉再開。
$('#box').stop().toggle(1000)
使用場景:
原文連結:https://www.cnblogs.com/majj/p/9113627.html
jQuery提供的一組網頁中常見的動畫效果,這些動畫是标準的、有規律的效果;同時還提供給我們了自定義動畫的功能。
顯示動畫
方式一:
$("div").show();
解釋:無參數,表示讓指定的元素直接顯示出來。其實這個方法的底層就是通過
display: block;
實作的。
方式二:
$('div').show(3000);
解釋:通過控制元素的寬高、透明度、display屬性,逐漸顯示,2秒後顯示完畢。
方式三:
$("div").show("slow");
參數可以是:
- slow 慢:600ms
- normal 正常:400ms
- fast 快:200ms
解釋:和方式二類似,也是通過控制元素的寬高、透明度、display屬性,逐漸顯示。
方式四:
//show(毫秒值,回調函數;
$("div").show(5000,function () {
alert("動畫執行完畢!");
});
解釋:動畫執行完後,立即執行回調函數。
總結:
上面的四種方式幾乎一緻:參數可以有兩個,第一個是動畫的執行時長,第二個是動畫結束後執行的回調函數。
隐藏動畫
方式參照上面的show()方法的方式。如下:
$(selector).hide();
$(selector).hide(1000);
$(selector).hide("slow");
$(selector).hide(1000, function(){});
實作點選按鈕顯示盒子,再點選按鈕隐藏盒子
代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#box{
width: 200px;
height: 200px;
background-color: green;
border: 1px solid red;
display: none;
}
</style>
</head>
<body>
<div id="box">
</div>
<button id="btn">隐藏</button>
</body>
<script src="jquery-3.3.1.js"></script>
<script type="text/javascript">
//jquery 提供了一些方法 show() hide() 控制元素顯示隐藏
var isShow = true;
$('#btn').click(function(){
if(isShow){
$('#box').show('slow',function(){
$(this).text('盒子出來了');
$('#btn').text('顯示');
isShow = false;
})
}else{
$('#box').hide(2000,function(){
$(this).text('');
$('#btn').text('隐藏');
isShow = true;
})
}
})
</script>
</html>
開關式顯示隐藏動畫
$('#box').toggle(3000,function(){});
顯示和隐藏的來回切換采用的是toggle()方法:就是先執行show(),再執行hide()。
$('#btn').click(function(){
$('#box').toggle(3000,function(){
$(this).text('盒子出來了');
if ($('#btn').text()=='隐藏') {
$('#btn').text('顯示');
}else{
$('#btn').text('隐藏');
}
});
})
滑入和滑出
1、滑入動畫效果:(類似于生活中的卷簾門)
$(selector).slideDown(speed, 回調函數);
解釋:下拉動畫,顯示元素。
注意:省略參數或者傳入不合法的字元串,那麼則使用預設值:400毫秒(同樣适用于fadeIn/slideDown/slideUp)
2、滑出動畫效果:
$(selector).slideUp(speed, 回調函數);
解釋:上拉動畫,隐藏元素。
3、滑入滑出切換動畫效果:
$(selector).slideToggle(speed, 回調函數);
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 300px;
height: 300px;
display: none;
background-color: green;
}
</style>
<script src="jquery-3.3.1.js"></script>
<script>
$(function () {
//點選按鈕後産生動畫
$("button:eq(0)").click(function () {
//滑入動畫: slideDown(毫秒值,回調函數[顯示完畢執行什麼]);
$("div").slideDown(2000, function () {
alert("動畫執行完畢!");
});
})
//滑出動畫
$("button:eq(1)").click(function () {
//滑出動畫:slideUp(毫秒值,回調函數[顯示完畢後執行什麼]);
$("div").slideUp(2000, function () {
alert("動畫執行完畢!");
});
})
$("button:eq(2)").click(function () {
//滑入滑出切換(同樣有四種用法)
$("div").slideToggle(1000);
})
})
</script>
</head>
<body>
<button>滑入</button>
<button>滑出</button>
<button>切換</button>
<div></div>
</body>
</html>
淡入淡出動畫
1、淡入動畫效果:
$(selector).fadeIn(speed, callback);
作用:讓元素以淡淡的進入視線的方式展示出來。
2、淡出動畫效果:
$(selector).fadeOut(1000);
作用:讓元素以漸漸消失的方式隐藏起來
3、淡入淡出切換動畫效果:
$(selector).fadeToggle('fast', callback);
作用:通過改變透明度,切換比對元素的顯示或隐藏狀态。
參數的含義同show()方法。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 300px;
height: 300px;
display: none;
/*透明度*/
opacity: 0.5;
background-color: red;
}
</style>
<script src="jquery-3.3.1.js"></script>
<script>
$(function () {
//點選按鈕後産生動畫
$("button:eq(0)").click(function () {
// //淡入動畫用法1: fadeIn(); 不加參數
$("div").fadeIn();
// //淡入動畫用法2: fadeIn(2000); 毫秒值
// $("div").fadeIn(2000);
// //通過控制 透明度和display
//淡入動畫用法3: fadeIn(字元串); slow慢:600ms normal正常:400ms fast快:200ms
// $("div").fadeIn("slow");
// $("div").fadeIn("fast");
// $("div").fadeIn("normal");
//淡入動畫用法4: fadeIn(毫秒值,回調函數[顯示完畢執行什麼]);
// $("div").fadeIn(5000,function () {
// alert("動畫執行完畢!");
// });
})
//滑出動畫
$("button:eq(1)").click(function () {
// //滑出動畫用法1: fadeOut(); 不加參數
$("div").fadeOut();
// //滑出動畫用法2: fadeOut(2000); 毫秒值
// $("div").fadeOut(2000); //通過這個方法實作的:display: none;
// //通過控制 透明度和display
//滑出動畫用法3: fadeOut(字元串); slow慢:600ms normal正常:400ms fast快:200ms
// $("div").fadeOut("slow");
// $("div").fadeOut("fast");
// $("div").fadeOut("normal");
//滑出動畫用法1: fadeOut(毫秒值,回調函數[顯示完畢執行什麼]);
// $("div").fadeOut(2000,function () {
// alert("動畫執行完畢!");
// });
})
$("button:eq(2)").click(function () {
//滑入滑出切換
//同樣有四種用法
$("div").fadeToggle(1000);
})
$("button:eq(3)").click(function () {
//改透明度
//同樣有四種用法
$("div").fadeTo(1000, 0.5, function () {
alert(1);
});
})
})
</script>
</head>
<body>
<button>淡入</button>
<button>淡出</button>
<button>切換</button>
<button>改透明度為0.5</button>
<div></div>
</body>
</html>
使用場景,這裡淡入淡出了;
卷簾門效果;
自定義動畫
文法:
$(selector).animate({params}, speed, callback);
作用:執行一組CSS屬性的自定義動畫。
- 第一個參數表示:要執行動畫的CSS屬性(必選)
- 第二個參數表示:執行動畫時長(可選)
- 第三個參數表示:動畫執行完後,立即執行的回調函數(可選)
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
position: absolute;
left: 20px;
top: 30px;
width: 100px;
height: 100px;
background-color: green;
}
</style>
<script src="jquery-3.3.1.js"></script>
<script>
jQuery(function () {
$("button").click(function () {
var json = {"width": 500, "height": 500, "left": 300, "top": 300, "border-radius": 100};
var json2 = {
"width": 100,
"height": 100,
"left": 100,
"top": 100,
"border-radius": 100,
"background-color": "red"
};
//自定義動畫
$("div").animate(json, 1000, function () {
$("div").animate(json2, 1000, function () {
alert("動畫執行完畢!");
});
});
})
})
</script>
</head>
<body>
<button>自定義動畫</button>
<div></div>
</body>
</html>
停止動畫
$(selector).stop(true, false);
裡面的兩個參數,有不同的含義。
第一個參數:
- true:後續動畫不執行。
- false:後續動畫會執行。
第二個參數:
- true:立即執行完成目前動畫。
- false:立即停止目前動畫。
PS:參數如果都不寫,預設兩個都是false。實際工作中,直接寫stop()用的多。
案例:滑鼠懸停時,彈出下拉菜單(下拉時帶動畫)
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
.wrap {
width: 330px;
height: 30px;
margin: 100px auto 0;
padding-left: 10px;
background-color: pink;
}
.wrap li {
background-color: green;
}
.wrap > ul > li {
float: left;
margin-right: 10px;
position: relative;
}
.wrap a {
display: block;
height: 30px;
width: 100px;
text-decoration: none;
color: #000;
line-height: 30px;
text-align: center;
}
.wrap li ul {
position: absolute;
top: 30px;
display: none;
}
</style>
<script src="jquery-3.3.1.js"></script>
<script>
//入口函數
$(document).ready(function () {
//需求:滑鼠放入一級li中,讓他裡面的ul顯示。移開隐藏。
var jqli = $(".wrap>ul>li");
//綁定事件
jqli.mouseenter(function () {
$(this).children("ul").stop().slideDown(1000);
});
//綁定事件(移開隐藏)
jqli.mouseleave(function () {
$(this).children("ul").stop().slideUp(1000);
});
});
</script>
</head>
<body>
<div class="wrap">
<ul>
<li>
<a href="javascript:void(0);">一級菜單1</a>
<ul>
<li><a href="javascript:void(0);">二級菜單2</a></li>
<li><a href="javascript:void(0);">二級菜單3</a></li>
<li><a href="javascript:void(0);">二級菜單4</a></li>
</ul>
</li>
<li>
<a href="javascript:void(0);">二級菜單1</a>
<ul>
<li><a href="javascript:void(0);">二級菜單2</a></li>
<li><a href="javascript:void(0);">二級菜單3</a></li>
<li><a href="javascript:void(0);">二級菜單4</a></li>
</ul>
</li>
<li>
<a href="javascript:void(0);">三級菜單1</a>
<ul>
<li><a href="javascript:void(0);">三級菜單2</a></li>
<li><a href="javascript:void(0);">三級菜單3</a></li>
<li><a href="javascript:void(0);">三級菜單4</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
ps:
javascript:void(0); //跟javascript:;效果一樣
上方代碼中,關鍵的地方在于,用了stop函數,再執行動畫前,先停掉之前的動畫。