jQuery UI 实例 – 折叠面板(Accordion)

jQuery UI Accordion(折叠面板)实例

Accordion 是 jQuery UI 中最经典、最常用的组件之一,常用于侧边栏导航、FAQ 问答、设置面板、商品详情等场景。

官方演示地址:https://jqueryui.com/accordion/

下面提供从基础到高级的完整实例,直接复制即可运行(使用最新 CDN)。

1. 最基础折叠面板

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery UI Accordion 基础示例</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.13.2/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-3.6.0.min.js"></script>
  <script src="//code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
  <style>
    body { font-family: "Microsoft YaHei", Arial; }
  </style>
</head>
<body>

<div id="accordion">
  <h3>前端开发</h3>
  <div>
    <p>HTML、CSS、JavaScript 是前端三大基石。</p>
    <ul>
      <li>HTML 负责结构</li>
      <li>CSS 负责样式</li>
      <li>JavaScript 负责交互</li>
    </ul>
  </div>

  <h3>后端开发</h3>
  <div>
    <p>常见后端语言有 Java、Python、Node.js、PHP 等。</p>
  </div>

  <h3>数据库</h3>
  <div>
    <p>MySQL、MongoDB、Redis 是最常用的数据库。</p>
  </div>

  <h3>运维与部署</h3>
  <div>
    <p>Docker + Nginx + Jenkins 是现代部署标配。</p>
  </div>
</div>

<script>
  $(function() {
    $("#accordion").accordion();
  });
</script>

</body>
</html>

2. 常用选项配置(高度自适应、默认展开、图标自定义)

<script>
  $("#accordion").accordion({
    heightStyle: "content",     // 高度随内容自适应(推荐!)
    collapsible: true,          // 允许全部收起
    active: 0,                  // 默认展开第1个(0表示第一个)
    // active: false,           // 配合 collapsible: true 可实现默认全部收起

    icons: {                    // 自定义展开/收起小箭头
      header: "ui-icon-triangle-1-e",
      activeHeader: "ui-icon-triangle-1-s"
    },

    header: "> div > h3"        // 如果结构不是直接 h3,可自定义选择器
  });
</script>

3. 多层嵌套 + 手风琴嵌套

<div id="accordion">
  <h3>前端框架</h3>
  <div>
    <div id="nested">   <!-- 嵌套一个 accordion -->
      <h3>Vue.js</h3>
      <div><p>渐进式 JavaScript 框架,易上手</p></div>
      <h3>React</h3>
      <div><p>Facebook 出品,组件化开发</p></div>
      <h3>Angular</h3>
      <div><p>Google 出品,功能最完整</p></div>
    </div>
  </div>

  <h3>UI 组件库</h3>
  <div>
    <p>Element UI、Ant Design、Bootstrap、Layui 等</p>
  </div>
</div>

<script>
  $("#accordion").accordion({
    heightStyle: "content",
    collapsible: true
  });

  $("#nested").accordion({      // 嵌套的也要单独初始化
    heightStyle: "content",
    collapsible: true
  });
</script>

4. 事件监听 + 动态添加面板

<button id="addPanel">动态添加一个面板</button>

<script>
  $("#accordion").accordion({
    activate: function(event, ui) {
      // 每次切换面板时触发
      console.log("当前展开的是:", ui.newHeader.text());
    }
  });

  let count = 5;
  $("#addPanel").click(function() {
    const newHeader = `<h3>新面板 ${count}</h3>`;
    const newContent = `<div><p>这是动态添加的内容,你可以放任何 HTML。</p></div>`;
    $("#accordion").append(newHeader + newContent);

    // 关键:添加后必须刷新 accordion
    $("#accordion").accordion("refresh");
    count++;
  });
</script>

5. 完整美化版(带图标、颜色、圆角)

<style>
  .ui-accordion-header {
    background: #3498db;
    color: white;
    border-radius: 6px 6px 0 0;
    margin-bottom: 4px;
    padding-left: 40px !important;
    position: relative;
  }
  .ui-accordion-header::before {
    content: "▶";
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
  }
  .ui-accordion-header-active::before { content: "▼"; }
  .ui-accordion-content { 
    border: 1px solid #ddd; 
    border-top: none;
    border-radius: 0 0 6px 6px;
    padding: 15px !important;
  }
</style>

小技巧总结

  • 推荐始终加 heightStyle: "content",避免内容被裁剪。
  • 想默认全部收起 → collapsible: true, active: false
  • 想通过 URL hash 打开指定面板 → 使用 active: "#section3" 或配合 JS
  • 移动端建议加 event: "click touchstart" 支持触摸

需要我给你一个 左侧导航菜单完整模板FAQ 问答页面、或 配合 Tabs 做选项卡+折叠面板组合 的实例吗?直接说!

文章已创建 3350

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部