zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题


Posted in Javascript onAugust 27, 2015

在移动web开发中,由于手机界面较小,为了能展示更多的图片经常使用轮播图并且还需要考虑到手机流量的问题,通过请教他人以及百度,个人感觉swipe.js比较好用。

它是一个纯javascript工具,不需要跟其它js库一起导入,同时兼容jQuery和zepto,压缩版的大小只有6kb很适合移动端的开发,它的git地址:https://github.com/thebird/swipe

在git上对其的使用方式介绍的相当清楚,关键代码如下

<div id='slider' class='swipe'>
 <div class='swipe-wrap'>
  <div></div>
  <div></div>
  <div></div>
 </div>
</div>
.swipe {
 overflow: hidden;
 visibility: hidden;
 position: relative;
}
.swipe-wrap {
 overflow: hidden;
 position: relative;
}
.swipe-wrap > div {
 float:left;
 width:100%;
 position: relative;
}
window.mySwipe = Swipe(document.getElementById('slider'),opt);

其中.swipe嵌套.swipe-wrap这个html树模型最好不要改动,至于最里面的div可以更换其他,如li 等

仅仅只需要上诉的几段代码即可完成轮播图的制作,但是在实际的项目中,特别是在首页顶部的banner上还需要加入page的索引,还需要对控件的参数进行配置,它的主要参数配置如下:

startSlide Integer (default:0) - 开始滚动的位置

speed Integer (default:300) - 动画滚动的间隔(秒数)

auto Integer - 开始自动幻灯片(以毫秒为单位幻灯片之间的时间)

continuous Boolean (default:true) - 创建一个无限的循环(当滑动到所有动画结束时是否循环滑动)

disableScroll Boolean (default:false) - 当滚动滚动条时是否停止幻灯片滚动 

stopPropagation Boolean (default:false) - 是否停止事件冒泡 

callback Function - 幻灯片运行中的回调函数

transitionEnd Function - 动画运行结束的回调函数 

而他的主要api函数如下:

prev():上一页 

next():下一页

getPos():获取当前页的索引 

getNumSlides():获取所有项的个数

slide(index, duration):滑动方法

以下是偶在项目中的实际运用的代码

<div class="banner">
      <div id="slider" class="swipe">
        <ul class="swipe-wrap">
          <li>
            <a href="javascript:void(0)">
              <img src="img/1.jpg">
            </a>
          </li>
          <li>
            <a href="javascript:void(0)">
              <img src="img/2.jpg">
            </a>
          </li>
          <li>
            <a href="javascript:void(0)">
              <img src="img/3.jpg">
            </a>
          </li>
          <li>
            <a href="javascript:void(0)">
              <img src="img/4.jpg">
            </a>
          </li>
          <li>
            <a href="javascript:void(0)">
              <img src="img/5.jpg">
            </a>
          </li>
        </ul>
        <ul class="slide-trigger">
          <li class="cur"></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
        </ul>
      </div>
    </div>
.banner {
        width: 100%;
        position: relative;
      }
      .banner .swipe {
        overflow: hidden;
        position: relative;
      }
      .banner .swipe-wrap {
        overflow: hidden;
        position: relative;
        list-style: none;
      }
      .banner .swipe-wrap li {
        float: left;
        position: relative;
      }
      .banner img {
        width: 100%;
        vertical-align: middle;
      }
      .banner .slide-trigger {
        position: absolute;
        left: 0;
        bottom: 0;
        width: 100%;
        z-index: 10;
        display: -webkit-box;
        display: -moz-box;
        display: -ms-flexbox;
        display: -webkit-flex;
        display: flex;
        -webkit-box-pack: center;
        -moz-box-pack: center;
        -ms-flex-pack: center;
        -webkit-justify-content: center;
        justify-content: center;
        list-style: none;
      }
      .banner .slide-trigger li {
        width: 10px;
        height: 10px;
        background: #FFF;
        margin: 5px;
        -webkit-border-radius: 50%;
        -moz-border-radius: 50%;
        -ms-border-radius: 50%;
        -o-border-radius: 50%;
        border-radius: 50%;
      }
      .banner .slide-trigger .cur {
        background: #2fc7c9;
      }
var slider = $('#slider');
    slider.find(".slide-trigger").find("li").eq(0).addClass("cur");
    window.mySwipe = new Swipe(document.getElementById('slider'), {
      speed: 400,
      auto: 3000,
      callback: function(index, elem) {
        slider.find(".slide-trigger").find("li").eq(index).addClass("cur").siblings().removeClass("cur");
      }
    });

zepto中的swipeUp,swipeDown不起效果

我正在看zepto,然后看到里面一些事件的时候发现一个问题:

$(‘body').swipeUp(function(e){
alert(‘swipeUp');//偶尔有效
})
$(‘body').swipeDown(function(e){
alert(‘swipeDown');//偶尔有效
})
$(‘body').tap(function(){
alert(‘tap');//ok
})
$(‘body').swipeLeft(function(){
alert(‘swipeLeft');//ok
})
$(‘body').swipeRight(function(){
alert(‘swipeRight');//ok
})

在移动端swipeUp,swipeDown不起效果,另外几个有效,是怎么回事呢?

解决方案一:

zepto要引入 touch.js模块 官网上是没有的 去github下载 然后引入 touch.js即可

解决方案二:

是因为阻止了浏览器默认的下拉事件,加上下面一段代码。

document.addEventListener('touchmove', function (event) {
event.preventDefault();
}, false);

Javascript 相关文章推荐
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
jQuery each函数源码分析
May 25 Javascript
基于bootstrap实现广告轮播带图片和文字效果
Jul 22 Javascript
JavaScript中清空数组的方法总结
Dec 02 Javascript
JS中传递参数的几种不同方法比较
Jan 20 Javascript
weui框架实现上传、预览和删除图片功能代码
Aug 24 Javascript
node+express+ejs使用模版引擎做的一个示例demo
Sep 18 Javascript
JS实现监控微信小程序的原理
Jun 15 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
Nov 05 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
Mar 14 Javascript
jquery实现左右滑动菜单效果代码
Aug 27 #Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
Aug 27 #Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 #Javascript
jquery图片倾斜层叠切换特效代码分享
Aug 27 #Javascript
JavaScript实现非常简单实用的下拉菜单效果
Aug 27 #Javascript
JavaScript中的Function函数
Aug 27 #Javascript
jquery带动画效果幻灯片特效代码
Aug 27 #Javascript
You might like
图书管理程序(三)
2006/10/09 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
使用js实现数据格式化
2014/12/03 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
python文件名和文件路径操作实例
2017/09/29 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
python的pstuil模块使用方法总结
2019/07/26 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
Python实现FLV视频拼接功能
2020/01/21 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Python 在函数上添加包装器
2020/07/28 Python
如何用Django处理gzip数据流
2021/01/29 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
《藏戏》教学反思
2014/02/11 职场文书
幼儿园运动会口号
2014/06/07 职场文书
客户答谢会活动方案
2014/08/31 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
vue使用element-ui按需引入
2022/05/20 Vue.js