vue2项目之swiper.js 的使用

 更新时间:2023年12月10日 08:47:32   投稿:wdc  
这篇文章主要介绍了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

npm i swiper@5
// main.js

// 引入 swiper.css
import "swiper/css/swiper.css";

2、在组件中使用:引入 js 引入 html 结构

import Swiper from 'swiper'

html 结构:

1、开始先放个图片占个位置确定布局,再把图片换成下面的结构

2、注意最外层的 class="swiper-container" 必须!且后面的 swiper 实例也要改!

<div class="swiper-container">
    <div class="swiper-wrapper">
        <div class="swiper-slide" v-for="(img,index) in bannerList" :key="index">
            <img :src="img.imgUrl" />
        </div>
    </div>

    <div class="swiper-button-next"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-pagination"></div>
</div>

3、最后关键是创建 swiper 实例! 有两种方式

方式一:

如果图片已经固定(或图片url数组已经确定 )那么直接在 mounted 函数中创建

mounted() {
    // 下面是普通swiper模板
    new Swiper(".swiper-container", {
        loop: true,
        mousewheel: true,
        keyboard: true,

        navigation: {
            nextEl: ".swiper-button-next",
            prevEl: ".swiper-button-prev",
        },

        pagination: {
            el: ".swiper-pagination",
        },                    
    });
}

方式二:

用到 v-for 遍历图片url数组(并且该数组是在本组件中通过发请求获取的),那么就要用到 watch + $nextTick

5.11.1 watch+$nextTick

当一个数据发生改变时,此时 DOM 还没有更新,所以在监视属性中的 handle 函数中 写一个 $nextTick 可以实现 数据发生改变且 DOM 更新后执行代码

回到 swiper ,我们在这个时候 创建 swiper 实例

bannerList:图片url数组

watch: {
    bannerList: {
        handler() {
            this.$nextTick(function() {
                new Swiper(".swiper-container", {
                    loop: true,
                    mousewheel: true,
                    keyboard: true,

                    navigation: {
                        nextEl: ".swiper-button-next",
                        prevEl: ".swiper-button-prev",
                    },

                    pagination: {
                        el: ".swiper-pagination",
                    },                    
                });
            })
        }
    }
},

5.11.2 修改分页器样式

1、添加属性

pagination: {
    el: ".swiper-pagination",
    clickable: true,
    bulletClass : 'my-bullet', // 这个
    bulletActiveClass: 'my-bullet-active',
},

2、在组件里面写 css (不要加 scope)

// 分页器样式
.my-bullet{
    position: relative;
    display: inline-block;
    width: 15px;
    height: 15px;
    border-radius: 100%;
    background: black;
    opacity: 0.5;
    margin: 0 4px;
}

// 选中的分页器样式(会继承上面那个样式)
.my-bullet-active {
    background: #ff6600;
    opacity: 1;
}

5.11.3 封装轮播图组件

当一个图片需要变为轮播图时,我们把 img 标签 换成 Carousel 组件即可!

1、Carousel 组件需要一个参数:图片 url 数组

imgList = [
    {imgUrl: '...'}
    {imgUrl: '...'}
]

2、将 Carousel 组件注册为全局组件

// 在 components 中新建 Carousel 文件夹

// main.js
import Carousel from '@/components/Carousel'
Vue.component(Carousel.name,Carousel)

3、Carousel/index.vue (直接照搬即可 样式可自行修改)

<template>
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide" v-for="(img,index) in imgList" :key="index">
                <img :src="img.imgUrl" />
            </div>
        </div>

        <div class="swiper-button-next"></div>
        <div class="swiper-button-prev"></div>
        <div class="swiper-pagination"></div>
    </div>
</template>

