当前位置:首页 > JavaScript

js ul 左右滑动js实现

2026-02-02 12:21:18JavaScript

实现UL元素左右滑动的方法

使用CSS和JavaScript结合实现UL元素的左右滑动效果,可以通过以下方法完成。

方法一:使用CSS的overflow和scroll-behavior属性

<style>
  .scroll-container {
    width: 300px;
    overflow-x: auto;
    scroll-behavior: smooth;
    white-space: nowrap;
  }
  .scroll-container ul {
    display: inline-block;
    padding: 0;
    margin: 0;
  }
  .scroll-container li {
    display: inline-block;
    width: 100px;
    height: 100px;
    background: #ccc;
    margin-right: 10px;
  }
</style>

<div class="scroll-container">
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
  </ul>
</div>

这种方法利用了CSS的天然滚动特性,无需JavaScript即可实现基本滑动效果。

js ul 左右滑动js实现

方法二:使用JavaScript控制滚动

<style>
  .slider {
    width: 300px;
    overflow: hidden;
    position: relative;
  }
  .slider ul {
    display: flex;
    padding: 0;
    margin: 0;
    list-style: none;
    transition: transform 0.3s ease;
  }
  .slider li {
    flex: 0 0 100px;
    height: 100px;
    background: #ccc;
    margin-right: 10px;
  }
  .slider-controls {
    margin-top: 10px;
  }
</style>

<div class="slider">
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
  </ul>
</div>
<div class="slider-controls">
  <button class="prev">Previous</button>
  <button class="next">Next</button>
</div>

<script>
  const slider = document.querySelector('.slider ul');
  const prevBtn = document.querySelector('.prev');
  const nextBtn = document.querySelector('.next');
  let currentPosition = 0;
  const itemWidth = 110; // 100px width + 10px margin

  prevBtn.addEventListener('click', () => {
    currentPosition += itemWidth;
    if(currentPosition > 0) currentPosition = 0;
    slider.style.transform = `translateX(${currentPosition}px)`;
  });

  nextBtn.addEventListener('click', () => {
    const maxScroll = -(slider.scrollWidth - slider.parentElement.offsetWidth);
    currentPosition -= itemWidth;
    if(currentPosition < maxScroll) currentPosition = maxScroll;
    slider.style.transform = `translateX(${currentPosition}px)`;
  });
</script>

这种方法通过JavaScript动态计算滚动位置,使用CSS transform实现平滑滑动效果。

方法三:使用Intersection Observer API实现自动滑动

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if(entry.isIntersecting) {
      // 当元素进入视口时执行滑动动画
      entry.target.style.transform = 'translateX(0)';
    }
  });
}, {threshold: 0.1});

document.querySelectorAll('.slider li').forEach(item => {
  observer.observe(item);
});

这种方法适合在滚动容器中自动检测元素位置并触发滑动效果。

js ul 左右滑动js实现

方法四:触摸设备支持

const slider = document.querySelector('.slider ul');
let isDown = false;
let startX;
let scrollLeft;

slider.addEventListener('mousedown', (e) => {
  isDown = true;
  startX = e.pageX - slider.offsetLeft;
  scrollLeft = slider.scrollLeft;
});

slider.addEventListener('mouseleave', () => {
  isDown = false;
});

slider.addEventListener('mouseup', () => {
  isDown = false;
});

slider.addEventListener('mousemove', (e) => {
  if(!isDown) return;
  e.preventDefault();
  const x = e.pageX - slider.offsetLeft;
  const walk = (x - startX) * 2;
  slider.scrollLeft = scrollLeft - walk;
});

// 触摸事件支持
slider.addEventListener('touchstart', (e) => {
  isDown = true;
  startX = e.touches[0].pageX - slider.offsetLeft;
  scrollLeft = slider.scrollLeft;
});

slider.addEventListener('touchend', () => {
  isDown = false;
});

slider.addEventListener('touchmove', (e) => {
  if(!isDown) return;
  const x = e.touches[0].pageX - slider.offsetLeft;
  const walk = (x - startX) * 2;
  slider.scrollLeft = scrollLeft - walk;
});

这种方法添加了对触摸设备的支持,使滑动效果在移动设备上也能正常工作。

方法五:使用第三方库

对于更复杂的滑动需求,可以考虑使用成熟的第三方库如:

  • Swiper.js
  • Glide.js
  • Slick Carousel

这些库提供了丰富的配置选项和响应式设计,可以快速实现各种滑动效果。

标签: jsul
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback)…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js jquery

js jquery

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

js实现祖玛

js实现祖玛

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

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…