Jquery 實現手風琴切換效果
阿新 • • 發佈:2019-01-26
這兩天公司需要實現一個手風琴切換的效果,但是網上搜了下,多半都是基於Bootstrap寫的,一個小小的功能,用到這麼大的庫,覺得有些太誇張了,當然引入之後使用效果可能會好看些,但是也導致了,Bootstrap的公共樣式可能會和你本地的樣式衝突,為了不必要的麻煩,查了文件,索性自己寫一個簡單的,但是效果上不遜Bootstrap的,也為了之後需要的時候,不需要在動手去思考想如何寫了。
兩種思路實現:
1.menu_tab的li標籤很多,點選其中一個,當前的增加樣式顯示(addClass),其他的所有移除樣式隱藏效果(removeClass)。
2.第一種思路雖然是正確的,也可以實現,但是,Jquery有更簡潔的屬性,toggleClass、siblings、slideToggle、animate。
toggleClass:新增/移除元素 之間的切換
語法:$(selector).toggleClass(classname,function(index,currentclass),switch)
siblings:(遍歷)查詢每個元素的所有同胞元素
語法:$(selector).siblings(filter)
slideToggle: 對所選元素上進行 slideUp() 和 slideDown() 之間的切換(可設定時間的延遲)
語法:$(selector).slideToggle(speed,easing,callback)
animate:改變元素的高度,用於建立自定義動畫
語法:$(selector).animate({params},speed,callback);
加減號的效果是通過偽類實現的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jquery實現手風琴的切換效果</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="../jquery-1.11.1.min.js"></script >
<style type="text/css">
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
p {
text-align: center;
padding-top: 30px;
font-size: 18px;
color: orange;
}
.menu_tab {
margin: 10px auto;
width: 300px;
height: auto;
border: 1px solid #000000;
}
label {
display: block;
color: #fff;
background: #728bbb;
font-size: 14px;
padding: 10px 0 10px 25px;
border-bottom: 0.5px solid #97bdf4;
}
label::after {
content: "+";
font-size: 14px;
float: right;
margin-right: 15px;
}
label.selected::after {
content: '-';
}
.tab_content {
display: none;
font-size: 15px;
padding: 10px 20px;
color: #35c628;
text-align: center;
}
</style>
<script type="text/javascript">
// 導航欄menu_tab切換
$(function () {
$('.menu_tab').find('ul li:first-child').children('.tab_content').show(); //首行內容預設顯示
$(".menu_tab > ul > li").on("click", "label", function() {
$(this).toggleClass('selected').next('.tab_content').slideToggle(500);
$(this).parent().siblings().children('.tab_content').slideUp(500);
$(this).parent().siblings().children('label').removeClass('selected');
$("html,body").animate({scrollTop:0}, 500); // 切換menu_tab,整塊內容移動到頂部
});
});
</script>
</head>
<body>
<p>Jquery簡單的手風琴樣式切換</p>
<div class="menu_tab">
<ul>
<li>
<label class="tab selected">內容顯示 1</label>
<div class="tab_content">
長大以後 現在的我 常常會寂寞 <br>
偶爾繾綣 星星閃爍 剩最亮一顆 <br>
往事如風 劃過夜空 你的歌 <br>
跳動音符 熟悉旋律 誰來合 <br>
</div>
</li>
<li>
<label class="tab">內容顯示 2</label>
<div class="tab_content" style="color:red;">
長大以後 現在的我 忘記了快樂 <br>
人來人去 留在身邊 的朋友不多 <br>
那些天真 純純的笑 哪去了 <br>
潔白翅膀 美麗天使 不見了 <br>
</div>
</li>
<li>
<label class="tab">內容顯示 3</label>
<div class="tab_content" style="color:blue;">
曾經以為 世界很美 沒人流眼淚 <br>
吹熄蠟燭 許個心願 全都會實現 <br>
原來的我 懷念從前 是因為太留戀 <br>
懵懂的歲月中 只收藏了簡單的笑臉 <br>
</div>
</li>
</ul>
</div>
</body>
</html>