当前位置:首页 > VUE

vue实现京东轮播图

2026-02-21 20:45:05VUE

Vue 实现京东轮播图

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

安装 Swiper 依赖

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

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 模块添加左右箭头按钮:

vue实现京东轮播图

<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中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const BaseCom…

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

vue监听实现

vue监听实现

Vue 监听实现方法 在 Vue 中可以通过多种方式实现监听数据变化或事件触发,以下是常见的几种方法: 使用 watch 选项 watch 是 Vue 提供的核心功能之一,用于观察和响应 Vue 实…

vue实现增加

vue实现增加

实现 Vue 中的新增功能 在 Vue 中实现新增功能通常涉及数据绑定、表单处理和状态管理。以下是几种常见的实现方式: 数据绑定与列表渲染 通过 v-model 绑定表单输入,使用数组的 push…

vue实现github

vue实现github

Vue 实现 GitHub 相关功能 创建 GitHub API 请求 在 Vue 项目中,可以使用 axios 或 fetch 与 GitHub API 进行交互。需要在 GitHub 上创建个人访…

自己实现vue

自己实现vue

实现简易版 Vue.js 核心功能 要实现一个简易版 Vue.js,需要理解其核心功能:数据响应式、模板编译、依赖收集和虚拟 DOM。以下分模块实现关键功能。 数据响应式(Reactivity) 通…