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>
目录
相关文章
|
移动开发 资源调度 JavaScript
Vue2使用触摸滑动插件(Swiper)
这篇文章介绍了在Vue 3框架中如何使用Swiper插件来创建不同类型的触摸滑动组件,包括轮播图、淡入淡出效果和走马灯效果,并提供了详细的配置选项和使用示例。
1275 1
Vue2使用触摸滑动插件(Swiper)
|
前端开发 JavaScript
uniapp实现轮播swiper中间大两头小
uniapp实现轮播swiper中间大两头小
449 0
uniapp-picker选择省市区效果demo(整理)
uniapp-picker选择省市区效果demo(整理)
|
移动开发 小程序
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
|
小程序
微信小程序:计算属性和监听属性miniprogram-computed
微信小程序:计算属性和监听属性miniprogram-computed
1094 0
Vue2竖向文字滚动
这是一个基于Vue3的文字滚动组件(TextScroll),支持自定义滚动文字数组、滚动间隔时间、展示宽度及高度等属性。该组件通过VerticalTextSlider.vue实现,提供了平滑过渡动画,并允许鼠标悬停时暂停滚动。适用于多种场景下的文字轮播需求。
346 0
Vue2竖向文字滚动
|
11月前
|
JavaScript 前端开发 UED
PDF在线预览实现:如何使用vue-pdf-embed实现前端PDF在线阅读
本文详细介绍了如何在Vue项目中使用vue-pdf-embed实现PDF文件的在线展示。从项目初始化、插件集成到高级功能的实现和部署优化,希望对你有所帮助。在实际项目中,灵活运用这些技术可以大大提升用户体验和项目质量。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Vue3级联选择(Cascader)
这是一个可定制的级联选择器组件,支持多级下拉选项。主要属性包括:数据源、文本字段、值字段、后代字段、占位符文本、选择行为、间距、宽度、高度、禁用状态、清除功能、搜索功能及过滤函数等。组件可根据需求灵活配置,并支持动态更新与事件回调。在线预览和详细示例可见[这里](https://themusecatcher.github.io/vue-amazing-ui/guide/components/cascader.html)。
1058 2
Vue3级联选择(Cascader)
|
JavaScript
在Vue中使用Swiper轮播图、同时解决点击轮播图左右切换按钮不生效的问题、同时将轮播图抽离出为一个公共组件
这篇文章介绍了在Vue中如何使用Swiper插件创建轮播图,解决Swiper左右切换按钮不生效的问题,并展示了如何将Swiper轮播图抽离成一个可复用的公共组件,同时提供了详细的安装、配置和优化建议。
在Vue中使用Swiper轮播图、同时解决点击轮播图左右切换按钮不生效的问题、同时将轮播图抽离出为一个公共组件
Vue2走马灯(Carousel)
这是一个基于 Vue2 的走马灯轮播组件(Carousel),支持鼠标移入暂停、移出后自动轮播。用户可以自定义设置轮播图片数组、滑动间隔时间、图片宽高。该组件提供了两种滑动效果实现方式:一种是通过 `setInterval` 延时调用,另一种是使用 `requestAnimationFrame()`,后者效果更佳。组件还支持图片懒加载,适用于多种应用场景。
705 0
Vue2走马灯(Carousel)