• vue中使用swiper并自定义分页器样式


    一,安装swiper

    执行命令 npm install vue-awesome-swiper --save

    二,引入swiper

    import {Swiper} from "vue-awesome-swiper";
    import "swiper/dist/css/swiper.css";

     
    三,使用swiper,不废话,上代码。
    <template>
      <div class="page">
        <div class="swiper-container">
          <div class="swiper-wrapper">
            <div class="swiper-slide">
              <img class="imgCard" src="../assets/swiper1.jpg" alt>
            </div>
            <div class="swiper-slide">
              <img class="imgCard" src="../assets/swiper2.jpg" alt>
            </div>
            <div class="swiper-slide">
              <img class="imgCard" src="../assets/swiper3.jpg" alt>
            </div>
          </div>
          <div class="swiper-pagination"></div>
        </div>
      </div>
    </template>
    <script>
    import Swiper from "swiper";
    import "swiper/dist/css/swiper.css";
    export default {
      data() {
        return {
          dialogShow: false
        };
      },
      mounted() {
        this._initSwiper();
      },
      methods: {
        _initSwiper() {
          var mySwiper = new Swiper(".swiper-container", {
            direction: "horizontal",
            loop: true,
            autoplay: true, //自动轮播
            speed: 1000,
            pagination: {
              el: ".swiper-pagination",
              type: "custom",
              renderCustom: function(swiper, current, total) {
                var customPaginationHtml = "";
                for (var i = 0; i < total; i++) {
                  //判断哪个分页器此刻应该被激活
                  if (i == current - 1) {
                    customPaginationHtml +=
                      '<span class="swiper-pagination-customs swiper-pagination-customs-active"></span>';
                  } else {
                    customPaginationHtml +=
                      '<span class="swiper-pagination-customs"></span>';
                  }
                }
                return '<span class="swiperPag">'+customPaginationHtml+'</span>';
              }
            }
          });
        }
      }
    };
    </script>
    <style lang="scss" >
    .swiperPag {
      4.5rem;
      height: 0.07rem;
      border-radius: 0.04rem;
      display: flex;
      align-items: center;
      margin:0 auto;
      background-color: rgba($color: #000000, $alpha: 0.8)
    }
    .swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets {
      bottom:0.27rem;
    }
    .swiper-pagination-customs {
       1.5rem;
      height: 0.14rem;
      display: inline-block;
    }
    /*自定义分页器激活时的样式表现*/
    .swiper-pagination-customs-active {
       1.5rem;
      height: 0.14rem;
      display: inline-block;
      border-radius: 0.07rem;
      background-color: #28a7e1;
    }
    </style>

    注意:

    • style标签不要加scoped,否则样式加不上!
    • 直接npm install swiper --save 下载的是swiper4,build打包时,会报错如下: Unexpected token: name (Dom7) [./~/swiper/~/dom7/dist/dom7.modular.js:16,0][static/js/vendor.cf492f2bb7f8b02ec428.js:16311,6]

     到后来才发现,这样写是有问题的,当路由切换后再次进入该页面轮播就停止了,然后就做了如下更改。

    export default {
      data() {
        return {
          dialogShow: false,
          mySwiper: {},
        };
      },
      activated() {
        this._initSwiper(); // 初始化swiper
      },
      deactivated() {
          this.mySwiper.destroy();// 销毁swiper
      },
      methods: {
        _initSwiper() {
          this.mySwiper = new Swiper(".swiper-container", {
            direction: "horizontal",
            loop: true,
            autoplay: true, //自动轮播
            speed: 1000,
            pagination: {
              el: ".swiper-pagination",
              type: "custom",
              renderCustom: function(swiper, current, total) {
                var customPaginationHtml = "";
                for (var i = 0; i < total; i++) {
                  //判断哪个分页器此刻应该被激活
                  if (i == current - 1) {
                    customPaginationHtml +=
                      '<span class="swiper-pagination-customs swiper-pagination-customs-active"></span>';
                  } else {
                    customPaginationHtml +=
                      '<span class="swiper-pagination-customs"></span>';
                  }
                }
                return '<span class="swiperPag">'+customPaginationHtml+'</span>';
              }
            }
          });
        }
      }
    };    
  • 相关阅读:
    补习系列(19)-springboot JPA + PostGreSQL
    【跟唐老师学习云网络】-第8篇 iptables
    【跟唐老师学习云网络】
    物联网与人工智能之间的区别与联系
    NB-IoT将成为未来5G物联网主流技术
    Python自带又好用的代码调试工具Pdb学习笔记
    Vue源码中compiler部分逻辑梳理(内有彩蛋)
    全新一代云服务器S6,重新定义性价比
    [HAOI2012]音量调节
    [SCOI2005]扫雷
  • 原文地址:https://www.cnblogs.com/nicederen/p/10620534.html
Copyright © 2020-2023  润新知