当前位置:首页 > JavaScript

js实现slideup

2026-04-06 14:54:16JavaScript

JavaScript 实现 SlideUp 效果

在 JavaScript 中实现类似 jQuery 的 slideUp() 效果,可以通过操作 CSS 的 heighttransition 属性来完成。以下是几种实现方式:

使用 CSS Transition 和 JavaScript

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';
    element.style.removeProperty('height');
    element.style.removeProperty('transition');
  }, duration);
}

// 使用示例
const box = document.querySelector('.box');
slideUp(box, 500);

使用 requestAnimationFrame 实现更流畅的动画

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

  function animate(currentTime) {
    const elapsed = currentTime - startTime;
    const progress = Math.min(elapsed / duration, 1);
    const height = startHeight * (1 - progress);

    element.style.height = height + 'px';

    if (progress < 1) {
      requestAnimationFrame(animate);
    } else {
      element.style.display = 'none';
      element.style.removeProperty('height');
    }
  }

  element.style.overflow = 'hidden';
  requestAnimationFrame(animate);
}

使用 CSS 动画和类切换

.slide-up {
  animation: slideUp 0.3s ease forwards;
}

@keyframes slideUp {
  from { height: var(--element-height); }
  to { height: 0; }
}
function slideUp(element, duration = 300) {
  const height = element.offsetHeight;
  element.style.setProperty('--element-height', height + 'px');
  element.style.overflow = 'hidden';
  element.classList.add('slide-up');

  // 动画结束后隐藏元素
  setTimeout(() => {
    element.style.display = 'none';
    element.classList.remove('slide-up');
    element.style.removeProperty('--element-height');
  }, duration);
}

注意事项

  • 确保元素具有 overflow: hidden 属性,防止内容在高度变化时溢出
  • 如果元素有 padding 或 margin,需要考虑这些值对高度计算的影响
  • 对于更复杂的动画效果,可以考虑使用 Web Animations API
  • 现代项目中通常使用 CSS 框架或动画库来实现这类效果,如 Animate.css 或 GSAP

替代方案

对于现代前端项目,可以考虑以下替代方案:

js实现slideup

  • 使用 CSS 的 transform: scaleY() 实现类似效果
  • 使用 Web Components 封装可重用的滑动动画组件
  • 使用 Vue.js 的过渡系统或 React 的动画库实现组件级动画

标签: jsslideup
分享给朋友:

相关文章

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现乘法

js实现乘法

实现乘法运算的方法 在JavaScript中实现乘法运算可以通过多种方式完成,以下列举几种常见方法: 基础运算符 直接使用乘法运算符*是最简单的方式: let result = 3 * 5; //…