当前位置:首页 > JavaScript

js实现横向滚动

2026-03-01 02:32:05JavaScript

实现横向滚动的方法

使用CSS和JavaScript结合实现横向滚动效果,可以通过监听鼠标滚轮事件或触摸事件来控制元素的水平滚动。

CSS样式设置

确保容器具有横向滚动的能力,并隐藏默认的垂直滚动条。

.scroll-container {
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  white-space: nowrap;
  scroll-behavior: smooth;
}
.scroll-item {
  display: inline-block;
  width: 200px;
  height: 200px;
  margin-right: 10px;
}

JavaScript监听滚轮事件

通过监听wheel事件,阻止默认的垂直滚动行为,改为横向滚动。

const container = document.querySelector('.scroll-container');
container.addEventListener('wheel', (e) => {
  e.preventDefault();
  container.scrollLeft += e.deltaY;
});

触摸设备支持

对于触摸设备,可以监听touchstarttouchmovetouchend事件来实现横向滑动。

let startX;
let scrollLeft;

container.addEventListener('touchstart', (e) => {
  startX = e.touches[0].pageX;
  scrollLeft = container.scrollLeft;
});

container.addEventListener('touchmove', (e) => {
  e.preventDefault();
  const x = e.touches[0].pageX;
  const walk = (x - startX) * 2;
  container.scrollLeft = scrollLeft - walk;
});

平滑滚动动画

使用requestAnimationFrame实现平滑滚动效果,提升用户体验。

function smoothScroll(element, target, duration) {
  const start = element.scrollLeft;
  const change = target - start;
  let startTime = null;

  function animateScroll(currentTime) {
    if (!startTime) startTime = currentTime;
    const timeElapsed = currentTime - startTime;
    const progress = Math.min(timeElapsed / duration, 1);
    element.scrollLeft = start + change * progress;
    if (timeElapsed < duration) {
      requestAnimationFrame(animateScroll);
    }
  }
  requestAnimationFrame(animateScroll);
}

横向滚动按钮控制

添加左右按钮来控制横向滚动,适用于需要明确导航的场景。

const leftBtn = document.getElementById('left-btn');
const rightBtn = document.getElementById('right-btn');

leftBtn.addEventListener('click', () => {
  smoothScroll(container, container.scrollLeft - 200, 500);
});

rightBtn.addEventListener('click', () => {
  smoothScroll(container, container.scrollLeft + 200, 500);
});

响应式设计考虑

根据屏幕宽度动态调整滚动距离,确保在不同设备上都有良好的体验。

function getScrollDistance() {
  return window.innerWidth > 768 ? 300 : 150;
}

rightBtn.addEventListener('click', () => {
  smoothScroll(container, container.scrollLeft + getScrollDistance(), 500);
});

以上方法提供了完整的横向滚动实现方案,涵盖了鼠标、触摸和按钮控制等多种交互方式。

js实现横向滚动

标签: 横向js
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Ja…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…