Vue2 中使用Swiper构建中间大两边小轮播效果

简介: 【10月更文挑战第8天】

Swiper是一个功能丰富的“滑动特效”插件:
常用的tab切换,banner切换等等,包含各种切换特效,看Demo就非常炫酷。同时,也提供了主流的框架组件版本。然而,最新版的Vue组件只支持在Vue3中使用。查找资料后实践,记录一个Vue2中的使用方式。
Swiper的官网介绍也比较清楚,英文官网中是最新的版本的内容,没有找到旧版的文档内容,中文官网可以看到旧版的文档。

一、Swiper 在Vue2 中的使用方法
最新的Swiper只支持Vue3,所以在 Vue2上要安装旧版本

第一步:npm 安装正确的版本

npm i swiper@6.8.4 vue-awesome-swiper@4.1.1

第二步:在对应的Vue页面中引用库
这里其实是使用vue-awesome-swiper库对swiper的封装


import {
    Swiper, SwiperSlide } from 'vue-awesome-swiper'
import 'swiper/css/swiper.css'

// 添加组件
components: {
   
    Swiper,
    SwiperSlide,
},

第三步:在页面上使用组件,并对组件添加设置,swiperOption属性设置见后文

<swiper :options="swiperOption">
    <swiper-slide>Slide 1</swiper-slide>
    <swiper-slide>Slide 2</swiper-slide>
    <swiper-slide>Slide 3</swiper-slide>
    <swiper-slide>Slide 4</swiper-slide>
    <swiper-slide>Slide 5</swiper-slide>
    <swiper-slide>Slide 6</swiper-slide>
    <swiper-slide>Slide 7</swiper-slide>
</swiper>

二、Swiper 相关参数和事件(options的配置)
相关参数和事件参考中文网站中旧版api。该文档是Swiper 4.X - 7.X 的api ,但是这里是swiper@6.8.4版本,大部分api是通用的,7上只是略有区别,看文档时注意区分即可。

注意:
该组件事件的监听有一些坑,通过监听点击某个slider事件进行说明。

监听事件可以直接写在组件的标签中,如, 这样在test方法中就可以收到点击回调。然而,当我们想获取点击某个slide时,却发现在该方法中无法获取到swiper对象,进而无法使用swiper对象的activeIndex属性获取到当前点击的slide位置。

若要想获取该swiper实例,则需要将监听配置到on参数中:

swiperOption: {
   
    on: {
   
        // 该方法中的this都指代swiper本身
        tap: function () {
   
            console.log('点击的位置', this.activeIndex);
        }
    }

}
注意这里也不能写成箭头函数,会更改this的指向。

三、简单的例子:中间大两边小的轮播

初始加载
可设置loop属性让初始加载即两边都有slide,详见下方代码loop属性注释

滚动后
完整代码如下,主要是配置相关的样式,具体参数含义注释在代码中了:

<template>
    <div>
        <div class="swiper">
            <swiper :options="swiperOption">
                <swiper-slide>Slide 1</swiper-slide>
                <swiper-slide>Slide 2</swiper-slide>
                <swiper-slide>Slide 3</swiper-slide>
                <swiper-slide>Slide 4</swiper-slide>
                <swiper-slide>Slide 5</swiper-slide>
                <swiper-slide>Slide 6</swiper-slide>
                <swiper-slide>Slide 7</swiper-slide>
            </swiper>
        </div>
    </div>

</template>

<script>

import {
    Swiper, SwiperSlide } from 'vue-awesome-swiper'
import 'swiper/css/swiper.css'

export default {
   

    name: 'Main',
    components: {
   
        Swiper,
        SwiperSlide,
    },
    data() {
   
        return {
   
            swiperOption: {
   
                spaceBetween: 30,
                slidesPerView: 5, // 一屏显示的slide个数
                centeredSlides: true,// 居中的slide是否标记为active,默认是最左active,这样样式即可生效
                slideToClickedSlide: true,// 点击的slide会居中
                // loop: true,// 循环播放, 可有无限滚动效果,初始加载即是滚动后的效果
                on: {
   
                    // 该方法中的this都指代swiper本身
                    tap: function () {
   
                        console.log('点击的位置', this.activeIndex);
                    }
                }
            },
        }
    },
    mounted() {
   

    },
    methods: {
   
        test(e) {
   
            // 默认会$event对象
            console.log(11,e);
        }
    },
}
</script>

<style lang="less" scoped>
.swiper {
   
    width: 100%;
    height: 50px;
    bottom: 10px;
    position: absolute;
    background-color: darkred;
}

.swiper-container {
   
    width: 100%;
    height: 100%;
}

.swiper-slide {
   
    text-align: center;
    font-size: 18px;
    background: #fff;

    /* Center slide text vertically */
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    -webkit-justify-content: center;
    justify-content: center;
    -webkit-box-align: center;
    -ms-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
    transition: 300ms;
    transform: scale(0.5);
}

.swiper-slide-active,
.swiper-slide-duplicate-active {
   
    background-color: aqua;
    transform: scale(1);
}
</style>
目录
相关文章
|
7月前
|
JavaScript
vue 实现表格循环滚动 vue-seamless-scroll插件的安装与使用
vue 实现表格循环滚动 vue-seamless-scroll插件的安装与使用
566 0
|
7月前
|
JavaScript
【vue】 vue-seamless-scroll 无缝滚动依赖
【vue】 vue-seamless-scroll 无缝滚动依赖
630 1
|
4月前
|
移动开发 资源调度 JavaScript
Vue2使用触摸滑动插件(Swiper)
这篇文章介绍了在Vue 3框架中如何使用Swiper插件来创建不同类型的触摸滑动组件,包括轮播图、淡入淡出效果和走马灯效果,并提供了详细的配置选项和使用示例。
413 1
Vue2使用触摸滑动插件(Swiper)
|
4月前
|
JavaScript API UED
Vue3使用触摸滑动插件(Swiper)
本文介绍如何在Vue2项目中使用Swiper插件实现触摸滑动功能,并封装了两种轮播图展示形式:首页轮播图(`type: banner`)和走马灯轮播图(`type: carousel`),以及信息展播模式(`type: broadcast`)。支持自定义轮播图片、区域尺寸、动画效果等属性。通过示例代码展示了不同切换动画及自定义效果,并提供了在线预览。适用于多种应用场景,提升用户体验。
Vue3使用触摸滑动插件(Swiper)
|
4月前
|
JavaScript
Vue2走马灯扩展版(Carousel)
这篇文章介绍了如何在Vue 3框架中创建一个可自定义的走马灯(Carousel)组件,支持自动播放、导航、分页和响应用户交互等功能。
199 0
Vue2走马灯扩展版(Carousel)
|
4月前
|
JavaScript
Vue多图组合走马灯
这篇文章介绍了如何在Vue框架中创建一个多图组合的走马灯组件,允许自定义滑动间隔和图片区域宽度,以展示多个图片。
Vue多图组合走马灯
|
4月前
ElementUI——elementui2.0表格支持render渲染
ElementUI——elementui2.0表格支持render渲染
169 0
|
7月前
|
JavaScript 前端开发 UED
教你用vue自定义指令做一个组件的遮罩层loading效果
教你用vue自定义指令做一个组件的遮罩层loading效果
596 0
|
7月前
|
JavaScript 前端开发
vue中如何实现多个元素或组件的过渡动画?
vue中如何实现多个元素或组件的过渡动画?
149 0
|
JavaScript 前端开发
Vue中动态树形菜单,以及
Vue中动态树形菜单,以及

热门文章

最新文章