利用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 相关文章推荐
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
最新28个很棒的jQuery 教程
May 28 Javascript
Jquery 获取checkbox的checked问题
Nov 16 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
Jun 19 Javascript
利用毫秒减值计算时长的js代码
Sep 22 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 Javascript
详谈jQuery.load()和Jsp的include的区别
Apr 12 jQuery
vue2.0 如何把子组件的数据传给父组件(推荐)
Jan 15 Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
JS实现烟花爆炸效果
Mar 10 Javascript
Vue自定义render统一项目组弹框功能
Jun 07 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
推荐文章系统(一)
2006/10/09 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
js中eval详解
2012/03/30 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
python中的内置函数getattr()介绍及示例
2014/07/20 Python
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
Python unittest单元测试框架总结
2018/09/08 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
教师自我评价范例
2013/09/24 职场文书
应届大学生求职信
2013/12/01 职场文书
介绍信的格式
2015/01/30 职场文书
尊师重教主题班会
2015/08/14 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
高三英语教学反思
2016/03/03 职场文书
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL