当前位置:首页 > JavaScript

js实现slideup

2026-04-06 14:54:16JavaScript

js实现slideup

JavaScript 实现 SlideUp 效果

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

js实现slideup

使用 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

替代方案

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

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

标签: jsslideup
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现选题

js实现选题

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

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…