vue+swiper实现轮播效果 一个页面放多个轮播


多读多写多记录,多学多练多思考。----------- Grapefruit.Banuit Gang(香柚帮)


       vue页面实现用swiper的轮播,话不多说,直接开始贴代码:

              一 、首先要先安装swiper插件:

                       npm install swiper --save-dev (安装淘宝镜像的也可以cnpm更快一点)

              二 、main.js引入swiper样式

                        import 'swiper/dist/css/swiper.css';

              三 、再页面中引入swiper

                       <script>

                              import Swiper from "swiper";

                       </script>

               到此已经可以开始直接使用了

html:

<template>
    <div class="hello">
        <div class="swiper-container" @mouseenter="comtainer_enter" @mouseleave="comtainer_leave"><!-- 这边的两个方法是鼠标移入和移出 -->
            <div class="swiper-wrapper">
                <div class="swiper-slide" v-for="(item,index) in arr" :key="index">
                    <img :src="item.img_url" alt="">
                </div>
            </div>
            <!-- 如果需要导航按钮 -->
            <div class="swiper-button-prev"></div>
            <div class="swiper-button-next"></div>
            <!-- 指示点 -->
            <div class="swiper-pagination"></div><!--分页器。如果放置在swiper-container外面,需要自定义样式。-->
        </div>
    </div>
</template>

js: 

<script>

import Swiper from "swiper";//引入swiper
import { setTimeout } from 'timers';
export default {
    name: "HelloWorld",
    data() {
        return {
            swiper:'',
            index:'',
            arr:[
                {img_url:require('@/assets/a.png')},
                {img_url:require('@/assets/b.png')},
                {img_url:require('@/assets/c.png')},
                {img_url:require('@/assets/d.png')},
                {img_url:require('@/assets/e.png')}
            ]
        };
    },
    mounted() {
        this.swiper = new Swiper(".swiper-container", {
            autoplay: {//自动轮播
                disableOnInteraction: false,//当设置为false时,用户操作之后(swipes,arrow以及pagination 点击)autoplay不会被禁掉,用户操作之后每次都会重新启动autoplay。
            },
            pagination: {//指示点
                el: '.swiper-pagination',
            },
            grabCursor : true,//鼠标覆盖Swiper时指针会变成手掌形状,拖动时指针会变成抓手形状
            loop: true,
            // 如果需要前进后退按钮
            navigation: {
                nextEl: '.swiper-button-next',
                prevEl: '.swiper-button-prev',
            },
        });
    },
};
</script>

注:柚子找了半天也没有找到有直接鼠标悬停的方法的,所以只好手写了一个,大家可以看一下,也可能是我看的少,如果有哪位大佬有更好的方法的话,欢迎来交流,谢谢!!!如果需要鼠标移入的时候做一些操作,比如鼠标移入需要暂停轮播,移出之后继续轮播的就需要在js里的methods里面写上下面的两个方法,方法在上面html里面已经定义过了,如果不需要可以删掉:

    methods:{
        /*鼠标移入停止轮播,5秒后继续轮播,鼠标离开 继续轮播*/
        comtainer_enter(){
            this.swiper.autoplay.stop();
            setTimeout(this.comtainer_leave,2000 );//两秒加上默认的三秒
        },
        comtainer_leave () {
            this.swiper.autoplay.start();
        }
    }

style:

<style scoped>
    .swiper-container {
        width: 500px;
        height: 300px;
        margin: 20px auto;
    }
</style>

上面的是页面中有单个轮播的,如果需要多个轮播的话,只需要定义不通的类就可以了,下面直接贴出全部的代码:

