首頁  >  文章  >  web前端  >  詳解Bootstrap中的手風琴效果

詳解Bootstrap中的手風琴效果

青灯夜游
青灯夜游轉載
2021-04-21 10:30:113354瀏覽

這篇文章跟大家詳細介紹一下Bootstrap中的手風琴效果。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

詳解Bootstrap中的手風琴效果

Bootstrap 框架中 Collapse外掛程式(摺)其實就是我們常見的手風琴效果。當單擊一個觸發元素時,在另一個可折疊區域進行顯示或隱藏,再次單擊時可以反轉顯示狀態。經典的場景是多個折疊區域的手風琴風格以及單一title/content的風格。 【相關推薦:《bootstrap教學》】

結構


#手風琴最關鍵的部分,就是每個標題對應有一個內容,在Bootstrap框架中將這兩個部分組合起來稱為一個panel面板,如下邊效果所示,有三個panel面板,將這三個面板組合在一起,就是一個面板組合 panel-group,也就是手風琴的結構

簡單點就是一個觸發器和一個折疊區 

<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">触发器</button>
<div id="demo" class="collapse in">折叠区</div>
<div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">标题一</a></h4>
        </div>
        <div id="collapseOne" class="panel-collapse collapse in">
            <div class="panel-body">标题一对应的内容</div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">标题二</a></h4>
        </div>
        <div id="collapseTwo" class="panel-collapse collapse">
            <div class="panel-body">标题二对应的内容</div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">标题三</a></h4>
        </div>
        <div id="collapseThree" class="panel-collapse collapse">
            <div class="panel-body">标题三对应的内容</div>
        </div>
    </div>
</div>

詳解Bootstrap中的手風琴效果

##聲明式觸發


觸發手風琴可以透過自訂的 data-toggle 屬性來觸發。其中data-toggle值設定為 collapse,data-target="#折疊區標識符"。接下來我們來看一個簡單的範例


第一步:設計一個面板組合,裡面有三個折疊區

<div class="panel-group" id="myAccordion">
    <div class="panel panel-accordion panel-default"></div>
    <div class="panel panel-accordion panel-default"></div>
    <div class="panel panel-accordion panel-default"></div>
</div>

第二步:為面板新增內容,每個面板包括兩個部分,第一個是面板標題 panel-heading,並且在這裡面添加標題 panel-title。第二部分是面板內容,也就是折疊區,使用 panel-collapse 樣式

<div class="panel panel-accordion panel-default">
    <div class="panel-heading">
        <h4 class="panel-title">标题一</h4>
    </div>
    <div class="panel-collapse">
        <div class="panel-body">折叠区内容...</div>
    </div>
</div>

第三步:為了把標題和內容區捆綁在一起,可以透過錨連結的方法,把標題區域和麵板區連在一起

<div class="panel-group" id="myAccordion">
    <div class="panel panel-accordion panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a href="#panel1">标题一</a></h4>
        </div>
        <div class="panel-collapse" id="panel1">
            <div class="panel-body">折叠区内容...</div>
        </div>
    </div>
    <div class="panel panel-accordion panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a href="#panel2">标题二</a></h4>
        </div>
        <div class="panel-collapse" id="panel2">
            <div class="panel-body">折叠区内容...</div>
        </div>
    </div>
    ......
</div>

第四步:控制面板內容區是否可視。在Bootstrap框架中,如果想要讓內容區域不可見,只需要在panel-collapse 樣式上加入 collapse;如果想要讓內容區域預設可見,則需要新增樣式collapse和in

<div class="panel panel-accordion panel-default">
    <div class="panel-heading">
        <h4 class="panel-title"><a href="#panel1">标题一</a></h4>
    </div>
    <div class="panel-collapse collapse" id="panel1">
        <div class="panel-body">折叠区内容...</div>
    </div>
</div>

第五步:啟動手風琴互動行為。要完成互動行為,需要在標題連結中自訂兩個屬性,一個是data-toggle,並且取值為collapse;另一個是data-target,取值為各個面板內容區的標識符,比如說ID,在這個例子分別是#panel1、#panel2和#panel3:


[注意]在這個案例中不加入

data-target="#panel1"也可以,因為前面已經有了href="#panel1",但如裡是button按鈕當觸發器就必須使用data-target="#panel1"語句

<div class="panel panel-accordion panel-default">
    <div class="panel-heading">
        <h4 class="panel-title"><a href="#panel1" data-toggle="collapse" data-target="#panel1">标题一</a></h4>
    </div>
    <div class="panel-collapse collapse in" id="panel1">
        <div class="panel-body">折叠区内容...</div>
    </div>
</div>

