当前位置:首页 > JavaScript

js实现左右滑入

2026-03-16 08:35:10JavaScript

使用CSS动画实现滑入效果

通过CSS的@keyframestransform属性可以轻松实现滑入动画效果。定义一个滑入动画,通过JavaScript动态添加类名触发。

.slide-in-left {
  animation: slideInLeft 0.5s forwards;
}

.slide-in-right {
  animation: slideInRight 0.5s forwards;
}

@keyframes slideInLeft {
  from { transform: translateX(-100%); }
  to { transform: translateX(0); }
}

@keyframes slideInRight {
  from { transform: translateX(100%); }
  to { transform: translateX(0); }
}
// 触发左滑入
document.getElementById('element').classList.add('slide-in-left');

// 触发右滑入
document.getElementById('element').classList.add('slide-in-right');

使用GSAP动画库实现

GSAP提供更强大灵活的动画控制,适合复杂场景。

// 左滑入
gsap.from("#element", {duration: 0.5, x: "-100%"});

// 右滑入
gsap.from("#element", {duration: 0.5, x: "100%"});

原生JavaScript实现

通过requestAnimationFrame实现平滑动画效果,手动控制元素位置变化。

function slideIn(element, from, duration = 500) {
  const start = performance.now();
  const isLeft = from === 'left';
  const distance = isLeft ? -element.offsetWidth : element.offsetWidth;

  function animate(time) {
    const elapsed = time - start;
    const progress = Math.min(elapsed / duration, 1);
    const translateX = isLeft 
      ? distance + progress * -distance 
      : distance - progress * distance;

    element.style.transform = `translateX(${translateX}px)`;

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

  requestAnimationFrame(animate);
}

// 使用示例
const box = document.getElementById('box');
slideIn(box, 'left');  // 左滑入
slideIn(box, 'right'); // 右滑入

使用Web Animations API

现代浏览器支持的Web Animations API提供更高效的动画实现方式。

// 左滑入
document.getElementById('element').animate(
  [
    { transform: 'translateX(-100%)' },
    { transform: 'translateX(0)' }
  ],
  { duration: 500, fill: 'forwards' }
);

// 右滑入
document.getElementById('element').animate(
  [
    { transform: 'translateX(100%)' },
    { transform: 'translateX(0)' }
  ],
  { duration: 500, fill: 'forwards' }
);

响应式滑入效果

结合Intersection Observer API实现滚动到视口时触发滑入动画。

js实现左右滑入

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      entry.target.classList.add('slide-in-left');
      observer.unobserve(entry.target);
    }
  });
}, {threshold: 0.1});

document.querySelectorAll('.slide-element').forEach(el => {
  observer.observe(el);
});

以上方法可以根据项目需求选择适合的实现方式,CSS动画适合简单场景,GSAP适合复杂动画,原生JavaScript实现提供最大控制权,Web Animations API则提供了现代浏览器的性能优势。

标签: 滑入js
分享给朋友:

相关文章

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…