利用iscroll4实现轮播图效果实例代码


Posted in Javascript onJanuary 11, 2017

前言

iscroll之所以会诞生,主要是因为无论是在以前的iphone、ipod、android 或是更早前的移动webkit都没有提供一种原生的方式来支持在一个固定高度的容器内滚动内容。相信很多人和我一样,在使用iscroll的是时候只知道可以手动滑动,不知道iscroll的轮播怎么实现,那么以下就是我做的一个轮播效果,亲测有效;

一、html代码,当然可以动态添加下面的小圆点

<div id="wrapper">
 <div id="scroller">
  <ul id="thelist">
   <li><strong>1.</strong> <em>A robot may not injure a human being or, through inaction, allow a human being to come to harm.</em></li>
   <li><strong>2.</strong> <em>A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.</em></li>
   <li><strong>3.</strong> <em>A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.</em></li>
   <li><strong>4Zeroth Law:</strong> <em>A robot may not harm humanity, or, by inaction, allow humanity to come to harm.</em></li>
  </ul>
 </div>
</div>
<div id="nav">
 <div id="prev" onclick="myScroll.scrollToPage('prev', 0);return false">← prev</div>
 <ul id="indicator">
  <li class="active">1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
 </ul>
 <div id="next" onclick="myScroll.scrollToPage('next', 0);return false">next →</div>
</div>

二、css代码

<style type="text/css" media="all">
body, ul, li {
 padding: 10px;
 margin: 0;
}
body {
 font-size: 12px;
 -webkit-user-select: none;
 -webkit-text-size-adjust: none;
 font-family: helvetica;
}
#wrapper {
 width:100%;
 height: 160px;
 float: left;
 position: relative; /* On older OS versions "position" and "z-index" must be defined, */
 z-index: 1;   /* it seems that recent webkit is less picky and works anyway. */
 overflow: hidden;
 background: #aaa;
 -webkit-border-radius: 10px;
 -moz-border-radius: 10px;
 -o-border-radius: 10px;
 border-radius: 10px;
 background: #e3e3e3;
}
#scroller {
 /*width: 2100px;*/
 height: 100%;
 float: left;
 padding: 0;
}
#scroller ul {
 list-style: none;
 display: block;
 float: left;
 width: 100%;
 height: 100%;
 padding: 0;
 margin: 0;
 text-align: left;
}
#scroller li {
 -webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
 -o-box-sizing: border-box;
 box-sizing: border-box;
 display: block;
 float: left;
 /*width: 300px;*/
 height: 160px;
 text-align: center;
 font-family: georgia;
 font-size: 18px;
 line-height: 140%;
}
#nav {
 width:100%;
 float: left;
}
#prev, #next {
 float: left;
 font-weight: bold;
 font-size: 14px;
 padding: 5px 0;
 width: 80px;
}
#next {
 float: right;
 text-align: right;
}
#indicator, #indicator > li {
 display: block;
 float: left;
 list-style: none;
 padding: 0;
 margin: 0;
}
#indicator {
 width: 110px;
 padding: 12px 0 0 30px;
}
#indicator > li {
 text-indent: -9999em;
 width: 8px;
 height: 8px;
 -webkit-border-radius: 4px;
 -moz-border-radius: 4px;
 -o-border-radius: 4px;
 border-radius: 4px;
 background: #ddd;
 overflow: hidden;
 margin-right: 4px;
}
#indicator > li.active {
 background: #888;
}
#indicator > li:last-child {
 margin: 0;
}
</style>

三、js代码(这里我用的jquery 做的测试,你也可以根据自己的喜好选择其他库)

<script src="js/jquery.js"></script>
<script src="js/iscrollc.js"></script>
<script type="text/javascript">
 var myScroll;
 var timer;
 var i=0;
 var obj=$('#wrapper');
 var obj_w=obj.outerWidth(true);
 var oli=obj.find('li');
 var oli_l=oli.length;
 oli.outerWidth(obj_w);
 $('#scroller').width(oli_l*obj_w);
 function loaded() {
  myScroll = new iScroll('wrapper', {
   snap: true,
   momentum: false,
   hScrollbar: false,
   onScrollEnd: function () {
    document.querySelector('#indicator > li.active').className = '';
    document.querySelector('#indicator > li:nth-child(' + (this.currPageX+1) + ')').className = 'active';
   },
   onBeforeScrollStart:function(){
    clearInterval(timer);
    },
   onTouchEnd:function(){
    timer=setInterval(gund,2000);
    i=myScroll.currPageX
    },
   });

 timer=setInterval(gund,2000); 
 function gund(){ //每5秒滚动
   i++;
   
   if(i==oli_l){
    i=0;
    myScroll.scrollToPage(0, 0, 1000); //滚回第一页
   } else {
    myScroll.scrollToPage('next', 0);
   };
   document.title=i
  }; 
 
};
document.addEventListener('DOMContentLoaded', loaded, false);
</script>

html 和css不用说,都是行家,主要是js,首先是初始化,再根据iscorll提供的API修改相应的代码,这里主要用刀onBeforeScrollStart,onScrollEnd,onTouchEnd这三个事件,同时结合scrollToPage(),currPageX事件进行对应的定时修改,滑动之后同步自动滚动的页数,就ok了,其实写这个主要是熟悉API。。。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用iscorll能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
javascript+xml技术实现分页浏览
Jul 27 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 Javascript
js模仿java的Map集合详解
Jan 06 Javascript
jQuery动态添加
Apr 07 Javascript
jQuery下拉框的简单应用
Jun 24 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
基于Three.js插件制作360度全景图
Nov 29 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
Sep 16 Javascript
详解js前端代码异常监控
Jan 11 #Javascript
Vue数据驱动模拟实现3
Jan 11 #Javascript
jQuery实现判断控件是否显示的方法
Jan 11 #Javascript
jQuery Form表单取值的方法
Jan 11 #Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 #Javascript
浅谈JavaScript中promise的使用
Jan 11 #Javascript
JS多文件上传的实例代码
Jan 11 #Javascript
You might like
第1次亲密接触PHP5(1)
2006/10/09 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
JavaScript中合并数组的N种方法
2014/09/16 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
webpack多页面开发实践
2017/12/18 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
python分析网页上所有超链接的方法
2015/05/08 Python
使用python加密自己的密码
2015/08/04 Python
用python处理MS Word的实例讲解
2018/05/08 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
Python os模块常用方法和属性总结
2020/02/20 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
英文导游欢迎词
2014/01/11 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
爱耳日活动总结
2014/04/30 职场文书
休假证明书
2015/06/24 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
SpringBoot集成Redis的思路详解
2021/10/16 Redis