首页 > 其他分享 >Swiper轮播图库的使用

Swiper轮播图库的使用

时间:2023-04-20 11:12:19浏览次数:40  
标签:nextTick 轮播 DOM button 图库 Swiper swiper

Swiper轮播图库的使用

1.下载并引入CSS和JS文件

(1)安装swiper
(2)在需要使用轮播图的组件内导入swpier和它的css样式
(3)在组件中创建swiper需要的dom标签(html代码,参考官网代码)
(4)创建swiper实例

注意:在创建swiper对象时,我们会传递一个参数用于获取展示轮播图的DOM元素,官网直接通过class(而且这个class不能修改,是swiper的css文件自带的)获取。但是这样有缺点:当页面中有多个轮播图时,因为它们使用了相同的class修饰的DOM,就会出现所有的swiper使用同样的数据,这肯定不是我们希望看到的。
解决方法:在轮播图最外层DOM中添加ref属性

<div class="swiper-container" id="mySwiper" ref="cur">

通过ref属性值获取DOM

let mySwiper = new Swiper(this.$refs.cur,{...})

2.new swiper实例

完美解决方案:使用watch+this.$nextTick()
官方介绍:this. $nextTick它会将回调延迟到下次 DOM 更新循环之后执行(循环就是这里的v-for)。
个人理解:无非是等我们页面中的结构都有了再去执行回调函数

完整代码如下:

<template>
  <!--列表-->
  <div class="list-container">
    <div class="sortList clearfix">
      <div class="center">
        <!--banner轮播-->
        <div class="swiper-container" id="mySwiper">

          <div class="swiper-wrapper">
            <div class="swiper-slide" v-for="(carouse,index) in bannerList" :key="carouse.id">
              <img :src="carouse.imgUrl" />
            </div>
          </div>

          <!-- 如果需要分页器 -->
          <div class="swiper-pagination"></div>

          <!-- 如果需要导航按钮 -->
          <div class="swiper-button-prev" ></div>
          <div class="swiper-button-next"></div>
        </div>
      </div>
      </div>
    </div>
  </div>
</template>
<script>
//引入Swiper
import Swiper from 'swiper'
//引入Swiper样式
import 'swiper/css/swiper.css'

import {mapState} from "vuex";

export default {
  name: "index",
  //主键挂载完毕,ajax请求轮播图图片
  mounted() {
    this.$store.dispatch("getBannerList")
  },
  computed:{
    ...mapState({
    //从仓库中获取轮播图数据
      bannerList:state => state.home.bannerList
    })
  },
  watch:{
    bannerList(newValue,oldValue){
        //this.$nextTick()使用
        this.$nextTick(()=>{
          let mySwiper = new Swiper(document.getElementsByClassName("swiper-container"),{
            pagination:{
              el: '.swiper-pagination',
              clickable: true,
            },
            // 如果需要前进后退按钮
            navigation: {
              nextEl: '.swiper-button-next',
              prevEl: '.swiper-button-prev',
            },
            // 如果需要滚动条
            scrollbar: {
              el: '.swiper-scrollbar',
            },
          })
        })
    }
  }
}
</script>

3.自定义轮播图大小

.swiper {
    width: 600px;
    height: 300px;
}  

4.常用配置项

slidesPerView : 5 :一页展示几张图片

slidesPerGroup:5:轮播一下切换几张图片

 const swiper = new Swiper('.swiper', {
        // Optional parameters
        // direction: 'vertical',
        loop: true,
        slidesPerView : 5,
        slidesPerGroup:5,

        navigation: {
          nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev',
        },
      });
   }

标签:nextTick,轮播,DOM,button,图库,Swiper,swiper
From: https://www.cnblogs.com/luckily7/p/17336075.html

相关文章

  • 欢迎页轮播动画
    如图,引导开始,球从上落下,同时淡入文字,然后文字开始轮播,最后一页时停止,点击进入首页。在来看看效果图。重力球先不讲,主要欢迎轮播简单实现首先新建一个类 TextTranslationXGuideView,用于动画展示文本是类似的,最后会有个图片箭头动画,布局很简单,就是一个TextView跟ImageView......
  • 直播app源码,使用vue-awesome-swiper创建轮播图幻灯片
    直播app源码,使用vue-awesome-swiper创建轮播图幻灯片1.引入引入方式可以参考官方文档,两种方式选一种即可:vue-awesome-swiperatv3.1.3 (1)第一种方式:在main.js入口文件中全局引入 ///src/main.js //swiper全局引入importVueAwesomeSwiperfrom'vue-awesome-swiper'im......
  • swiper视频切换
    <script>varinterleaveOffset=.85;varautoPlaySpeed=4000;varswiper=newSwiper(".main-visual-slider.swiper-container",{ autoplay:true, loop:true, speed:1200, parallax:false, draggable:false, autoplay:{ delay:autoP......
  • uni中使用轮播图
    最近在写一个类似于滚动弹幕,使用纯css,效果有点假,不太真实因此想起来uni中有轮播图,可以直接使用<swiperclass="swiper"style="height:90rpx;"circularvertical="true":autoplay="true":interval="3000":duration="1000"> <swi......
  • 微信小程序实现轮播图
    微信小程序实现轮播图问题背景客户端开发和学习过程中,轮播图是一个很常见的功能,本文将介绍如何在微信小程序中实现轮播图。问题分析前一篇文章(参考https://blog.51cto.com/baorant24/6188322),我们实现无限滚动的获奖名单使用了swiper组件,事实上,这个组件也可以用来实现轮播图,是......
  • JS-轮播图(圆点点击,左右侧按钮切换,自动播放)
    //放入数据//点击小圆圈,可切换对应图片,小圆圈的样式也跟随变动//点击左右侧按钮,可来回切换图片,小圆圈样式跟随变动//可自动切换轮播图,鼠标移入后不在自动滚动(function(){vardate=[{img:'./image/banner.jpeg'},{......
  • ExtJS 轮播图UI组件(Carousel)
    ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html转载请注明出处:https://www.cnblogs.com/cqpanda/p/17177307.html更新记录2023年4月11日发布。Carousel组件(MordenToolkit)基本使用{xtype:'carousel',width:500,height:300,item......
  • vue2 使用 swiper 轮播图效果
    vue2使用swiper轮播图效果Postedon 2021-04-0813:58  书中枫叶 阅读(1612) 评论(0)  编辑  收藏  举报上次更新:2022-03-0817:06第一步、先安装swiper插件[email protected]第二步、组件内引入swiper插件importSwi......
  • 轮播图
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title><linkrel="stylesheet"href="font/iconfont.css"><linkrel="stylesheet......
  • SwipeRefreshLayout和ListView的EmptyView共存冲突的问题
    SwipeRefreshLayout是android官方的下拉刷新控件;它内部有且只能有一个子控件;当一个ListView嵌入到它内部时,就不能为ListView带一个EmptyView了;于是很自然的想到将ListView和EmptyView纳入到一个父控件中;典型的像下面这样的布局:<android.support.v4.......