vue2项目之swiper.js 的使用

这篇具有很好参考价值的文章主要介绍了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 :禁止滑动文章来源地址https://www.toymoban.com/news/detail-445495.html

到了这里,关于vue2项目之swiper.js 的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue2 若依项目,使用plotly.js-dist图表库,将数据图表一键导出为图片

    此代码适用的场景是一个页面有多个数据图表。 首先需要拿到你生成数据图表的数据, 然后赋值给一个数组,数组需要在data定义,还需要去重。  然后点击导出按钮的代码如下: 单个下载可以点击数据图表的照相机,可以实现单个下载。 如果数据图表做了分页和懒加载,无

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

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

    2024年01月16日
    浏览(13)
  • 最详细!!!前端原神官网 (采用html+css+js+dom+ajax+jquery+swiper+json)完整版

    1.该项目采用了大部分前端知识, 完整的复刻原神官网上所显示的全内容 ,非常全面和详细。希望有兴趣的小伙伴萌可以看看和参考一下!!!该项目可以作为大学生 毕设项目(附带项目答辩ppt) 同时也可以作为计算机专业的小伙伴的 期末大作业 。喜欢的请留下你的足迹

    2024年02月05日
    浏览(25)
  • SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议

    配置nginx.conf文件,这个文件一般在/etc/nginx/...中,由于每个人的体质不一样,也有可能在别的路径里,自己找找... 证书存放位置,可自定义存放位置 两个文件 后端配置 把.pfx拷贝到resource下,然后配置一下yml

    2024年02月02日
    浏览(20)
  • node.js版本过高,导致vue2 版本的项目无法正常启动

    node.js版本过高,导致vue2 版本的项目无法正常启动 node的版本是18 ,vue版本是2 ;npm install 失败 1、未采取提示的方式,而是利用了npx命令; 使用npx指定npm的版本 npx -p npm@6 npm i --legacy-peer-deps 注意:如果这不能立即起作用,也许可以先删除node_modules和package-lock.json。它们将被重

    2024年02月08日
    浏览(17)
  • vue2项目部署到码云(gitee/pages)的操作步骤

    说明:本文默认你已经将vue2项目做完,且还未打包;默认你会使用git提交代码到gitee仓库,只是还不会使用gitee的pages功能。 1、打开gitee官网并登录,登录 - Gitee.com 2、创建一个gitee仓库,假设命名为 \\\'mystore\\\' ,然后将写好的vue项目提交到这个仓库;         ============ 第3,4两步

    2023年04月12日
    浏览(11)
  • Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)

    Rspack CLI 官方文档。 rspack.config.js 官方文档。 创建项目(文档中还提供了 Rspack 内置 monorepo 框架 Nx 的创建方式,根据需求进行选择) 创建好项目并运行,目前 Rspack 版本支持的工程模版: 默认创建的 vue 项目为 vue3 : 如果需要其他版本,或其他框架的基础工程,可到官方提

    2024年02月11日
    浏览(8)
  • 【Vue】Vue2创建移动端项目实战教程,创建移动端项目保姆级教程,设置axios,utils工具包,vue.fonfig.js配置项 (下)

    这里是创建移动端项目 【Vue】Vue2.x创建项目全程讲解,保姆级教程,手把手教,Vue2怎么创建项目(上) 【Vue】Vue2创建移动端项目实战教程,创建移动端项目保姆级教程,接上一篇创建Vue2项目(中) 【Vue】Vue2创建移动端项目实战教程,创建移动端项目保姆级教程,设置ax

    2024年02月13日
    浏览(14)
  • 使用宝塔面板部署Node.js+Mysql服务和Vue3-Admin项目到云服务器上

    准备工作 一台云服务器,可以先用免费试用一个月的服务器进行练手;我这里选择的是腾讯云的轻量云服务器; 1、在云服务器上安装宝塔面板 宝塔面板官网地址:https://www.kancloud.cn/chudong/bt2017/424209 1.1 安装Xshell脚本工具,通过这个工具来连接云服务器,进行宝塔面板的安装

    2024年01月25日
    浏览(21)
  • 使用vue-cli创建vue2项目以及项目配置

    1、安装vue-cli cmd:npm install -g @vue/cli@4.5.19 验证是否安装成功:vue -v   出现版本号说明安装成功 2、创建项目 vue create 项目名称 根据自己的需求选择特性,如下所示: 手动选择: 选择自己需要的特性:例如: 选择vue版本 选择路由模式 (输入y和n都可以,y代表history模式没有

    2024年02月06日
    浏览(19)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包