利用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 相关文章推荐
发现的以前不知道的函数
Sep 19 Javascript
jQuery选择器源码解读(一):Sizzle方法
Mar 31 Javascript
JS+CSS实现DIV层的展开、收缩效果
Jan 28 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
JavaScript数组去重的几种方法效率测试
Oct 23 Javascript
vue.js 上传图片实例代码
Jun 22 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
vue devtools的安装与使用教程
Aug 08 Javascript
vue2.0的虚拟DOM渲染思路分析
Aug 09 Javascript
Vue中使用vux配置代码详解
Sep 16 Javascript
在vue中使用G2图表的示例代码
Mar 19 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
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
PHP 透明水印生成代码
2012/08/27 PHP
PHP的PSR规范中文版
2013/09/28 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
Ext 今日学习总结
2010/09/19 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
Python创建自己的加密货币的示例
2021/03/01 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
一套比较完整的软件测试人员面试题
2012/05/13 面试题
买房子个人收入证明
2014/01/16 职场文书
少先队入队活动方案
2014/02/08 职场文书
公司口号大全
2014/06/11 职场文书
启动仪式策划方案
2014/06/14 职场文书
暑期培训心得体会
2014/09/02 职场文书
计划生育证明格式范本
2014/09/12 职场文书
检讨书格式
2015/01/23 职场文书
新员工试用期自我评价
2015/03/10 职场文书
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python
解决Oracle数据库用户密码过期
2022/05/11 Oracle