You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现可折叠个人资料页面:将头像固定至AppBar

展开/收起页面过渡效果实现方案

给你一套实用的纯CSS+JS实现方案,直接就能复用:

核心逻辑

靠CSS的transition属性做平滑过渡动画,配合JS切换类名来控制容器的展开/收起状态。

代码实现

HTML结构

<div class="toggle-box">
  <button class="toggle-btn">切换状态</button>
  <div class="content-wrap">
    <div class="inner-content">
      <!-- 这里替换成你要展开收起的内容 -->
      <p>示例文本1</p>
      <p>示例文本2</p>
      <p>示例文本3</p>
    </div>
  </div>
</div>

CSS样式

.toggle-box {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

/* 默认收起状态 */
.content-wrap {
  width: 0;
  overflow: hidden;
  transition: width 0.3s ease;
  border: 1px solid #ddd;
  padding: 0;
}

/* 展开状态的类 */
.content-wrap.expanded {
  width: 220px; /* 展开后的宽度可按需调整 */
  padding: 10px;
}

/* 内容延迟显示,避免过渡时挤在一起 */
.inner-content {
  opacity: 0;
  transition: opacity 0.2s ease 0.1s;
}

.content-wrap.expanded .inner-content {
  opacity: 1;
}

.toggle-btn {
  padding: 8px 16px;
  cursor: pointer;
  border: none;
  background: #f5f5f5;
}

JS控制逻辑

const toggleBtn = document.querySelector('.toggle-btn');
const contentWrap = document.querySelector('.content-wrap');

toggleBtn.addEventListener('click', () => {
  contentWrap.classList.toggle('expanded');
});

细节调整提示

  • 如果需要高度方向的展开收起,把CSS里的width换成height即可
  • 想要更丝滑的视觉效果,可以给容器加box-shadow的过渡
  • 要是内容较多,可把固定宽度改成max-width,让容器自适应内容宽度

内容的提问来源于stack exchange,提问作者Kthree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:34:58