当前位置:首页 > VUE

vue实现京东轮播图

2026-02-21 20:45:05VUE

Vue 实现京东轮播图

京东轮播图通常包含自动轮播、手动滑动、指示器导航等功能。以下是基于 Vue 3 的实现方案,结合 swiper 库(业界常用轮播组件)完成。

安装 Swiper 依赖

确保项目已安装 swipervue-awesome-swiper(Vue 封装版本):

npm install swiper vue-awesome-swiper

基础轮播图实现

创建一个基础轮播组件,支持自动播放和指示器:

<template>
  <swiper
    :modules="[Autoplay, Pagination]"
    :slides-per-view="1"
    :space-between="20"
    :autoplay="{ delay: 3000 }"
    :pagination="{ clickable: true }"
    @swiper="onSwiper"
  >
    <swiper-slide v-for="(slide, index) in slides" :key="index">
      <img :src="slide.image" class="w-full h-auto" />
    </swiper-slide>
  </swiper>
</template>

<script setup>
import { ref } from 'vue';
import { Autoplay, Pagination } from 'swiper/modules';
import { Swiper, SwiperSlide } from 'swiper/vue';
import 'swiper/css';
import 'swiper/css/pagination';

const slides = ref([
  { image: 'https://via.placeholder.com/800x400?text=Slide1' },
  { image: 'https://via.placeholder.com/800x400?text=Slide2' },
  { image: 'https://via.placeholder.com/800x400?text=Slide3' },
]);

const onSwiper = (swiper) => {
  console.log('Swiper initialized:', swiper);
};
</script>

添加手动滑动效果

通过 Navigation 模块添加左右箭头按钮:

<template>
  <swiper
    :modules="[Autoplay, Pagination, Navigation]"
    :navigation="{ nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }"
  >
    <swiper-slide v-for="(slide, index) in slides" :key="index">
      <img :src="slide.image" />
    </swiper-slide>
    <div class="swiper-button-next"></div>
    <div class="swiper-button-prev"></div>
  </swiper>
</template>

<script setup>
import { Navigation } from 'swiper/modules';
import 'swiper/css/navigation';
</script>

响应式适配

根据屏幕宽度调整显示数量(如京东首页的多图轮播):

const breakpoints = {
  640: { slidesPerView: 2 },
  1024: { slidesPerView: 3 },
};

样式优化

覆盖默认样式以匹配京东风格:

.swiper-pagination-bullet-active {
  background-color: #f10215; /* 京东红 */
}
.swiper-button-next, .swiper-button-prev {
  color: #f10215;
}

完整示例代码

<template>
  <div class="relative">
    <swiper
      :modules="[Autoplay, Pagination, Navigation]"
      :slides-per-view="1"
      :space-between="20"
      :autoplay="{ delay: 3000, disableOnInteraction: false }"
      :pagination="{ clickable: true }"
      :navigation="{ nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }"
      :breakpoints="breakpoints"
    >
      <swiper-slide v-for="(slide, index) in slides" :key="index">
        <img :src="slide.image" class="w-full" />
      </swiper-slide>
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
    </swiper>
  </div>
</template>

<script setup>
import { ref } from 'vue';
import { Autoplay, Pagination, Navigation } from 'swiper/modules';
import { Swiper, SwiperSlide } from 'swiper/vue';
import 'swiper/css';
import 'swiper/css/pagination';
import 'swiper/css/navigation';

const slides = ref([
  { image: 'https://via.placeholder.com/1200x400?text=JD+Slide1' },
  { image: 'https://via.placeholder.com/1200x400?text=JD+Slide2' },
  { image: 'https://via.placeholder.com/1200x400?text=JD+Slide3' },
]);

const breakpoints = {
  768: { slidesPerView: 1.5 },
  1024: { slidesPerView: 2 },
};
</script>

<style scoped>
.swiper-pagination-bullet-active {
  background: #f10215;
}
.swiper-button-next:after, .swiper-button-prev:after {
  font-size: 24px;
  color: #f10215;
}
</style>

关键点说明

  • 自动播放:通过 autoplay 参数控制间隔时间。
  • 无缝循环:添加 loop: true 参数可实现无限循环。
  • 触摸交互:默认支持手指滑动切换。
  • 性能优化:懒加载图片可使用 lazy: true 配置。

vue实现京东轮播图

标签: 京东vue
分享给朋友:

相关文章

vue查看更多怎么实现

vue查看更多怎么实现

实现 Vue 的“查看更多”功能 数据截取与显示控制 通过 v-if 或 v-show 控制内容的显示与隐藏。初始状态下只显示部分内容,点击“查看更多”后展开完整内容。 <template&…

vue路由实现内部切换

vue路由实现内部切换

Vue 路由实现内部切换的方法 Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)的页面切换。以下是几种常见的内部路由切换方式: 使用 <router-li…

vue实现走势图

vue实现走势图

Vue 实现走势图的方法 使用 ECharts 库 ECharts 是一个强大的数据可视化库,支持多种图表类型,包括走势图(折线图)。在 Vue 项目中可以通过 vue-echarts 封装库或直接使…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: &l…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,…