当前位置:首页 > JavaScript

js实现图片滑动

2026-01-30 10:06:59JavaScript

图片滑动实现方法

使用CSS和JavaScript实现横向滑动

通过CSS设置容器为横向滚动,JavaScript监听触摸事件实现滑动效果。

js实现图片滑动

<div class="slider-container">
  <div class="slider-track">
    <img src="image1.jpg">
    <img src="image2.jpg">
    <img src="image3.jpg">
  </div>
</div>
.slider-container {
  width: 100%;
  overflow-x: scroll;
  white-space: nowrap;
  scroll-snap-type: x mandatory;
}

.slider-track {
  display: inline-block;
}

.slider-track img {
  width: 300px;
  height: 200px;
  object-fit: cover;
  scroll-snap-align: start;
  margin-right: 10px;
}
const slider = document.querySelector('.slider-container');
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;
});

使用Swiper.js库实现

Swiper.js是专业的滑动库,提供丰富的配置选项。

js实现图片滑动

<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide"><img src="image1.jpg"></div>
    <div class="swiper-slide"><img src="image2.jpg"></div>
    <div class="swiper-slide"><img src="image3.jpg"></div>
  </div>
  <div class="swiper-pagination"></div>
  <div class="swiper-button-prev"></div>
  <div class="swiper-button-next"></div>
</div>
import Swiper from 'https://unpkg.com/swiper/swiper-bundle.esm.browser.min.js'

const swiper = new Swiper('.swiper', {
  loop: true,
  pagination: {
    el: '.swiper-pagination',
    clickable: true,
  },
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
});

使用CSS Scroll Snap实现纯CSS方案

现代浏览器支持的原生滑动方案,无需JavaScript。

<div class="gallery">
  <img src="image1.jpg">
  <img src="image2.jpg">
  <img src="image3.jpg">
</div>
.gallery {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc(100% - 1rem);
  gap: 1rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-padding: 1rem;
}

.gallery img {
  scroll-snap-align: start;
  width: 100%;
  height: 300px;
  object-fit: cover;
}

响应式滑动实现

结合媒体查询实现不同屏幕尺寸下的滑动效果。

@media (max-width: 768px) {
  .slider-container {
    -webkit-overflow-scrolling: touch;
  }

  .slider-track img {
    width: 80vw;
  }
}
window.addEventListener('resize', () => {
  const windowWidth = window.innerWidth;
  const images = document.querySelectorAll('.slider-track img');

  images.forEach(img => {
    img.style.width = windowWidth < 768 ? '80vw' : '300px';
  });
});

标签: 图片js
分享给朋友:

相关文章

vue实现图片查看

vue实现图片查看

Vue 实现图片查看功能 在 Vue 中实现图片查看功能,可以通过原生实现或使用第三方库。以下是几种常见的方法: 原生实现方式 使用 Vue 的指令和事件绑定实现基础的图片查看功能。 <te…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现选题

js实现选题

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

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…