引入文件(注:目前版本号为Swiper3.x)

<link rel="stylesheet" type="text/css" href="//static.chimeroi.com/lib/slide/swiper.css">
<script src="//static.chimeroi.com/lib/slide/swiper.min.js"></script>

结构

<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之外 -->

基本js配置

// selector 支持jquery的选择器
var mySwiper = new Swiper ('.// swiper-container', {
direction: 'vertical',
loop: true, // 如果需要分页器
pagination: '.swiper-pagination', // 如果需要前进后退按钮
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev', // 如果需要滚动条
scrollbar: '.swiper-scrollbar',
})

项目中使用的坑

图片过大,需要使用类似全局函数resizeImg来控制图片显示时,开启了循环loop

此处需要可能有两个坑

1.图片重新设置宽高之后,宽度过大,会导致swiper-slide滑动时,图片未被截断。

方案:需要设置swiper-slide overflow:hidden;

2.图片load事件的监听

开启loop之后,swiper会深层拷贝swiper-slider内容的元素,默认会拷贝第一个和最后一个,通过视觉差,达到循环效果,直接在元素之上通过行内方法绑定的事件函数,不会直接,也就是不会执行onload 事件。动态追加的元素,可通过父元素的事件委托,但div不可委托图片的load事件。可以直接利用swiper插件提供的onInit 初始化回调函数,循环遍历包括深层拷贝的图片,然后resize。

例如:

 ```js
var mySwiper = new Swiper('#swiper', {
loop: headBannerLength>1,
autoplay:5000,
onInit: function(){
$('#swiper img').each(function(){
resizeImg(this, width, height);
})
}
});
```

开启了loop与react 配合使用的bug

react dom 渲染 时机与 swiper 深层dom拷贝相冲突,导致设置了loop循环时,会拷贝的react 渲染出来的svg 不完全,导致显示bug。
解决方案:在swiper 初始化后回掉react 渲染函数,并且将id挂载点改为class。
部分代码:
```js
// 循环
function initHousingMarket (){
Array.prototype.forEach.call(document.getElementsByClassName('ct-housing-pie'),function(e,i){
initChart(e, dataHousingMarket, COLOR_PIE, 'Number of Various<br>Properties', undefined, undefined, true);
});
} function initChart(elem, datas, colors, title, valueKey, titleSize, padding) {
if (!elem) return;
valueKey = valueKey || "y"
removeZeroData(datas);
// 挂载前清空,然后再渲染。不直接全部回调的原因是,加载速度原因
elem.innerHTML = '';
if (!datas.length) {
elem = elem.parentNode;
elem.parentNode.removeChild(elem);
return;
}
}
```

前进后退按钮再swiper 之外的时候

只需要改变,结构与样式。配置不变。

<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>

轮播图插件swiper 的使用的更多相关文章

  1. 兼容pc端和移动端的轮播图插件 swiper.js

    swiper.js是一款纯JavaScript打造的滑动特效插件,可以用来实现检点轮播图,tab触摸滑动切换等常用效果.下载地址:https://www.swiper.com.cn/download/ ...

  2. 移动端web轮播图插件swiper,功能很强大

    使用方法示例: <div class="swiper-container"> <div class="swiper-wrapper"> ...

  3. swiper轮播图插件

    一.简介 ①Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端.Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. ②Swiper 是一款免费以及 ...

  4. Vue轮播图插件---Vue-Awesome-Swiper

    轮播图插件 Vue-Awesome-Swiper 地址:https://github.com/surmon-china/vue-awesome-swiper 安装:npm install vue-aw ...

  5. vue轮播图插件之vue-awesome-swiper

    移动端轮播图插件,在使用iview图形界面插件中的carousel组件无法实现触摸滑动后,转而使用vue-awesome-swiper插件 1.npm安装 npm i vue-awesome-swip ...

  6. js 原生轮播图插件

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. jquery, js轮播图插件Swiper3

    轮播图插件Swiper3 HTML代码 如果只是简单的使用轮播图,直接复制我的html代码就可以. 如果想要高级一些,就自己去看文档吧 <!DOCTYPE html> <html l ...

  8. 学习笔记: js插件 —— SuperSlide 2 (轮播图插件,PC用)

    SuperSlide 2  轮播图插件,较老.但还好用. 适用于PC,是绑定到jquery上的方法: $.slide(); 如果在实际中找不到.slide方法,请检查jquery等.js文件的引入次序 ...

  9. 封装一个简单的原生js焦点轮播图插件

    轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...

随机推荐

  1. [转]BTC RPC API GetTransaction

    本文转自: GetTransaction GetTransaction gettransaction调用获取指定钱包内交易的详细信息.该调用需要节点 启用钱包功能. 参数 TXID:要查看详情的交易I ...

  2. c#的WebService和调用

    WebService: 1.新建一个空白web应用程序 2.在上面建立的web应用程序添加web服务 4.保存发布至 IIS Client: 1.新建一个程序(可以是winform.控制台.web) ...

  3. Android RecyclerView预览item

    参考: Android Tools Attributes listItem 和 Sample Data 的用法 笔记 tools:text TextView可以实现预览,不影响实际的效果 例如: to ...

  4. 【Java每日一题】20170208

    20170207问题解析请点击今日问题下方的“[Java每日一题]20170208”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...

  5. class example of C++

    #include <iostream> using namespace std; class Rectangle {     int width, height;   public:    ...

  6. Js 控制随机数概率

    如: 取 1~10 之间的随机数,那么他们的取值范围是: 整数 区间 概率 1 [0,1) 0.1 2 [1,2) 0.1 3 [2,3) 0.1 4 [3,4) 0.1 5 [4,5) 0.1 6 ...

  7. 事件处理程序 (DOM0级)

    DOM0事件处理程序 每个元素都有自己的事件处理程序属性,那么直接获取对象,然后在对象上设置事件处理程序属性. 1:获取节点对象引用 2:在事件成员上设置处理函数,这时函数内部this指向节点对象. ...

  8. 一些你可能不熟悉的JS知识点总结

    js代码暂时性死区 只要块级作用域存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响.这么说可能有些抽象,举个例子: ? 1 2 3 4 5 var temp = 123; if(tr ...

  9. C#导入Excel、Excel导入、导入.xls 、导入.xlsx、Excel2003版本、Excel2007版本

    C#导入Excel: 1.选择Excel 03版文件 2.选择需要读取数据的Excel工作表   3.选择工作表中需要读取的列 源码地址在图片下面,不要点击图片,点击下载地址跳转下载.

  10. 向后台提交数据:cookie,secure_cookie,

    向后台提交数据除了前端url,form表单,Ajax外还可以用cookie,secure_cookie,提交更多信息可以在用cookie基础上用session, cookie,secure_cooki ...