第六步:定義data-parent屬性,實作點擊其中一個元素時,關閉所有的折疊區,再開啟所點選的區域(如果所點選區域是展示的,則會關閉)。這個data-parent取值與手風琴面板容器的標識符相匹配,例如這個例子是指 #myAccordion

<div class="panel-group" id="myAccordion">
    <div class="panel panel-accordion panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a href="#panel1" data-toggle="collapse" data-target="#panel1" data-parent="#myAccordion">标题一</a>
            </h4>
        </div>
…

透過以上6步,可以總結出以下要點


#  ☑使用panel 的panel-title 作為觸發元素,使用panel-body的父元素作為折疊區;

#  ☑ 使用一個panel-group 來包含多個panel,從而實現手風琴效果; 

# ☑ 每個panel 裡的觸發元素都要指定data-parent屬性,data-parent 屬性的值對應panel-group樣式元素的ID或其他樣式識別碼;

  ☑ 觸發元素需要指定data-toggle ,且值為collapse;

  ☑ 觸發元素需要指定data-target屬性, data-target屬性的值對應panel-body 的父元素的ID或其他樣式識別碼;如果是a元素,可以指定href屬性替代

<div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#panel1">标题一</a></h4>
        </div>
        <div id="panel1" class="panel-collapse collapse in">
            <div class="panel-body">折叠区内容一</div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#panel2">标题二</a></h4>
        </div>
        <div id="panel2" class="panel-collapse collapse">
            <div class="panel-body">折叠区内容二</div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#panel3">标题三</a></h4>
        </div>
        <div id="panel3" class="panel-collapse collapse">
            <div class="panel-body">折叠区内容三</div>
        </div>
    </div>
</div>

詳解Bootstrap中的手風琴效果

JS觸發


#【關鍵字】

$(element).collapse('show');//显示折叠区域
$(element).collapse('hide');//隐藏折叠区域
$(element).collapse('toggle');//反转折叠区域
<button>显示折叠区域</button>
<button>隐藏折叠区域</button>
<button>反转折叠区域</button>

<div>
    <div>
        <div>
            <h4><a>标题一</a></h4>
        </div>
        <div>
            <div>折叠区内容一</div>
        </div>
    </div>
    <div>
        <div>
            <h4><a>标题二</a></h4>
        </div>
        <div>
            <div>折叠区内容二</div>
        </div>
    </div>
    <div>
        <div>
            <h4><a>标题三</a></h4>
        </div>
        <div>
            <div>折叠区内容三</div>
        </div>
    </div>
</div>
<script>
$(function(){
    $(&#39;#btn1&#39;).click(function(){
        $(&#39;.collapse&#39;).collapse(&#39;show&#39;);
    })
    $(&#39;#btn2&#39;).click(function(){
        $(&#39;.collapse&#39;).collapse(&#39;hide&#39;);
    })
    $(&#39;#btn3&#39;).click(function(){
        $(&#39;.collapse&#39;).collapse(&#39;toggle&#39;);
    })
})
</script>

詳解Bootstrap中的手風琴效果

【事件】

此外掛支援4種類型的事件訂閱 

show.bs.collapse        show方法调用之后立即触发该事件
shown.bs.collapse      此事件在collapse已经显示出来(并且同时在 CSS 过渡效果完成)之后被触发
hide.bs.collapse        hide方法调用之后立即触发该事件。
hidden.bs.collapse     此事件在collapse被隐藏(并且同时在 CSS 过渡效果完成)之后被触发
<div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" data-html="标题一" href="#panel1">标题一</a></h4>
        </div>
        <div id="panel1" class="panel-collapse collapse in">
            <div class="panel-body">折叠区内容一</div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" data-html="标题二" href="#panel2">标题二</a></h4>
        </div>
        <div id="panel2" class="panel-collapse collapse">
            <div class="panel-body">折叠区内容二</div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" data-html="标题三" href="#panel3">标题三</a></h4>
        </div>
        <div id="panel3" class="panel-collapse collapse">
            <div class="panel-body">折叠区内容三</div>
        </div>
    </div>
</div>
<script>
$(function(){
    $("#accordion").on("show.bs.collapse",function(e){
        var $element = $(e.target).siblings().first().find(&#39;a&#39;);
        $element.html($element.data(&#39;html&#39;) + &#39;[折叠区已打开]&#39;);
    }).on("hide.bs.collapse",function(e){
        var $element = $(e.target).siblings().first().find(&#39;a&#39;);
        $element.html($element.data(&#39;html&#39;) + &#39;[折叠区已关闭]&#39;);
    })

});    
</script>

詳解Bootstrap中的手風琴效果

更多程式相關知識,請造訪:

程式設計入門! !

以上是詳解Bootstrap中的手風琴效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除