【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码

这篇具有很好参考价值的文章主要介绍了【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果:
【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码,vue,vue.js,前端,javascript
这是在swiper官网上找的示例,swiper太强大了,有非常多不同的示例,有api,有教程,还可以下载示例代码。

但是第一次使用,研究这个缩略图的实现还是花了几个小时,好在实现了。

swiper官网请戳这里

安装

 npm i swiper

将swiper封装成组件可以复用,在components公共组件文件夹中新增swiper文件夹,新增index.vue
【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码,vue,vue.js,前端,javascript选择API文档,Thumbs(缩略图),可以查看缩略图的使用示例【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码,vue,vue.js,前端,javascript
ps:这里要补充下,示例其实挺清楚的,但是因为没有对应的html参考,所以我在这里多花了一点时间。swiper缩略图的实现其实是new Swiper了两个swiper实例,然后通过给主图所在的swiper实例的thumbs对象配置缩略图所在的swiper进行关联。
【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码,vue,vue.js,前端,javascript

如果想看完整的示例代码,需要下载它的示例,我下载的是第一个
【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码,vue,vue.js,前端,javascript

注意点:

1、加载插件,需要用到的文件有swiper-bundle.min.js和swiper-bundle.min.css文件
在public文件夹的index.html中引入

  <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css" /> 
 <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>

