2020年10月22日 星期四

jQuery Mobile 學習筆記 (八) : 摺疊面板

本篇紀錄摺疊面板 (accordion) 測試. 本系列之前的文章參考 :

jQuery Mobile 學習筆記 (三) : 工具列
jQuery Mobile 學習筆記 (四) : 對話框


摺疊面板的最基本結構是一個可收合的 div 容器, 裡面含有作為標題的 h1~h6 元素以及作為內容的 p 元素, 透過在 div 元素上添加 data-role="collapsible" 屬性使其變成可收合之摺疊面板 : 

<div data-role="collapsible">
  <h3>標題</h3>
  <p>內容</p>
</div>

其中 p 元素所包覆之內容部分預設會被收合隱藏, 而 h1~h6 元素所包覆之標題會被繪製成一個含有加號 "+" 圖示的按鈕, 按此按鈕會將內容展開, 按鈕圖示也會改成減號 "-" 圖示. 例如 : 



<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta charset="utf-8">
    <meta http-equiv="cache-control" content="no-cache">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
    <link href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" rel="stylesheet">
  </head>
  <body>
    <!-- 第一頁頁面 -->
    <section data-role="page" id="page1">
      <header data-role="header">
        <h1>摺疊面板測試</h1>
      </header>
      <article data-role="content">
        <div data-role="collapsible">
          <h3>相思(王維)</h3>
          <p>紅豆生南國, 春來發幾枝<br>願君多採擷, 此物最相思</p>
        </div>
        <div data-role="collapsible">
          <h3>靜夜思(李白)</h3>
          <p>床前明月光, 疑似地上霜<br>舉頭望明月, 低頭思故鄉</p>
        </div>
        <div data-role="collapsible">
          <h3>秋浦歌(李白)</h3>
          <p>白髮三千丈, 緣愁似個長<br>不知明鏡里, 何處得秋霜</p>
        </div>
        <div data-role="collapsible">
          <h3>獨坐敬亭山(李白)</h3>
          <p>眾鳥高飛盡, 孤雲獨去閒<br>相看兩不厭, 只有敬亭山</p>
        </div>
      </article>
      <footer data-role="footer">
        <h3>頁尾</h3>
      </footer>
    </section>
  </body>
</html>

此例用折疊面板來收納唐詩, 結果如下 : 




此例網址 QR code 為 :


上面的範例中, 每一個區塊預設都是收合的, 如果要強制將某個區塊預設改為展開可添加 data-collapsed="false" 屬性 (亦即, 沒有此屬性相當於設為 collapsed="true" 收合狀態) :



<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta charset="utf-8">
    <meta http-equiv="cache-control" content="no-cache">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
    <link href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" rel="stylesheet">
  </head>
  <body>
    <!-- 第一頁頁面 -->
    <section data-role="page" id="page1">
      <header data-role="header">
        <h1>摺疊面板測試</h1>
      </header>
      <article data-role="content">
        <div data-role="collapsible" data-collapsed="false">
          <h3>相思(王維)</h3>
          <p>紅豆生南國, 春來發幾枝<br>願君多採擷, 此物最相思</p>
        </div>
        <div data-role="collapsible" data-collapsed="false">
          <h3>靜夜思(李白)</h3>
          <p>床前明月光, 疑似地上霜<br>舉頭望明月, 低頭思故鄉</p>
        </div>
        <div data-role="collapsible">
          <h3>秋浦歌(李白)</h3>
          <p>白髮三千丈, 緣愁似個長<br>不知明鏡里, 何處得秋霜</p>
        </div>
        <div data-role="collapsible">
          <h3>獨坐敬亭山(李白)</h3>
          <p>眾鳥高飛盡, 孤雲獨去閒<br>相看兩不厭, 只有敬亭山</p>
        </div>
      </article>
      <footer data-role="footer">
        <h3>頁尾</h3>
      </footer>
    </section>
  </body>
</html>

此例將前兩個區塊用 data-collapsed="false" 強制打開, 結果如下 :




此例網址 QR code 為 :




上面兩個範例中的每一個可折疊區塊都是獨立的, 亦即展開與縮合都互不相干. 如果要製作具有手風琴 (accordion) 效果的容器就要在這些可折疊區塊外面再包覆一層 div 元素, 並且添加 data-role="collapsible-set" 屬性以便將裡面的所有可折疊區塊綁在一起, 當其中一個展開時, 其他區塊都縮合, 網頁結構如下 : 

<div data-role="collapsible-set">
  <div data-role="collapsible">
    <h3>標題</h3>
    <p>內容</p>
  </div>
</div>

例如可將上面範例改成如下具有手風琴效果的折疊面板 :



<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta charset="utf-8">
    <meta http-equiv="cache-control" content="no-cache">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
    <link href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" rel="stylesheet">
  </head>
  <body>
    <!-- 第一頁頁面 -->
    <section data-role="page" id="page1">
      <header data-role="header">
        <h1>摺疊面板測試</h1>
      </header>
      <article data-role="content">
        <div data-role="collapsible-set">
          <div data-role="collapsible">
            <h3>相思(王維)</h3>
            <p>紅豆生南國, 春來發幾枝<br>願君多採擷, 此物最相思</p>
          </div>
          <div data-role="collapsible">
            <h3>靜夜思(李白)</h3>
            <p>床前明月光, 疑似地上霜<br>舉頭望明月, 低頭思故鄉</p>
          </div>
          <div data-role="collapsible">
            <h3>秋浦歌(李白)</h3>
            <p>白髮三千丈, 緣愁似個長<br>不知明鏡里, 何處得秋霜</p>
          </div>
          <div data-role="collapsible">
            <h3>獨坐敬亭山(李白)</h3>
            <p>眾鳥高飛盡, 孤雲獨去閒<br>相看兩不厭, 只有敬亭山</p>
          </div>
        </div>
      </article>
      <footer data-role="footer">
        <h3>頁尾</h3>
      </footer>
    </section>
  </body>
</html>

此例是在上面範例的可折疊面板外面再套一層具有 data-role="collapsible-set" 屬性的 div 元素來約束每一個可折疊面板同時只有一個開啟, 其餘全部收合, 結果如下 : 




此例網址 QR code 為 :


沒有留言 :