当前位置:首页 > 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:

js实现左右滑入

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

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

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现类

js实现类

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

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…