当前位置:   article > 正文

Swiper、vue-awesome-swiper 插件使用

vue-awesome-swiper

Swiper在PC端和移动端都适用

官方网站:Swiper中文网首页-官方

vue2 配合 swiper5或6版本

vue3 可以使用 swiper8最新版本

一、Swiper插件(Vue、React、Angular框架都可以使用)

1、使用方法

Swiper使用方法(一个简单轮播的实现)-官方

2、版本简介

swiper简介和swiper各版本兼容性-官方

3、版本下载(以swiper5为例:点击下载swiper-5.4.5.zip

下载Swiper包-官方

4、具体实现 

4-1、下载至本地之后,根据 swiper5 版本需要,保留swiper.min.js和swiper.min.css文件

4-2、根据下方链接进行配置

Swiper使用方法-官方

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Swiper使用方法里的官方代码</title>
  7. <link rel="stylesheet" href="./css/swiper.min.css">
  8. <script src="./js/swiper.min.js"></script>
  9. <style>
  10. .swiper-container {
  11. width: 600px;
  12. height: 300px;
  13. border: 1px solid red;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div class="swiper-container">
  19. <div class="swiper-wrapper">
  20. <div class="swiper-slide">Slide 1</div>
  21. <div class="swiper-slide">Slide 2</div>
  22. <div class="swiper-slide">Slide 3</div>
  23. </div>
  24. <!-- 如果需要分页器 -->
  25. <div class="swiper-pagination"></div>
  26. <!-- 如果需要导航按钮 -->
  27. <div class="swiper-button-prev"></div>
  28. <div class="swiper-button-next"></div>
  29. <!-- 如果需要滚动条 -->
  30. <div class="swiper-scrollbar"></div>
  31. </div>
  32. <script>
  33. var mySwiper = new Swiper('.swiper', {
  34. direction: 'vertical', // 垂直切换选项
  35. loop: true, // 循环模式选项
  36. // 如果需要分页器
  37. pagination: {
  38. el: '.swiper-pagination',
  39. },
  40. // 如果需要前进后退按钮
  41. navigation: {
  42. nextEl: '.swiper-button-next',
  43. prevEl: '.swiper-button-prev',
  44. },
  45. // 如果需要滚动条
  46. scrollbar: {
  47. el: '.swiper-scrollbar',
  48. },
  49. })
  50. </script>
  51. </body>
  52. </html>

要注意:Swiper7的默认容器是'.swiper',Swiper6之前是'.swiper-container'

操作完以上步骤,此时swiper轮播已经是能正常切换了。其他功能可以结合API文档完成。 

Swiper参数选项API文档-官方

5、个人优化

在上面轮播基础上添加了鼠标移入,轮播切换停止;鼠标移出,轮播切换继续效果。

鼠标移入移出效果-官方

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <!-- 引包 -->
  9. <script src="./js/swiper.min.js"></script>
  10. <link rel="stylesheet" href="./css/swiper.min.css">
  11. <style>
  12. .swiper-container {
  13. width: 600px;
  14. height: 400px;
  15. margin: 100px auto;
  16. border: 1px solid red;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div class="swiper-container">
  22. <div class="swiper-wrapper">
  23. <div class="swiper-slide">Slide 1</div>
  24. <div class="swiper-slide">Slide 2</div>
  25. <div class="swiper-slide">Slide 3</div>
  26. </div>
  27. <!-- 如果需要分页器 -->
  28. <div class="swiper-pagination"></div>
  29. <!-- 如果需要导航按钮 -->
  30. <div class="swiper-button-prev"></div>
  31. <div class="swiper-button-next"></div>
  32. </div>
  33. </body>
  34. </html>
  35. <script>
  36. //swiper:对外暴露Swiper构造函数
  37. //第一个参数:模板根节点是CSS选择器或真实DOM节点
  38. //第二个参数:轮播图配置对象
  39. let myswiper = new Swiper(".swiper-container", {
  40. //前进后退按钮的配置项
  41. navigation: {
  42. nextEl: '.swiper-button-next',
  43. prevEl: '.swiper-button-prev',
  44. },
  45. //自动切换
  46. autoplay: {
  47. delay: 1000,//延迟时间
  48. stopOnLastSlide: false, //是否到最后一张轮播就停止循环
  49. disableOnInteraction: true,
  50. },
  51. //无缝衔接 无限循环
  52. loop: true,
  53. //分页器
  54. pagination: {
  55. el: '.swiper-pagination',
  56. clickable: true,//点击分页器切换图片
  57. },
  58. });
  59. //鼠标进入
  60. myswiper.el.onmouseover = function () {
  61. myswiper.autoplay.stop();
  62. }
  63. myswiper.el.onmouseout = function () {
  64. myswiper.autoplay.start();
  65. }
  66. </script>

二、vue-awesome-swiper插件(仅供Vue框架使用)

vue-awesome-swiper插件在swiper插件基础上进行的封装,封装成了vue组件。

所以在使用vue-awesome-swiper插件前,要先安装swiper。

vue3 + vue-awesome-swiper 文档

vue2 + vue-awesome-swiper 文档

 1、Vue2项目使用swiper、vue-awesome-swiper插件,具体实现:

1-1、安装swiper、vue-awesome-swiper
npm i swiper@5 vue-awesome-swiper@4

安装完成后在package.json文件中,如下图:

1-2、代码配置 main.js入口文件中 
  1. import "swiper/css/swiper.min.css"
  2. import { Swiper, SwiperSlide } from 'vue-awesome-swiper';
  3. Vue.component('Swiper', Swiper);
  4. Vue.component('SwiperSlide', SwiperSlide);
  5. // Swiper 代表最外侧容器
  6. // SwiperSlide 代表每一张轮播图
 1-3、代码配置 pages/test/index.vue
  1. <template>
  2. <Swiper class="box" :options="options" ref="swiper">
  3. <SwiperSlide v-for="item in 10">
  4. <p>{{ item }}</p>
  5. </SwiperSlide>
  6. <!-- 左箭头 -->
  7. <div slot="button-prev" class="swiper-button-prev"></div>
  8. <!-- 右箭头 -->
  9. <div slot="button-next" class="swiper-button-next"></div>
  10. <!-- 分页器 -->
  11. <div slot="pagination" class="swiper-pagination"></div>
  12. </Swiper>
  13. </template>
  14. <script>
  15. export default {
  16. name: "",
  17. data() {
  18. return {
  19. // options配置项: 使用swiper官网的配置项即可
  20. options: {
  21. //导航前进后退按钮
  22. navigation: {
  23. nextEl: ".swiper-button-next",
  24. prevEl: ".swiper-button-prev",
  25. },
  26. //自动轮播图
  27. autoplay: {
  28. delay: 1000,
  29. stopOnLastSlide: false,
  30. disableOnInteraction: true,
  31. },
  32. //无缝衔接
  33. loop: true,
  34. //分页器配置项
  35. pagination: {
  36. el: ".swiper-pagination",
  37. clickable: true, // 点击分页器小球进行轮播图切换
  38. },
  39. //切换效果
  40. effect: "cube",
  41. },
  42. };
  43. },
  44. mounted() {
  45. //鼠标进入-暂停
  46. this.$refs.swiper.$el.onmouseenter = () => {
  47. this.$refs.swiper.$swiper.autoplay.stop();
  48. };
  49. //鼠标离开-开始
  50. this.$refs.swiper.$el.onmouseleave = () => {
  51. this.$refs.swiper.$swiper.autoplay.start();
  52. };
  53. },
  54. };
  55. </script>
  56. <style scoped>
  57. .box {
  58. width: 600px;
  59. height: 400px;
  60. border: 1px solid red;
  61. margin: 10px auto;
  62. }
  63. p {
  64. width: 100%;
  65. height: 100%;
  66. background: cyan;
  67. }
  68. </style>

操作完以上步骤,此时vue-awesome-swiper轮播已经是能正常切换了。其他功能可以结合swiper的API文档完成(是的,没有看错,swiper的api文档)。

vue-awesome-swiper API文档

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号