<script>
    import Swiper from 'swiper'

    export default {
        name: 'Carousel',

        props: ['imgList'],

        watch: {
            imgList: {
                immediate: true,
                handler() {
                    this.$nextTick(function() {
                        new Swiper(".swiper-container", {
                            loop: true,

                            pagination: {
                                el: ".swiper-pagination",
                                clickable: true,
                                bulletClass : 'my-bullet',
                                bulletActiveClass: 'my-bullet-active',

                            },
                            
                            navigation: {
                                nextEl: ".swiper-button-next",
                                prevEl: ".swiper-button-prev",
                            },
                        });
                    })
                }
            }
        }
    }
</script>

<style lang="less">
    // 分页器样式
    .my-bullet{
        position: relative;
        display: inline-block;
        width: 15px;
        height: 15px;
        border-radius: 100%;
        background: black;
        opacity: 0.5;
        margin: 0 4px;
    }

    // 选中的分页器样式(会继承上面那个样式)
    .my-bullet-active {
        background: #ff6600;
        opacity: 1;
    }
</style>

4、组件中使用(传入图片 url 数组即可)

<Carousel :imgList="bannerList" />

5.11.4 swiper 属性

1、 <div class="swiper-container">:为轮播图大盒子

2、<div class="swiper-slide">:为装图片的盒子,可以指定大小,那么图片直接适配。或者不指定大小,则需要指定图片大小。

3、slidesPerView:设置 轮播图大盒子 显示 轮播图 张数,轮播图 会被修改宽度适配 轮播图大盒子

4、slidesPerGroup:每次切换 轮播图 张数

5、给 <div class="swiper-slide"> 添加类名 swiper-no-swiping :禁止滑动

以上就是vue2项目之swiper.js 的使用的详细内容,更多关于vue2项目之swiper.js 的使用的资料请关注脚本之家其它相关文章!

相关文章

  • javaScript与vue获取元素的方法代码示例

    javaScript与vue获取元素的方法代码示例

    在开发中我们可能会遇到这样的问题,文本框聚焦、元素点击等,所以下面这篇文章主要给大家介绍了关于javaScript与vue获取元素的相关资料,需要的朋友可以参考下
    2023-10-10
  • vue根据进入的路由进行原路返回的方法

    vue根据进入的路由进行原路返回的方法

    今天小编就为大家分享一篇vue根据进入的路由进行原路返回的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue利用canvas实现移动端手写板的方法

    Vue利用canvas实现移动端手写板的方法

    本篇文章主要介绍了Vue利用canvas实现移动端手写板的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Vue之props 配置详解

    Vue之props 配置详解

    这篇文章主要为大家介绍了Vue之props 配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助
    2021-11-11
  • nodejs读取并去重excel文件

    nodejs读取并去重excel文件

    给大家带来一篇关于用nodejs实现excel文件的读取并去重的功能,有兴趣的朋友参考学习下。
    2018-04-04
  • 解决vue app.js/vender.js过大优化启动页

    解决vue app.js/vender.js过大优化启动页

    这篇文章主要为大家介绍了解决vue app.js/vender.js过大优化启动页过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 解决axios发送post请求返回400状态码的问题

    解决axios发送post请求返回400状态码的问题

    今天小编就为大家分享一篇解决axios发送post请求返回400状态码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 一文带你从零开始搭建vue3项目

    一文带你从零开始搭建vue3项目

    使用VUE3开发很久了,但一直没进行总结和记录,下面这篇文章主要给大家介绍了关于从零开始搭建vue3项目的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Vue使用虚拟dom进行渲染view的方法

    Vue使用虚拟dom进行渲染view的方法

    这篇文章主要介绍了Vue使用虚拟dom进行渲染view的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • vue项目实现页面跳转的方法

    vue项目实现页面跳转的方法

    这篇文章主要给大家分享的是vue项目实现页面跳转的方法,vue-router是前端开发中用来实现路由页面跳转的一个模块。下面小编将带来如何在已经创建好的vue-router项目基础下实现页面跳转,需要的朋友可以参考一下
    2021-11-11

最新评论