Swiper 10.2.0 基本使用,Vue3

Swiper 10.2.0 基本使用手册

安装方法

1. 使用 npm 安装

npm install swiper --save

2. 使用 cdn

<script src="https://cdn.jsdelivr.net/npm/swiper@10/swiper-element-bundle.min.js"></script>

2. 使用方法

2.1. 在 Vue 中使用

<script setup>
import { register } from 'swiper/element/bundle'
register() // 注册 swiper 组件,如果安装方法使用的是 cdn,则不需要这一步,也不需要上方的引入
const swiperOptions = {
  autoplay: {
    delay: 1000,
    enabled: true
  }
}
const init = () => {
  console.log('1')
}
</script>

<template>
  <main>
    <swiper-container
      class="swiper-container"
      navigation="true"
      ref="mainSwiper"
      pagination="true"
      :autoplay="swiperOptions.autoplay"
      @init="init"
    >
      <swiper-slide v-pre>Slide 1</swiper-slide>
      <swiper-slide v-pre>Slide 2</swiper-slide>
      <swiper-slide v-pre>Slide 3</swiper-slide>
    </swiper-container>
  </main>
</template>

在网页中如何控制台出现下图警告,则将 vite.config.js 修改为如下

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

export default defineConfig({
  plugins: [
    vue({
      // 忽略自定义元素警告
      template: {
        compilerOptions: {
          isCustomElement: (tag) => tag.startsWith('swiper-')
        }
      }
    }),
    vueJsx()
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

3. 详细使用方法

3.1. swiper-container

3.1.1. swiper-container 属性

slidesPerView:每个滑动组件显示的幻灯片数量,可以是数字或’auto’,默认为1。

spaceBetween:幻灯片之间的间距(单位为px),默认为0。

speed:滑动速度(单位为毫秒),默认为300。

loop:是否循环播放幻灯片,可以是true或false,默认为false。

cssMode:是否使用CSS滚动模式,可以提高性能和兼容性,可以是true或false,默认为false。

direction:滑动方向,可以是’horizontal’或’vertical’,默认为’horizontal’。

effect:滑动效果,可以是’slide’、‘fade’、‘cube’、‘coverflow’或’flip’,默认为’slide’。

autoplay:是否自动播放幻灯片,可以是true或false,或者一个对象,包含delay(延迟时间,单位为毫秒),stopOnLastSlide(是否在最后一张幻灯片停止),disableOnInteraction(是否在用户交互时停止),reverseDirection(是否反向播放),waitForTransition(是否等待过渡结束),pauseOnMouseEnter(是否在鼠标进入时暂停),默认为false,endable(是否启用)。

pagination:是否显示分页器,可以是true或false,或者一个对象,包含el(分页器元素的选择器或HTML元素),type(分页器类型,可以是’bullets’、‘fraction’、‘progressbar’或’custom’),clickable(分页器是否可点击),dynamicBullets(分页器是否动态调整大小),dynamicMainBullets(分页器显示的主要子弹数量),hideOnClick(分页器是否在点击时隐藏),renderBullet(自定义渲染子弹的函数),renderFraction(自定义渲染分数的函数),renderProgressbar(自定义渲染进度条的函数),bulletClass(子弹元素的类名),bulletActiveClass(激活子弹元素的类名),modifierClass(修改器类名前缀),currentClass(当前分数元素的类名),totalClass(总分数元素的类名),hiddenClass(隐藏分页器元素的类名),progressbarFillClass(进度条填充元素的类名),clickableClass(可点击分页器元素的类名),lockClass(锁定分页器元素的类名)等参数,默认为false。

navigation:是否显示导航按钮,可以是true或false,或者一个对象,包含nextEl(下一个按钮元素的选择器或HTML元素),prevEl(上一个按钮元素的选择器或HTML元素),hideOnClick(导航按钮是否在点击时隐藏),disabledClass(禁用导航按钮元素的类名),hiddenClass(隐藏导航按钮元素的类名)等参数,默认为false。

scrollbar:是否显示滚动条,可以是true或false,或者一个对象,包含el(滚动条元素的选择器或HTML元素),dragSize (滚动条拖动块的大小,可以是数字或’auto’),hide (滚动条是否在没有交互时隐藏),draggable (滚动条拖动块是否可拖动),snapOnRelease (释放滚动条拖动块后是否切换到最近的幻灯片),lockClass (锁定滚动条拖动块元素的类名),dragClass (拖动中滚动条拖动块元素的类名)等参数,默认为false。

freeMode:是否启用自由模式,可以是true或false。在自由模式下,幻灯片不会贴合到边缘,而是根据惯性继续滑动,默认为false。
grid:是否启用网格模式,可以是true或false,或者一个对象,包含fill(填充模式,可以是’row’或’column’),rows(行数)等参数。在网格模式下,幻灯片可以在多行多列布局,默认为false。

manipulation:是否启用动态操纵模式,可以是true或false。在动态操纵模式下,可以使用appendSlide、prependSlide、removeSlide、removeAllSlides等方法动态添加或删除幻灯片,默认为false。

4. 模块

4.1 自动播放

<swiper-container
  class="swiper-container"
  ref="mainSwiper"
  :autoplay="{
    delay: 1000,
    enabled: true
  }"
  :autoplay="swiperOptions.autoplay"
>
     ...
</swiper-container>

4.2. 分页器

<swiper-container
  class="swiper-container"
  ref="mainSwiper"
  :pagination="{
    el: '.swiper-pagination', // 分页器元素的选择器或HTML元素,如果不写 el 则显示默认分页器
    clickable: true
  }"
>
     ...
</swiper-container>
<div class="swiper-pagination" style="border: 1px solid #000"></div> // 自定义分页器一般写在 swiper-container 外面

4.3. 导航按钮

<swiper-container
  class="swiper-container"
  ref="mainSwiper"
  :navigation="{
    nextEl: '.swiper-button-next', // 下一个按钮元素的选择器或HTML元素
    prevEl: '.swiper-button-prev', // 上一个按钮元素的选择器或HTML元素,如果不写 nextEl 和 prevEl 则显示默认按钮
    hideOnClick: true
  }"
