当前位置:首页 > JavaScript

js实现slideup

2026-03-14 21:10:46JavaScript

JavaScript 实现 SlideUp 效果

使用纯 JavaScript 实现类似 jQuery 的 slideUp() 效果,可以通过操作元素的 heighttransition 属性来完成。

js实现slideup

基础实现方案

function slideUp(element, duration = 300) {
  element.style.height = element.offsetHeight + 'px';
  element.style.transition = `height ${duration}ms ease`;
  element.offsetHeight; // 触发重绘
  element.style.height = '0';

  setTimeout(() => {
    element.style.display = 'none';
  }, duration);
}

完整实现方案(带回调)

function slideUp(element, duration = 300, callback) {
  element.style.height = element.offsetHeight + 'px';
  element.style.overflow = 'hidden';
  element.style.transition = `height ${duration}ms ease`;

  setTimeout(() => {
    element.style.height = '0';
  }, 10);

  setTimeout(() => {
    element.style.display = 'none';
    if (typeof callback === 'function') {
      callback();
    }
  }, duration + 10);
}

使用示例

const box = document.getElementById('myBox');
slideUp(box, 500, () => {
  console.log('Slide up completed');
});

CSS 准备

确保目标元素初始状态不是 display: none,否则无法获取高度:

js实现slideup

#myBox {
  display: block;
  overflow: hidden;
}

注意事项

  • 使用 offsetHeight 获取元素的完整高度
  • 通过 setTimeout 确保过渡动画能够正常触发
  • 过渡完成后设置 display: none 隐藏元素
  • 添加 overflow: hidden 防止内容在高度变化时溢出

兼容性考虑

如果需要支持旧版浏览器,可以添加厂商前缀:

element.style.transition = `height ${duration}ms ease`;
element.style.webkitTransition = `height ${duration}ms ease`;
element.style.mozTransition = `height ${duration}ms ease`;
element.style.oTransition = `height ${duration}ms ease`;

扩展功能

可以扩展函数以支持更多参数:

function slideUp(element, {
  duration = 300,
  easing = 'ease',
  callback = null
} = {}) {
  // 实现代码
}

标签: jsslideup
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js 实现链表

js 实现链表

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

js实现二叉树

js实现二叉树

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

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…