目錄
-
-
- jQuery 樣式操作
-
- 1、操作 css 方法
-
- 案例:圖檔突出顯示
- 2、設定類樣式方法
-
- 案例:tab 欄切換
- jQuery 效果
-
- 1、顯示隐藏:show() / hide() / toggle()
- 2、滑入滑出
-
- 案例:仿新浪下拉菜單
- 3、事件切換
-
- 案例:仿新浪下拉菜單
- 4、動畫隊列及其停止動畫排隊方法
-
- 案例:仿新浪下拉菜單
- 5、淡入淡出
-
- 案例:圖檔突出顯示
- 6、自定義動畫
-
- 案例:仿王者榮耀手風琴效果
-
學習來源: https://www.bilibili.com/video/BV1HJ41147DG
jQuery 樣式操作
jQuery中常用的樣式操作有兩種:css() 和 設定類樣式方法
1、操作 css 方法
jQuery 可以使用 css 方法來修改簡單元素樣式;也可以操作類,修改多個樣式。
常用以下三種形式:
- 參數隻寫屬性名,則是傳回屬性值
$(this).css('屬性名')
- 參數是屬性名,屬性值,逗号分隔,是設定一組樣式。屬性必須加引号,值如果是數字可以不用跟機關和引号
$(this).css('屬性名','屬性值')
$(this).css(''color'', ''red'');
$("div").css("width", 300);
- 參數可以是對象形式,友善設定多組樣式。屬性名和屬性值用冒号隔開, 屬性可以不用加引号
$(this).css({ "color":"white","font-size":"20px"});
$("div").css({
width: 400,
height: 400,
// 如果是複合屬性則必須采取駝峰命名法,如果值不是數字,則需要加引号
backgroundColor: "red"
})
css() 多用于樣式少時操作,多了則不太友善。
案例:圖檔突出顯示
相關連結:https://blog.csdn.net/qq_45645902/article/details/106002262
2、設定類樣式方法
作用等同于以前的 classList,可以操作類樣式,注意操作類裡面的參數不要加點。
常用的三種設定類樣式方法:
- 添加類
- 删除類
- 切換類
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
width: 150px;
height: 150px;
background-color: pink;
margin: 100px auto;
transition: all 0.5s;
}
.current {
background-color: red;
transform: rotate(360deg);
}
</style>
<script src="jquery.min.js"></script>
</head>
<body>
<div class="box1"></div>
<div class="current box2"></div>
<script>
$(function () {
// 添加類 addClass()
$(".box1").click(function () {
$(this).addClass("current");
});
// 删除類 removeClass()
$(".box2").click(function () {
$(this).removeClass("current");
});
// 切換類 toggleClass()
// $("div").click(function () {
// $(this).toggleClass("current");
// });
})
</script>
</body>
</html>
注釋
- 設定類樣式方法比較适合樣式多時操作,可以彌補 css() 的不足。
- 原生 JS 中 className 會覆寫元素原先裡面的類名,jQuery 裡面類操作隻是對指定類進行操作,不影響原先的類名。
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.one {
width: 200px;
height: 200px;
background-color: pink;
transition: all .3s;
}
.two {
transform: rotate(720deg);
}
</style>
<script src="jquery.min.js"></script>
</head>
<body>
<div class="one two"></div>
<script>
var one = document.querySelector(".one");
one.className = "two"; // 覆寫元素原先裡面的類名 class="two"
$(".one").addClass("two"); // addClass相當于追加類名,不影響以前的類名 class="one two"
$(".one").removeClass("two"); // class="one"
</script>
</body>
</html>
案例:tab 欄切換
相關案例:https://blog.csdn.net/qq_45645902/article/details/105979714
jQuery 效果
jQuery 給我們封裝了很多動畫效果,最為常見的如下:
- 顯示隐藏:
/show()
/hide()
toggle()
- 滑入滑出:
/slideDown()
/slideUp()
slideToggle()
- 淡入淡出:
/fadeIn()
/fadeOut()
/fadeToggle()
fadeTo()
- 自定義動畫:
animate()
注釋
- 動畫或者效果一旦觸發就會執行,如果多次觸發,就造成多個動畫或者效果排隊執行。
- jQuery為我們提供另一個方法,可以停止動畫排隊:
stop()
1、顯示隐藏:show() / hide() / toggle()
顯示隐藏動畫,常見有三個方法:
show()
/
hide()
/
toggle()
文法
show([speed, [easing], [fn]]) // 顯示
hide([speed, [easing], [fn]]) // 隐藏
toggle([speed, [easing], [fn]]) // 切換
注釋
- 參數都可以省略,無動畫直接顯示
- speed:三種預定速度之一的字元串(“slow”, “normal”, or “fast”)或表示動畫時長的毫秒數值(例如:1000)。
- easing:(Optional)用來指定切換效果,預設是"swing",可用參數"linear"。
- fn:回調函數,在動畫完成時執行的函數,每個函數執行一次。
- 平時一般不帶參數,直接顯示隐藏即可
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
div {
width: 150px;
height: 300px;
background-color: red;
}
</style>
<script src="jquery.min.js"></script>
</head>
<body>
<button>顯示</button>
<button>隐藏</button>
<button>切換</button>
<div></div>
<script>
$(function () {
$("button").eq(0).click(function () {
$("div").show(1000, function () {
alert(1);
});
})
$("button").eq(1).click(function () {
$("div").hide(1000, function () {
alert(1);
});
})
$("button").eq(2).click(function () {
$("div").toggle(1000);
})
// 一般情況下,我們都不加參數直接顯示隐藏就可以了
});
</script>
</body>
</html>

