整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

swiper在vue中正确的使用方法

wiper是网页中非常强大的一款轮播插件,说是轮播插件都不恰当,因为它能做的事情太多了,swiper在vue下也是能用的,需要依赖专门的vue-swiper插件,因为vue是没有操作dom的逻辑的,所以写法大不一样,下面附swiper在vue中正确的使用方法



1.安装swiper,执行npm install vue-awesome-swiper –save命令

2.在main.js中添加下面三行

import ‘swiper/dist/css/swiper.css’import VueAwesomeSwiper from ‘vue-awesome-swiper’Vue.use(VueAwesomeSwiper)3.在html部分添加

<swiper :options=”swiperOption”><swiper-slide>slide1</swiper-slide><swiper-slide>slide2</swiper-slide><div class=”swiper-pagination” slot=”pagination”></div><div class=”swiper-button-prev” slot=”button-prev”></div><div class=”swiper-button-next” slot=”button-next”></div></swiper>4.将下面js部分添加到data里面

swiperOption: {pagination: {el: ‘.swiper-pagination’,clickable: true // 允许点击小圆点跳转},autoplay: {delay: 3000,disableOnInteraction: false // 手动切换之后继续自动轮播},loop: true,navigation: {nextEl: ‘.swiper-button-next’,prevEl: ‘.swiper-button-prev’}},

Swiper - 是免费且最现代化的移动触摸滑块,具有硬件加速过渡和惊人的原生行为。 它旨在用于移动网站,移动网络应用程序和移动本机/混合应用程序。 主要针对iOS设计,但也适用于最新的Android,Windows Phone 8和现代桌面浏览器。github star 20K+,最新版本4.5。

开源,免费,文档丰富,应用广泛的swiper,简单配置就可以实现PC,移动端的各种轮播特效,如下截图:(前端同学必须了解)

Swiper 4 的特色功能

  • 不依赖框架

Swiper无需加载任何公共库(如jquery)即可运行,这保证了Swiper的轻量和运行速度。Swiper也可以在加载了公共库的环境下安全的运行,如jQuery, Zepto, jQuery Mobile等

  • 1:1的触摸滑动

Swiper默认的触摸比例为1:1,你可以通过修改Swiper的设置来改变这个比例。

  • 监视器

Swiper可以通过设置开启监视器,有了这个功能Swiper可以在你动态改变Dom或Swiper的样式时自动重新初始化并计算所需的元素。

  • 丰富的API

Swiper 拥有丰富的API,允许你建立自己独特的分页器、导航、视差滚动、或其他精彩的效果

  • 真正支持RTL布局

Swiper是唯一一个支持100%RTL(右向左)布局的滑动插件。可在swiper-container上加dir="rtl"。

  • 多行slides布局

Swiper允许多行Slides布局,这样每行的slide就会较少。

  • 过渡效果

增加了三种新的过渡效果:淡入、3D方块、3D流。

  • 双向控制

现在Swiper可以用来控制其他的Swiper,甚至可以同时控制。

  • 完整的导航控制

Swiper配备了常用的导航控制器,包括分页器,切换箭头,滚动条。

  • Flexbox布局

Swiper使用流行的flexbox布局,这样就解决了很多计算尺寸方面的问题。这种布局也允许用CSS来设定Slides。

  • Flexbox网格

你可以在Swiper初始化的时候设定slide的显示,包括每行、每列、每组数量以及他们的间距等。

  • 视差过渡

Swiper支持流行的视差效果,你可以将视差效果应用于Swiper的内部元素,如图片、文本、标题、背景图等等..

  • 图片懒加载

Swiper对非active slide内的图片实行延迟加载,这个功能加快了页面的打开速度,提高了Swiper的使用体验。

  • 虚拟 Slides

Swiper 4新增了虚拟slides特性,当你有很多Slide或有很多内容的slide的时候可以在DOM中只保留需要的slide。

  • 其他的特性

Swiper4还包含了所有swiper2的优秀特性,包括自适应、滚动反弹、抵抗反弹、loop模式、嵌套Swiper。

使用方法(一)

1.首先加载插件,需要用到的文件有swiper.min.js和swiper.min.css文件。可下载Swiper文件或使用CDN。

<!DOCTYPE html>
<html>
<head>
 ...
 <link rel="stylesheet" href="dist/css/swiper.min.css">
</head>
<body>
 ...
 <script src="dist/js/swiper.min.js"></script>
 ...
</body>
</html>

2.HTML内容。

<div class="swiper-container">
 <div class="swiper-wrapper">
 <div class="swiper-slide">Slide 1</div>
 <div class="swiper-slide">Slide 2</div>
 <div class="swiper-slide">Slide 3</div>
 </div>
 <!-- 如果需要分页器 -->
 <div class="swiper-pagination"></div>
 
 <!-- 如果需要导航按钮 -->
 <div class="swiper-button-prev"></div>
 <div class="swiper-button-next"></div>
 
 <!-- 如果需要滚动条 -->
 <div class="swiper-scrollbar"></div>
</div>
导航等组件可以放在container之外

3.你可能想要给Swiper定义一个大小,当然不要也行。

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

4.初始化Swiper:最好是挨着</body>标签

...
<script> 
 var mySwiper = new Swiper ('.swiper-container', {
 direction: 'vertical', // 垂直切换选项
 loop: true, // 循环模式选项
 
 // 如果需要分页器
 pagination: {
 el: '.swiper-pagination',
 },
 
 // 如果需要前进后退按钮
 navigation: {
 nextEl: '.swiper-button-next',
 prevEl: '.swiper-button-prev',
 },
 
 // 如果需要滚动条
 scrollbar: {
 el: '.swiper-scrollbar',
 },
 }) 
 </script>
</body>

如果不能写在HTML内容的后面,则需要在页面加载完成后再初始化。

<script>
window.onload = function() {
 ...
}
</script>

或者这样(Jquery和Zepto)(推荐)

<script>
$(document).ready(function () {
 ...
})
</script>

5.完成。恭喜你,现在你的Swiper应该已经能正常切换了。

使用方法(二)

  • 安装
$ npm install swiper
  • 组件使用
var Swiper = require('swiper');
var mySwiper = new Swiper('.swiper-container', { /* ... */ });

DEMO

直接上截图,来自中文网的截图(可以自行去官网了解更多)



wiper是一个在切图中好用到不行的图片轮播插件,包括3d轮播、h5滑屏等复杂应用都不在话下,到了vue项目一切逻辑完全颠覆了,没有获取dom的概念,还好有 vue-awesome-swiper组件,让我们可以无缝的继续使用swiper。如果没记错的话vue-awesome-swiper基于swiper3.x 开发得来。

1.npm安装

npm install vue-awesome-swiper –save

2.main.js全局安装

import Vue from 'vue'
import VueAwesomeSwiper from 'vue-awesome-swiper'

// require styles
import 'swiper/dist/css/swiper.css'

Vue.use(VueAwesomeSwiper, /* { default global options } */)

3.组件里调用


import 'swiper/dist/css/swiper.css'

import { swiper, swiperSlide } from 'vue-awesome-swiper'

export default {
components: {
swiper,
swiperSlide
}
}

4、缩略图(普通的swiper很简单,网上有很多可以借鉴 我备注一下缩略图的)template中

<div class="swiper-box" style="height: 500px">
<!-- swiper1 -->
<swiper :options="swiperOptionTop" class="gallery-top" ref="swiperTop">
<swiper-slide class="slide-1"></swiper-slide>
<swiper-slide class="slide-2"></swiper-slide>
<swiper-slide class="slide-3"></swiper-slide>
<swiper-slide class="slide-4"></swiper-slide>
<swiper-slide class="slide-5"></swiper-slide>
<div class="swiper-button-next swiper-button-white" slot="button-next"></div>
<div class="swiper-button-prev swiper-button-white" slot="button-prev"></div>
</swiper>
<!-- swiper2 Thumbs -->
<swiper :options="swiperOptionThumbs" class="gallery-thumbs" ref="swiperThumbs">
<swiper-slide class="slide-1"></swiper-slide>
<swiper-slide class="slide-2"></swiper-slide>
<swiper-slide class="slide-3"></swiper-slide>
<swiper-slide class="slide-4"></swiper-slide>
<swiper-slide class="slide-5"></swiper-slide>
</swiper>
</div>

data中定义

data() {
return {
swiperOptionTop: {
spaceBetween: 10,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
}
},
swiperOptionThumbs: {
spaceBetween: 10,
centeredSlides: true,
slidesPerView: 'auto',
touchRatio: 0.2,
slideToClickedSlide: true
}
}
},

mounted中

mounted() {
this.$nextTick(() => {
const swiperTop = this.$refs.swiperTop.swiper
const swiperThumbs = this.$refs.swiperThumbs.swiper
swiperTop.controller.control = swiperThumbs
swiperThumbs.controller.control = swiperTop
})
}

style部分