<template>
  <div class="hello">
    <!-- 第一个轮播 -->
    <div
      class="banner1 swiper-container"
      @mouseenter="comtainer_enter1"
      @mouseleave="comtainer_leave1"
    >
      <div class="swiper-wrapper">
        <div class="swiper-slide" v-for="(item,index) in arr1" :key="index">
          <!-- <img src="../assets/logo.png" alt=""> -->
          <img :src="item.img_url" alt>
        </div>
      </div>
      <!-- 如果需要导航按钮 -->
      <div class="swiper-button-prev"></div>
      <div class="swiper-button-next"></div>
      <!-- 指示点 -->
      <div class="swiper-pagination"></div>
      <!--分页器。如果放置在swiper-container外面,需要自定义样式。-->
    </div>

    <!-- 第二个轮播 -->
    <div
      class="banner2 swiper-container"
      @mouseenter="comtainer_enter2"
      @mouseleave="comtainer_leave2"
    >
      <div class="swiper-wrapper">
        <div class="swiper-slide" v-for="(item,index) in arr2" :key="index">
          <!-- <img src="../assets/logo.png" alt=""> -->
          <img :src="item.img_url" alt>
        </div>
      </div>
      <!-- 如果需要导航按钮 -->
      <div class="swiper-button-prev"></div>
      <div class="swiper-button-next"></div>
      <!-- 指示点 -->
      <div class="swiper-pagination"></div>
      <!--分页器。如果放置在swiper-container外面,需要自定义样式。-->
    </div>
  </div>
</template>

<script>
import Swiper from "swiper";
import { setTimeout } from "timers";
export default {
  name: "HelloWorld",
  data() {
    return {
      swiper1: "",
      swiper2: "",
      arr1: [
        { img_url: require("@/assets/a.png") },
        { img_url: require("@/assets/b.png") },
        { img_url: require("@/assets/c.png") },
        { img_url: require("@/assets/d.png") },
        { img_url: require("@/assets/e.png") }
      ],
      arr2: [
        { img_url: require("@/assets/a.png") },
        { img_url: require("@/assets/b.png") },
        { img_url: require("@/assets/c.png") },
        { img_url: require("@/assets/d.png") },
        { img_url: require("@/assets/e.png") }
      ]
    };
  },
  mounted() {
    this.swiper1 = new Swiper(".banner1", {
      autoplay: {
        //自动轮播
        disableOnInteraction: false //当设置为false时,用户操作之后(swipes,arrow以及pagination 点击)autoplay不会被禁掉,用户操作之后每次都会重新启动autoplay。
      },
      pagination: {
        //指示点
        el: ".swiper-pagination",
        clickable :true //为true时点击指示点会切换slide
      },
      grabCursor: true, //鼠标覆盖Swiper时指针会变成手掌形状,拖动时指针会变成抓手形状
      loop: true,
      // 如果需要前进后退按钮
      navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
      }
    });

    this.swiper2 = new Swiper(".banner2", {
      autoplay: {
        //自动轮播
        disableOnInteraction: false //当设置为false时,用户操作之后(swipes,arrow以及pagination 点击)autoplay不会被禁掉,用户操作之后每次都会重新启动autoplay。
      },
      pagination: {
        //指示点
        el: ".swiper-pagination",
        clickable :true //为true时点击指示点会切换slide
      },
      grabCursor: true, //鼠标覆盖Swiper时指针会变成手掌形状,拖动时指针会变成抓手形状
      loop: true,
      // 如果需要前进后退按钮
      navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
      }
    });
  },
  methods: {
    /*鼠标移入停止轮播,5秒后继续轮播,鼠标离开 继续轮播*/
    comtainer_enter1() {
      this.swiper1.autoplay.stop();
      setTimeout(this.comtainer_leave1, 2000); //两秒加上默认的三秒
    },
    comtainer_leave1() {
      this.swiper1.autoplay.start();
    },
    comtainer_enter2() {
      this.swiper2.autoplay.stop();
      setTimeout(this.comtainer_leave2, 2000); //两秒加上默认的三秒
    },
    comtainer_leave2() {
      this.swiper2.autoplay.start();
    }
  }
};
</script>
<style scoped>
.swiper-container {
  width: 500px;
  height: 300px;
  margin: 20px auto;
}
</style>

swiper中文网:  https://www.swiper.com.cn/      还有需要的朋友可以多看一下api文档

ok,到此结束,就是这么简单,希望能帮助一些朋友。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Grapefruit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值