2、滑入滑出
滑入滑出動畫,常見有三個方法:
slideDown()
/
slideUp()
/
slideToggle()
文法
slideDown([speed, [easing], [fn]]) // 下滑
slideUp([speed, [easing], [fn]]) // 上滑
slideToggle([speed, [easing], [fn]]) // 切換滑動
注釋
- 參數都可以省略,無動畫直接顯示
- speed:三種預定速度之一的字元串(“slow”, “normal”, or “fast”)或表示動畫時長的毫秒數值(例如:1000)。
- easing:(Optional)用來指定切換效果,預設是"swing",可用參數"linear"。
- fn:回調函數,在動畫完成時執行的函數,每個函數執行一次。
示例
<script>
$(function () {
$("button").eq(0).click(function () {
// 下滑動 slideDown()
$("div").slideDown();
})
$("button").eq(1).click(function () {
// 上滑動 slideUp()
$("div").slideUp(500);
})
$("button").eq(2).click(function () {
// 滑動切換 slideToggle()
$("div").slideToggle(500);
});
});
</script>
案例:仿新浪下拉菜單
其他代碼參考:https://blog.csdn.net/qq_45645902/article/details/105984458
// 此代碼有問題,下面會介紹解決方法
<script>
$(function () {
// 滑鼠經過
$(".nav>li").mouseover(function () {
// show() 顯示元素 hide() 隐藏元素
$(this).children("ul").slideDown(200);
});
// 滑鼠離開
$(".nav>li").mouseout(function () {
$(this).children("ul").slideUp(200);
})
})
</script>
3、事件切換
jQuery中為我們添加了一個新事件 hover() ; 功能類似 css 中的僞類 :hover
注釋
- over:滑鼠移到元素上要觸發函數(相當于 mouseenter)
- out:滑鼠移出元素要觸發函數(相當于 mouseleave)
- 隻寫一個函數,滑鼠經過和離開都會觸發
案例:仿新浪下拉菜單
其他代碼參考:https://blog.csdn.net/qq_45645902/article/details/105984458
// 此代碼有問題,下面會介紹解決方法
<script>
$(function () {
// 事件切換 hover 滑鼠經過和離開的複合寫法
$('.nav>li').hover(function () {
$(this).children("ul").slideDown(200);
}, function () {
$(this).children("ul").slideUp(200);
})
// 事件切換 hover 隻寫一個函數,滑鼠經過和離開都會觸發
$('.nav>li').hover(function () {
$(this).children("ul").slideToggle(200);
})
// 以上兩種方法等價,使用一個要注釋另一個
})
</script>
4、動畫隊列及其停止動畫排隊方法
動畫或者效果一旦觸發就會執行,如果多次觸發,就造成多個動畫或者效果排隊執行。
停止動畫排隊
注釋
- stop() 方法用于停止動畫或效果。
- stop() 寫到動畫或者效果的前面, 相當于停止結束上一次的動畫。
- 每次使用動畫之前,先調用 stop(),再調用動畫。
案例:仿新浪下拉菜單
其他代碼參考:https://blog.csdn.net/qq_45645902/article/details/105984458
// 問題已解決
<script>
$(function () {
// 滑鼠經過
$(".nav>li").mouseover(function () {
// show() 顯示元素 hide() 隐藏元素
$(this).children("ul").stop().slideDown(200);
});
// 滑鼠離開
$(".nav>li").mouseout(function () {
$(this).children("ul").stop().slideUp(200);
})
// 事件切換 hover 滑鼠經過和離開的複合寫法
$('.nav>li').hover(function () {
$(this).children("ul").stop().slideDown(200);
}, function () {
$(this).children("ul").stop().slideUp(200);
})
// 事件切換 hover 隻寫一個函數,滑鼠經過和離開都會觸發
$('.nav>li').hover(function () {
$(this).children("ul").stop().slideToggle(200);
})
})
</script>
5、淡入淡出
淡入淡出動畫,常見有四個方法:
fadeIn()
/
fadeOut()
/
fadeToggle()
/
fadeTo()
文法
fadeIn([speed, [easing], [fn]]) // 淡入
fadeOut([speed, [easing], [fn]]) // 淡出
fadeToggle([speed, [easing], [fn]]) // 淡入淡出切換
fadeTo([[speed], opacity, [easing], [fn]]) // 漸進方式調整到指定的不透明度
注釋
- 除了fadeTo()的參數opacity不可以省略,其餘的參數都可以省略,無動畫直接顯示
- speed:三種預定速度之一的字元串(“slow”, “normal”, or “fast”)或表示動畫時長的毫秒數值(例如:1000)。
- easing:(Optional)用來指定切換效果,預設是"swing",可用參數"linear"。
- fn:回調函數,在動畫完成時執行的函數,每個函數執行一次。
- opacity:透明度,必須,取值0~1
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
div {
width: 150px;
height: 300px;
background-color: red;
display: none;
}
</style>
<script src="jquery.min.js"></script>
</head>
<body>
<button>淡入效果</button>
<button>淡出效果</button>
<button>淡入淡出切換</button>
<button>修改透明度</button>
<div></div>
<script>
$(function () {
$("button").eq(0).click(function () {
// 淡入 fadeIn()
$("div").fadeIn(1000);
})
$("button").eq(1).click(function () {
// 淡出 fadeOut()
$("div").fadeOut(1000);
})
$("button").eq(2).click(function () {
// 淡入淡出切換 fadeToggle()
$("div").fadeToggle(1000);
});
$("button").eq(3).click(function () {
// 修改透明度 fadeTo() 速度和透明度要必須寫
$("div").fadeTo(1000, 0.5);
});
});
</script>
</body>
</html>
案例:圖檔突出顯示
相關連結:https://blog.csdn.net/qq_45645902/article/details/105998539
6、自定義動畫
自定義動畫非常強大,通過參數的傳遞可以模拟以上所有動畫,方法為:
animate()
文法
注釋
- params:想要更改的樣式屬性,以對象形式傳遞,必須。屬性名可以不用帶括号,如果是複合屬性則需要采取駝峰命名法。
- speed:三種預定速度之一的字元串(“slow”, “normal”, or “fast”)或表示動畫時長的毫秒數值(例如:1000)。
- easing:(Optional)用來指定切換效果,預設是"swing",可用參數"linear"。
- fn:回調函數,在動畫完成時執行的函數,每個函數執行一次。
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="jquery.min.js"></script>
<style>
div {
position: absolute;
width: 200px;
height: 200px;
background-color: red;
}
</style>
</head>
<body>
<button>動起來</button>
<div></div>
<script>
$(function () {
$("button").click(function () {
$("div").animate({
left: 500,
top: 300,
opacity: .4,
width: 500
}, 500);
})
})
</script>
</body>
</html>
案例:仿王者榮耀手風琴效果
相關連結:https://blog.csdn.net/qq_45645902/article/details/105984752