Contents
本篇介紹Accordion組件(類似手風琴可以摺疊的UI組件)。
jQuery Accordion UI組件可以把一個包含有具有Header (標題頭)和Content(內容)對的容器轉變成Accordion組件。
比如如下一個Id=”accordion”Div HTML元素。
- <div id="accordion">
- <h1>Section 1</h1>
- <div>
- <p>Description 1</p>
- </div>
- <h2>Section 2</h2>
- <div>
- <p>Description 3</p>
- </div>
- <h3>Section 3</h3>
- <div>
- <p>Description 3</p>
- <ul>
- <li>List item one</li>
- <li>List item two</li>
- <li>List item three</li>
- </ul>
- </div>
- </div>
對於<div id=”accordion”>裡面的元素,According允許使用任意的標記,只要是一個Header緊接著一個Content,比如上面的H3,你可以換成H1,H2等其它標記,或者通過Header選項來配置。
有了這樣的HTML元素,然後對其使用Accordion方法,就將該HTML元素變成Accordion 樣式了
- <script>
- $("#accordion").accordion();
- </script>
本例完整代碼如下:
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <title>jQuery UI Demos</title>
- <link rel="stylesheet" href="themes/trontastic/jquery-ui.css" />
- <script src="scripts/jquery-1.9.1.js"></script>
- <script src="scripts/jquery-ui-1.10.1.custom.js"></script>
- <script>
- $(function () {
- });
- </script>
- </head>
- <body>
- <div id="accordion">
- <h1>Section 1</h1>
- <div>
- <p>Description 1</p>
- </div>
- <h2>Section 2</h2>
- <div>
- <p>Description 3</p>
- </div>
- <h3>Section 3</h3>
- <div>
- <p>Description 3</p>
- <ul>
- <li>List item one</li>
- <li>List item two</li>
- <li>List item three</li>
- </ul>
- </div>
- </div>
- <script>
- $("#accordion").accordion();
- </script>
- </body>
- </html>
Accordion 組件預設情況下總有一項內容是展開的,如說圖Section1的內容是可見的,點擊其它部分的標題,該部分內容可見,但無法將所有內容都摺疊起來,如果要支持所有部分都可以摺疊,可以通過配置collapsible
屬性,如:
- $(function() {
- $( "#accordion" ).accordion({
- collapsible: true
- });
- });
可以自定義Accordion 組件標題前的圖標,預設的圖標為箭頭(未展開是箭頭向右,展開時向下),使用jQuery CSS框架中定義的類或是通過自定義背景圖像類,可以重新配置這兩個圖標:
- $(function() {
- var icons = {
- header: "ui-icon-circle-arrow-e",
- activeHeader: "ui-icon-circle-arrow-s"
- };
- $( "#accordion" ).accordion({
- icons: icons
- });
- $( "#toggle" ).button().click(function() {
- if ( $( "#accordion" ).accordion( "option", "icons" ) ) {
- $( "#accordion" ).accordion( "option", "icons", null );
- } else {
- $( "#accordion" ).accordion( "option", "icons", icons );
- }
- });
- });
因為Accordion由「Block級」元素組成(可以參加CSS的display),因此它預設在水平方向佔據父元素的寬度,為了在高度方向也能充滿其父容器,可以通過配置heightStyle
為fill .HeightStyle 可以使用的值如下:
"auto"
: 所有Panel使用最高的那個Panel的高度."fill"
: 根據父容器的高度來填充."content"
: 每個Penel的高度取決於其內容.
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <title>jQuery UI Demos</title>
- <link rel="stylesheet" href="themes/trontastic/jquery-ui.css" />
- <script src="scripts/jquery-1.9.1.js"></script>
- <script src="scripts/jquery-ui-1.10.1.custom.js"></script>
- <style>
- #accordion-resizer {
- padding: 10px;
- width: 350px;
- height: 300px;
- }
- </style>
- <script>
- $(function () {
- $("#accordion").accordion({
- heightStyle: "fill"
- });
- });
- $(function () {
- $("#accordion-resizer").resizable({
- minHeight: 140,
- minWidth: 200,
- resize: function () {
- $("#accordion").accordion("refresh");
- }
- });
- });
- </script>
- </head>
- <body>
- <h3 class="docs">Resize the outer container:</h3>
- <div id="accordion-resizer" class="ui-widget-content">
- <div id="accordion">
- <h3>Section 1</h3>
- <div>
- <p>Mauris mauris ante, blandit et,
- ultrices a, suscipit eget,
- quam. Integer ut neque. Vivamus nisi metus,
- molestie vel, gravida in,
- condimentum sit amet, nunc. Nam a nibh.
- Donec suscipit eros. Nam mi.
- Proin viverra leo ut odio.
- Curabitur malesuada.
- Vestibulum a velit eu ante
- scelerisque vulputate.</p>
- </div>
- <h3>Section 2</h3>
- <div>
- <p>Sed non urna. Donec et ante.
- Phasellus eu ligula.
- Vestibulum sit amet purus.
- Vivamus hendrerit,
- dolor at aliquet laoreet,
- mauris turpis porttitor velit,
- faucibus interdum tellus
- libero ac justo.
- Vivamus non quam.
- In suscipit faucibus urna. </p>
- </div>
- <h3>Section 3</h3>
- <div>
- <p>Nam enim risus, molestie et,
- porta ac,
- aliquam ac, risus. Quisque lobortis.
- Phasellus pellentesque purus in massa.
- Aenean in pede. Phasellus
- ac libero ac tellus
- pellentesque semper.
- Sed ac felis. Sed commodo,
- magna quis lacinia ornare,
- quam ante aliquam nisi,
- eu iaculis leo purus
- venenatis dui. </p>
- <ul>
- <li>List item one</li>
- <li>List item two</li>
- <li>List item three</li>
- </ul>
- </div>
- <h3>Section 4</h3>
- <div>
- <p>Cras dictum. Pellentesque
- habitant morbi
- tristique senectus et netus
- et malesuada
- fames ac turpis egestas.
- Vestibulum
- ante ipsum primis in faucibus
- orci luctus
- et ultrices posuere cubilia
- Curae;
- Aenean lacinia mauris
- vel est. </p>
- <p>Suspendisse eu nisl. Nullam ut libero.
- Integer dignissim consequat lectus.
- Class aptent taciti sociosqu ad litora
- torquent per conubia nostra,
- per inceptos himenaeos. </p>
- </div>
- </div>
- </div>
- </body>
- </html>
預設情況下,打開Accordion某個部分內容,是點擊該部分標題,如果需要實現移動滑鼠到該部分自動展開內容,可以設置event屬性,例如:
- $(function () {
- $("#accordion").accordion({
- event: "mouseover"
- });
- });
使用sortable方法允許重新調整Accordion每個部分的順序,可以通過拖放的方法調整順序:
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <title>jQuery UI Demos</title>
- <link rel="stylesheet" href="themes/trontastic/jquery-ui.css" />
- <script src="scripts/jquery-1.9.1.js"></script>
- <script src="scripts/jquery-ui-1.10.1.custom.js"></script>
- <style>
- /* IE has layout issues when sorting (see #5413) */
- .group {
- zoom: 1;
- }
- </style>
- <script>
- $(function () {
- $("#accordion").accordion({
- header: "> div > h3",
- collapsible: true
- }).sortable({
- axis: "y",
- handle: "h3",
- stop: function (event, ui) {
- // IE doesn't register the blur when sorting
- // so trigger focusout handlers to remove .ui-state-focus
- ui.item.children("h3").triggerHandler("focusout");
- }
- });;
- });
- </script>
- </head>
- <body>
- <div id="accordion">
- <div class="group">
- <h3>Section 1</h3>
- <div>
- <p>Description 1</p>
- </div>
- </div>
- <div class="group">
- <h3>Section 2</h3>
- <div>
- <p>Description 2</p>
- </div>
- </div>
- <div class="group">
- <h3>Section 3</h3>
- <div>
- <p>Description 3</p>
- <ul>
- <li>List item one</li>
- <li>List item two</li>
- <li>List item three</li>
- </ul>
- </div>
- </div>
- <div class="group">
- <h3>Section 4</h3>
- <div>
- <p>Description 4</p>
- </div>
- </div>
- </div>
- </body>
- </html>
注意,這裡使用Header屬性,標題部分由div ,h3 共同構成。