vue 使用swiper的异形轮播图

 

 

 官网效果图是这样的

一、我们需要在vue的public的html引入我们下载的css样式

 <link rel="stylesheet" href="../src/assets/css/swiper.min.css">

这个样式可以去官网下载

https://www.swiper.com.cn/demo/index.html

 下载全部实例里就有我们需要的样式

二、在npm里下载swiper插件

npm install swiper --save-dev

三、在需要使用的页面引入

复制代码
import Swiper from "swiper";

export default {
    data() {
        return {
        }
    },
    mounted() {
      var mySwiper = new Swiper(".swiper-container", {
        direction: "horizontal",
        loop: true,
        centeredSlides: true,
        spaceBetween: 10,
        observer: true,
        observeParents: true,
        // slidesPerView: 3,
        pagination: {
          el: ".swiper-pagination",
          clickable: true,
        },
      });
  }
}
复制代码

四、写入dom结构

复制代码
<!-- 异形轮播图 star-->
    <div class="slideshow">
      <div class="swiper-container">
        <div class="swiper-wrapper">
          <div v-for="(item, i) in pictures" :key="i" class="swiper-slide">
            <!-- 具体内容 -->
            <div class="slideshowtext">{{ item.text }}</div>
            <img :src="item.advertiseImages" alt="商品图片" />
          </div>
        </div>
      </div>
    </div>
<!-- 异形轮播图 end-->
复制代码

 

五、在mode的data里添加数组对象

复制代码
 //海报模型展示
      pictures: [
        {
          advertiseImages: require("../assets/image/swiper.png"),
          text: "海报名称一",
        },
        {
          advertiseImages: require("../assets/image/swiper.png"),
          text: "海报名称二",
        },
        {
          advertiseImages: require("../assets/image/swiper.png"),
          text: "海报名称三",
        },
      ],
复制代码

六、复制swiper官网异形轮播图的样式,这里我按照自己的页面需要进行了更改

复制代码
//异形轮播图 star
  .slideshow {
    width: 100%;
    overflow: hidden;
    margin-top: 0.63rem;
  }
  .slideshowtext {
    width: 100%;
    text-align: left;
    font-size: 0.28rem;
    color: #333333;
    padding-bottom: 0.21rem;
  }
  .swiper-container {
    width: 4.84rem;
    // height: 7.52rem;
    margin-left: 1.34rem;
  }
  .swiper-wrapper {
    width: 100%;
    height: 100%;
  }
  .swiper-slide {
    display: flex;
    flex-wrap: wrap;
    text-align: center;
    font-size: 18px;
    background: #fff;
    width: 100%;
    height: 100%;
    /* 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.8);
  }
  img {
    width: 4.84rem;
    height: 7.52rem;
  }
  .swiper-slide-active,
  .swiper-slide-duplicate-active {
    transform: scale(1);
  }
  //异形轮播图 end
复制代码

 七、如果想获取当前选中的轮播的下标 (需要swiper4.0.0以上版本,在package.json里面查看)

  在需要的点击方法上获取 要看loop是否为true 

  1、loop:true    

  this.mySwiper.activeIndex

  2、loop:false  

   this.mySwiper.realIndex

八、如果使用的图片是从后台获取到的,这么写会出现问题,我们需要把new Swiper放到一个事件里,先把从后台获取的数据放到数据里,然后再调用其new swiper事件

复制代码
import Swiper from "swiper";

export default {
    data() {
        return {
            mySwiper: null,
            pictures:[]
        }
    },
    methods: {
        dataimg() {
            promise.then(res => {
                this.pictures = res.pictures;
                this.$nextTick(() => {
                    this.dataCarousel();
                });
            });
        },
        dataCarousel() {
          this.mySwiper = new Swiper(".swiper-container", {
            direction: "horizontal",
            loop: true, //是否开始无限循环
            centeredSlides: true,
            spaceBetween: 10,
            observer: true,
            observeParents: true,
            // slidesPerView: 1,
            pagination: {
              el: ".swiper-pagination",
              clickable: true,
            },
          });
        }
    }
}
复制代码

 

 

posted @   light丶  阅读(3929)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示