>
     ...
</swiper-container>
<div class="swiper-button-next" style="border: 1px solid #000"></div> // 自定义按钮一般写在 swiper-container 外面
<div class="swiper-button-prev" style="border: 1px solid #000"></div> // 自定义按钮一般写在 swiper-container 外面

4.4. 滚动条

<swiper-container
  class="swiper-container"
  ref="mainSwiper"
  :scrollbar="{
    el: '.swiper-scrollbar', // 滚动条元素的选择器或HTML元素,如果不写 el 则显示默认滚动条
    dragSize: 100, // 滚动条拖动块的大小,可以是数字或’auto’
    draggable: true, // 滚动条拖动块是否可拖动
    snapOnRelease: true // 释放滚动条拖动块后是否切换到最近的幻灯片
  }"
>
     ...
</swiper-container>

5. 事件

5.1. init

<swiper-container
  class="swiper-container"
  ref="mainSwiper"
  @init="init"
>
     ...
</swiper-container>

<script setup>

const init = () => {
  console.log('1')
}

</script>

5.2. slidechange

<swiper-container
  class="swiper-container"
  ref="mainSwiper"
  @slidechange="slideChange" // 注意这里的事件名是小写
>
     ...
</swiper-container>

<script setup>
import { register } from "swiper/element/bundle"
register()

const slideChange = () => {
  console.log('1')
}

</script>

6. 获取 swiper 实例

<template>
  <swiper-container class="swiper-container" ref="mainSwiper" @init="init" @slidechange="slideChange">
    <swiper-slide>Slide 1</swiper-slide>
    <swiper-slide>Slide 2</swiper-slide>
    <swiper-slide>Slide 3</swiper-slide>
  </swiper-container>
</template>

<script setup>
import { register } from "swiper/element/bundle"
import { nextTick, onMounted, ref } from "vue"
register()

const mainSwiper = ref(null)

const init = async function () {
  await nextTick()
  console.log("1", mainSwiper.value)
}
const slideChange = () => {
  console.log("2")
}

onMounted(() => {
  console.log("3", mainSwiper.value)
})
</script>

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值