2、添加HTML内容。Swiper7的默认容器是’.swiper’,Swiper6之前是’.swiper-container’,我这里是’swiper‘,可以再加类名,但是默认类名一定是’swiper‘。
3、初始化Swiper var swiper = new Swiper(“#mySwiper”, {})
4、主图与缩略图关联,将点击缩略图的activeIndex传给主图的slideTo方法中

完整代码:
componeents/swiper/index

<template>
  <div class="container-box">
    <!-- 主图 -->
    <div class="swiper mySwiper2" id="mySwiper2">
      <div class="swiper-wrapper">
        <div
          class="swiper-slide"
          ref="mySwiper2"
          v-for="(item, index) in imgArr"
          :key="item.id"
        >
          <img :src="item.imgSrc" alt="" />
        </div>
      </div>
    </div>
    <!-- 缩略图 -->
    <div class="swiper mySwiper" id="mySwiper" ref="mySwiper">
      <div class="swiper-wrapper">
        <div
          class="swiper-slide"
          v-for="(item, index) in imgArr"
          :key="item.id"
        >
          <img :src="item.imgSrc" alt="" />
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import Swiper from "swiper";
import "swiper/css";

export default {
  name: "SwiperDemo",
  props: {
    imgArr: {
      type: Array,
      default: () => {
        return [];
      },
    },
  },
  data() {
    return {
    };
  },
  mounted() {
    this.init();
  },
  methods: {
    init() {
      //缩略图
      var swiper = new Swiper("#mySwiper", {
        spaceBetween: 10,
        slidesPerView: 4,
        watchSlidesProgress: true,
        on: {
          click: () => {
            // 缩略图实例
            let swiperThumbs = swiper;
            // 主图实例
            let swiperTop = swiper2;
            let activeIndex = swiperThumbs.clickedIndex;
            swiperTop.slideTo(activeIndex, 1000, false);
    
          },
        },
      });
      //   主图
      var swiper2 = new Swiper("#mySwiper2", {
        spaceBetween: 10,
        thumbs: {
          swiper: swiper,
        },
        slideThumbActiveClass: "my-slide-thumb-active",
        multipleActiveThumbs: true,
      });
    },
  },
};
</script>

<style lang="scss">
.container-box {
  height: 584px;
  width: 584px;
}
.swiper {
  width: 100%;
  height: 100%;
}

.swiper-slide {
  text-align: center;
  font-size: 18px;
  background: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
}

.swiper-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.swiper {
  width: 100%;
  height: 143px;
  margin-left: auto;
  margin-right: auto;
}

.swiper-slide {
  background-size: cover;
  background-position: center;
}

.mySwiper2 {
  height: 80%;
  width: 100%;
}

.mySwiper {
  height: 20%;
  box-sizing: border-box;
  padding: 10px 0;
}

.mySwiper .swiper-slide {
  width: 25%;
  height: 100%;
  opacity: 0.4;
}

.mySwiper .swiper-slide-thumb-active {
  opacity: 1;
}

.swiper-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
</style>

在页面中使用文章来源地址https://www.toymoban.com/news/detail-755207.html

//将图片数组传进去就行
<swiper :imgArr="imgArr"></swiper>

import swiper from "@/components/swiper";
 components: { swiper },


到了这里,关于【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Swiper在Vue2中的使用

    以swiper3为例 1. 下载swiper3  2. 在main.js中引入Vue-Awesome-Swiper  3.  在swiper.vue中  2.6.7版本 3.1.3版本 1. 下载swiper3  2.  在swiper.vue中 引入样式和组件 数据是写死的时候,能够loop:true是有效的; 数据是动态获取的loop:true就会失效。 解决办法: 加上v-if=\\\"list.length\\\"有效解决

    2024年02月11日
    浏览(28)
  • vue中swiper轮播图的使用

    说明:导入相应js引css import \\\"Swiper\\\" from \\\"swiper\\\" import \\\"swiper/css/swiper.css\\\"; import \\\"swiper/js/swiper\\\"; 说明:必要的结构使用;直接封装成一个组件  说明:(页面当中务必要有结构);注释已经写入代码。 第一:可以解决获取数据在Swiper实例之前;第二:可以解决v-for遍历完后在Swiper之

    2024年02月14日
    浏览(34)
  • vue3中使用swiper(9)完整版

    1)安装 swiper 插件; 方法一:npm install swiper 方法二:yarn add swiper 注意:如果npm 无法安装swiper时,使用yarn安装; 2)参数介绍 modules: loop: 是否循环播放 slides-per-view:控制一次显示几张轮播图 space-between: 每张轮播图之间的距离,该属性不可以和margin 属性同时使用; aut

    2024年02月09日
    浏览(23)
  • vue2项目之swiper.js 的使用

    swiper.js 的使用 官网 API(部署在 swiper 实例中):https://www.swiper.com.cn/api/index.html 官网轮播图(查看源代码):https://www.swiper.com.cn/demo/index.html 接下来介绍怎么在 vue2 里使用 swiper.js (vue2 使用 swiper5版本) 1、安装、引入css 2、在组件中使用:引入 js 引入 html 结构 html 结构:

    2024年02月05日
    浏览(36)
  • 移动端Swiper的一些尝试(中间完整,两边有内容,循环展示)

    【背景】最近公司的需求很多实现一个Swiper滑块,中间完整。两边展示一些内容(可能是固定的提示方案,也可能是前后上下一页的部分内容),然后还需要循环滚动,其中遇到了一些问题特此记录  【方案1】两边内容自绘制 因为设计稿两边是一个没有内容的边边,像一个

    2024年02月09日
    浏览(28)
  • 在vue中使用swiper轮播图(搭配watch和$nextTick())

    在组件中使用轮播图展示图片信息: 1.下载swiper,5版本为稳定版本 cnpm install swiper@5 2.在组件中引入swiper包和对应样式,若多组件使用swiper,可以把swiper引入到main.js入口文件中: import \\\'swiper/css/swiper.css\\\' //引入swiper样式 import Swiper from \\\'swiper\\\'; //引入swiper  3.在组件中使用: 由于我

    2024年02月13日
    浏览(38)
  • swiper vue修改数据,swiper不更新的问题

    swiper第一次初始化的时候正常,但是当我改变源数据时,要么就是不能把数据显示完,要么就是没有翻页。尝试过重新赋值swiper,但是依旧没有解决,后面找到下面的方案,测试能够解决我的问题。 解决方案,增加监听的配置。

    2024年02月13日
    浏览(25)
  • 解决vue中使用swiper 同时设置loop和slidesPerView时 点击事件失效问题

    在实际运用swiper轮播图插件时,有时会出现需要同时使用 loop: true 和 slidesPerView: ‘auto’ 两种属性的情况,前者代表开启循环模式,后者代表slider容器能够同时显示的slides数量(carousel模式)。 此时,会出现点击事件失效问题,主要原因是 loop: true 会产生复制的slide,而在“假的

    2024年02月07日
    浏览(32)
  • 【vue中修改swiper样式】

    原文:https://www.cnblogs.com/fightjianxian/p/11920913.html 问题:vue单文件组件中无法修改swiper样式。 解决 1. 单文件组件中:新增一个style 不加scoped 让它最终成为全局样式。只在其中操作swiper的样式。 2. 新建专用于操作swiper 样式的css, 在main.js中引入, 使用!import保证比swiper 预设样

    2024年02月08日
    浏览(24)
  • Vue2+swiper基础实现轮播图

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 swiper的基础使用 提示:以下是本篇文章正文内容,下面案例可供参考 Swiper中文网-轮播图幻灯片js插件,H5页面前端开发         注意:我们用的是vue2所以推荐大家下载swiper5版本 示例: 查看安装是否完成

    2024年01月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包