当前位置:首页 > JavaScript

js实现收缩

2026-03-14 20:35:45JavaScript

实现元素收缩的 JavaScript 方法

使用 CSS transitionheight 属性 通过动态调整元素的 height 属性实现平滑收缩效果。初始状态需设置固定高度,收缩时改为 0 并配合 overflow: hidden

js实现收缩

const element = document.getElementById('target');
element.style.transition = 'height 0.3s ease';
element.style.height = `${element.scrollHeight}px`;

// 收缩函数
function collapse() {
  element.style.height = '0';
}

利用 classList.toggle 切换 CSS 类 预定义收缩样式的 CSS 类,通过 JavaScript 动态切换类名。

js实现收缩

.collapsed {
  height: 0;
  overflow: hidden;
  transition: height 0.3s;
}
document.getElementById('toggleBtn').addEventListener('click', () => {
  document.getElementById('target').classList.toggle('collapsed');
});

使用 requestAnimationFrame 实现逐帧动画 适用于需要更精细控制的场景,逐帧减少高度值。

function animateCollapse(element, duration = 300) {
  const startHeight = element.scrollHeight;
  const startTime = performance.now();

  function updateHeight(time) {
    const elapsed = time - startTime;
    const progress = Math.min(elapsed / duration, 1);
    element.style.height = `${startHeight * (1 - progress)}px`;

    if (progress < 1) {
      requestAnimationFrame(updateHeight);
    }
  }
  requestAnimationFrame(updateHeight);
}

注意事项

  • 确保目标元素具有 overflow: hidden 属性,防止内容溢出影响动画效果。
  • 若元素包含内边距或边框,需通过 box-sizing: border-box 保证高度计算准确。
  • 对于动态内容,收缩前需通过 scrollHeight 获取实际高度。

扩展方案:水平方向收缩

height 替换为 width 属性即可实现水平收缩效果,原理相同。

element.style.transition = 'width 0.3s';
element.style.width = '200px';

function collapseHorizontal() {
  element.style.width = '0';
}

标签: js
分享给朋友:

相关文章

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…