当前位置:首页 > 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实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…