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

js实现左右滑入

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等专业滑动库:

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实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现授权

js实现授权

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

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…