上一家公司主要是做些微信的场景页啥的,然后需要快速开发,所以第一时间选择了swiper,毕竟开发快速,比较方便然后api多(虽然并没有用很多),用这个的朋友。缺点的话有时候用了就晓得,下面开始讲讲,第一次写,有啥不对的请大家指正,虚心学习。

  这边swiper的使用发法可以去官网看看,传送门:http://www.swiper.com.cn

  一般来说,H5场景开始有个loading吧,就建一个div,全屏的大小,可以加个loading动画啥的,然后这就用到了预加载,您可以选择一个合适的预加载js,比如relLoader.js。也可以自己写一个方法

function _LoadImg(b, e) {
var c = 0,
a = {},
d = 0;
for (src in b) {
d++;
}
for (src in b) {
a[src] = new Image();
a[src].onload = function() {
if (++c >= d) {
e(a)
}
};
a[src].src = b[src];
}
}

_LoadImg([
'images/1-beijing.jpg',
'images/2-beijing.jpg',
],

function() {
  var loader = document.getElementById('loading');
  document.body.removeChild(loader);
});

下方是swiper动画的js,官网拷贝下来的

<script>

var mySwiper = new Swiper ('.swiper-container', {

  onInit: function(swiper){ //Swiper2.x的初始化是onFirstInit

    swiperAnimateCache(swiper); //隐藏动画元素

    swiperAnimate(swiper); //初始化完成开始动画 },

   onSlideChangeEnd: function(swiper){

    swiperAnimate(swiper); //每个slide切换结束时也运行当前slide动画

   }

   })

</script>

接下来你发现loading已经结束了,但是加在首屏的动画为啥都不动了,其实人家在你loading的时候已经加载完成了,所以动画已经执行了。

解决办法很简单的

setTimeout(function(){
  swiperAnimate(swiper);
},1000);//初始化完成开始动画

设置一个延迟,看看效果,这回就可以了。

问题:

部分iphone(比如iphone6p)手机打开H5会闪退。这些H5大部分都是微信端使用的,所以微信这位爷要好生照顾,之前微信是分为android和ios版,他们的内核都不一样的,会些问题,很多人都收到过摧残。原因有几个吧加载的图片啥的太多了,动画过多吧或者H5的页数很多,都是有可能的。

解决办法呢:

就是预加载的时候加载少量的图片

开启swiper的懒加载lazyLoading设为true啊,这时html里面也要修改<img data-src="path/to/picture-1.jpg" class="swiper-lazy">

lazyLoadingInPrevNext设置为true允许将延迟加载应用到最接近的slide的图片(前一个和后一个slide)。或者

lazyLoadingOnTransitionStart默认当过渡到slide后开始加载图片,如果你想在过渡一开始就加载,设置为true
lazyLoadingInPrevNextAmount 设置在延迟加载图片时提前多少个slide。个数不可少于slidesPerView的数量。 默认为1,提前1个slide加载图片,例如切换到第三个slide时加载第四个slide里面的图片。
根据需求来做呗,

问题:

swiper没法加两个动画,举个栗子:你要div入场一个动画,然后入场动画执行完了这个div再循环执行一个小动画,这个swiper没法帮你哦,你要这个有个啥swiper.animate-twice.min.js的,可以去尝试一下,但我觉得不好使。

解决办法:事件监听,监听这个div,第一个动画执行完成,然后给加上一个循环的动画,所以有这个方法

var youxiu = document.getElementById("youxiu");
function setAni(obj,type,duration,delay,cName){
obj.addEventListener("webkitAnimationEnd",function(){
this.setAttribute("swiper-animate-effect",type);
this.setAttribute("swiper-animate-duration",duration);
this.setAttribute("swiper-animate-delay",delay);
this.className = cName;
swiperAnimate(mySwiper);
},false);
}
setAni(youxiu,"pulses","2s","0.3s","full swiper-lazy ani");

还有很多问题可以一起讨论,发现写这个也不是件简单的事情,水平有限哈,请多多指教。祝大家工作顺利!!

swiper遇到的问题及解决方法的更多相关文章

  1. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  2. MVVM框架从WPF移植到UWP遇到的问题和解决方法

    MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...

  3. iPhone Anywehre虚拟定位提示“后台服务未启动,请重新安装应用后使用”的解决方法

    问题描述: iPhone越狱了,之后在Cydia中安装Anywhere虚拟定位,但是打开app提示:后台服务未启动,请重新安装应用后使用. 程序无法正常使用... 解决方法: 打开Cydia-已安装, ...

  4. python中IndentationError: expected an indented block错误的解决方法

    IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进

  5. js闭包for循环总是只执行最后一个值得解决方法

    <style> li{ list-style: none;width:40px;height: 40px;text-align:center;line-height: 40px;curso ...

  6. mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!

    mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法! 修改mysql5.7的配置文件即可解决,方法如下: linux版:找到mysql的安装路径进入默认的为/usr/shar ...

  7. maven常见异常以及解决方法

    本文写的是我在整合ssm框架时遇到的一些问题,我估计很多人也会遇到,所以,这里作为一个总结,希望能够帮助大家解决问题 一,加入shiro组件时抛出的异常 加入步骤(略) 问题 1,保存后,无法导入sh ...

  8. WebEssentials 在vs2013 update5安装报错的解决方法.

    WebEssentials 最高支持到update4 如果更新到了update5 RC, 则无法直接安装. 解决方法是 1,下载WebEssentials2013.vsix 文件. 2, 安装7zip ...

  9. [异常解决] windows用SSH和linux同步文件&linux开启SSH&ssh client 报 algorithm negotiation failed的解决方法之一

    1.安装.配置与启动 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有 ...

随机推荐

  1. easyui弹出窗关闭前调用确认窗口,先关闭页面后调用弹出窗口

    弹出窗关闭的时候提示是否关闭,同时进行一些对应的方法调用, 然而在进行页面关闭调用的时候,往往页面关闭了,才弹出确认对话框, $.messager.confirm和panel的onBeforeClos ...

  2. Java中多线程原理详解

    Java是少数的集中支持多线程的语言之一,大多数的语言智能运行单独的一个程序块,无法同时运行不同的多个程序块,Java的多线程机制弥补了这个缺憾,它可以让不同的程序块一起运行,这样可以让程序运行更加顺 ...

  3. jdbcTemplate获取mysql的blob

    java使用jdbcTemplate操作mysql数据库,遇到blob字段,正常读取出来是blob的地址,而不是blob的内容. 下面采用2中方式读取blob的内容: 1.以二进制数组形式读取blob ...

  4. “-webkit-font-smoothing”

    CSS3里面加入了一个"-webkit-font-smoothing"属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘 ...

  5. 【前端】:css

    前言: 关于前端的第二篇博客,会写关于css的,内容比较基础.写完这篇博客,会做一个类似美乐乐家具的界面.good luck to me~ 一.css-引用样式 标签上设置style属性: <b ...

  6. angular1.5 Components

    如今前端界angular react vue三大框架并驾齐驱,其中有一个共同点就是组件化开发,这也符合w3c 推行Web Components的趋势.现如今不懂组件化开发的前端绝对不是好厨子.跳槽新公 ...

  7. JavaScript处理json格式数据

    JSON即JavaScript对象标记,是一种轻量级的数据交换格式,非常适用于服务器与JavaScript的交互.JSON是基于纯文本的数据格式. JSON是JavaScript的原生格式,可以使用J ...

  8. 决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 内容: 1.算法概述 1.1 决策树(DT)是一种基本的分类和回归方法.在分类问题中它可以认为是if-the ...

  9. JavaScript中的this关键字的用法和注意点

    JavaScript中的this关键字的用法和注意点 一.this关键字的用法 this一般用于指向对象(绑定对象); 01.在普通函数调用中,其内部的this指向全局对象(window); func ...

  10. java中浅层克隆和深层克隆

    1.浅复制与深复制概念 浅复制(浅克隆)     被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象 ...