当前位置:首页 > JavaScript

js实现左右滑入

2026-02-03 07:32:07JavaScript

使用CSS和JavaScript实现左右滑入效果

通过CSS过渡和JavaScript事件监听实现元素左右滑入效果。以下是两种常见实现方式:

CSS关键帧动画结合类切换

<style>
.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); }
}
</style>

<script>
function toggleSlide(element, direction) {
  element.classList.remove('slide-in-left', 'slide-in-right');
  void element.offsetWidth; // 触发重绘
  element.classList.add(`slide-in-${direction}`);
}
</script>

使用CSS过渡和transform属性

function slideIn(element, direction) {
  element.style.transition = 'transform 0.3s ease-out';
  element.style.transform = `translateX(${direction === 'left' ? '-100%' : '100%'})`;

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

实现手势滑动检测

通过touch事件实现触摸滑动检测:

let startX, endX;
const threshold = 50; // 滑动阈值

element.addEventListener('touchstart', (e) => {
  startX = e.touches[0].clientX;
});

element.addEventListener('touchend', (e) => {
  endX = e.changedTouches[0].clientX;
  const diffX = endX - startX;

  if (Math.abs(diffX) > threshold) {
    if (diffX > 0) {
      // 向右滑动
      slideIn(element, 'right');
    } else {
      // 向左滑动
      slideIn(element, 'left');
    }
  }
});

使用第三方库实现

考虑使用Swiper.js等专业滑动库:

import Swiper from 'swiper';

new Swiper('.swiper-container', {
  effect: 'slide',
  loop: true,
  grabCursor: true,
  centeredSlides: true,
  slidesPerView: 'auto'
});

响应式滑动控制

添加窗口大小变化时的处理:

function handleResize() {
  if (window.innerWidth < 768) {
    // 移动端启用滑动
    element.classList.add('mobile-slide');
  } else {
    // 桌面端禁用滑动
    element.classList.remove('mobile-slide');
  }
}

window.addEventListener('resize', handleResize);
handleResize(); // 初始化执行

性能优化建议

使用will-change属性提升动画性能:

.sliding-element {
  will-change: transform;
}

对于复杂场景考虑使用requestAnimationFrame:

function animateSlide(timestamp) {
  // 动画逻辑
  requestAnimationFrame(animateSlide);
}
requestAnimationFrame(animateSlide);

js实现左右滑入

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

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…