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无需加载任何公共库(如jquery)即可运行,这保证了Swiper的轻量和运行速度。Swiper也可以在加载了公共库的环境下安全的运行,如jQuery, Zepto, jQuery Mobile等
Swiper默认的触摸比例为1:1,你可以通过修改Swiper的设置来改变这个比例。
Swiper可以通过设置开启监视器,有了这个功能Swiper可以在你动态改变Dom或Swiper的样式时自动重新初始化并计算所需的元素。
Swiper 拥有丰富的API,允许你建立自己独特的分页器、导航、视差滚动、或其他精彩的效果
Swiper是唯一一个支持100%RTL(右向左)布局的滑动插件。可在swiper-container上加dir="rtl"。
Swiper允许多行Slides布局,这样每行的slide就会较少。
增加了三种新的过渡效果:淡入、3D方块、3D流。
现在Swiper可以用来控制其他的Swiper,甚至可以同时控制。
Swiper配备了常用的导航控制器,包括分页器,切换箭头,滚动条。
Swiper使用流行的flexbox布局,这样就解决了很多计算尺寸方面的问题。这种布局也允许用CSS来设定Slides。
你可以在Swiper初始化的时候设定slide的显示,包括每行、每列、每组数量以及他们的间距等。
Swiper支持流行的视差效果,你可以将视差效果应用于Swiper的内部元素,如图片、文本、标题、背景图等等..
Swiper对非active slide内的图片实行延迟加载,这个功能加快了页面的打开速度,提高了Swiper的使用体验。
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', { /* ... */ });
直接上截图,来自中文网的截图(可以自行去官网了解更多)
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部分
*请认真填写需求信息,我们会在24小时内与您取得联系。