当前位置:首页 > JavaScript

js 实现折叠

2026-03-14 19:39:19JavaScript

使用 CSS 和 JavaScript 实现折叠效果

通过切换 CSS 类或直接修改样式,可以实现元素的折叠与展开效果。以下是两种常见方法:

方法一:切换 CSS 类控制显示/隐藏

<style>
  .content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease-out;
  }
  .content.expanded {
    max-height: 500px; /* 调整为实际内容高度 */
  }
</style>

<button onclick="toggleCollapse()">切换折叠</button>
<div id="collapseContent" class="content">
  <!-- 折叠内容 -->
</div>

<script>
  function toggleCollapse() {
    const content = document.getElementById('collapseContent');
    content.classList.toggle('expanded');
  }
</script>

方法二:动态计算高度实现平滑动画

function toggleCollapse(elementId) {
  const element = document.getElementById(elementId);
  if (element.style.maxHeight) {
    element.style.maxHeight = null;
  } else {
    element.style.maxHeight = element.scrollHeight + 'px';
  }
}

使用 details/summary 原生 HTML 元素

HTML5 原生支持折叠效果,无需 JavaScript:

<details>
  <summary>点击展开/折叠</summary>
  <p>折叠内容区域</p>
</details>

第三方库实现方案

使用 jQuery 的 toggle/slide 方法:

$('#toggleButton').click(function() {
  $('#content').slideToggle(300);
});

使用 Bootstrap 折叠组件:

<button class="btn btn-primary" data-toggle="collapse" data-target="#demo">
  折叠按钮
</button>
<div id="demo" class="collapse">
  折叠内容
</div>

动画优化技巧

使用 will-change 属性提升性能:

.collapsible {
  will-change: height;
  transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

考虑添加 ARIA 属性增强可访问性:

js 实现折叠

<button aria-expanded="false" aria-controls="content">
  切换内容
</button>
<div id="content" hidden>...</div>

以上方法可根据具体需求选择,原生 details/summary 最简单但定制性差,CSS/JavaScript 方案提供更多控制,第三方库则适合已有相关技术栈的项目。

标签: js
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…