利用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 相关文章推荐
兼容Mozilla必须知道的知识。
Jan 09 Javascript
动态样式类封装JS代码
Sep 02 Javascript
javascript中字符串的定义示例代码
Dec 19 Javascript
JavaScript框架(iframe)操作总结
Apr 16 Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
Feb 21 Javascript
javascript拖拽效果延伸学习
Apr 04 Javascript
浅谈javascript的url参数parse和build函数
Mar 04 Javascript
原生JS实现图片懒加载(lazyload)实例
Jun 13 Javascript
搭建基于express框架运行环境的方法步骤
Nov 15 Javascript
JS call()及apply()方法使用实例汇总
Jul 11 Javascript
vue 自定义组件添加原生事件
Apr 21 Vue.js
详解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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
Python操作串口的方法
2015/06/17 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python实现简单遗传算法
2020/09/18 Python
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
农业大学毕业生的个人自我评价
2013/10/11 职场文书
客服主管岗位职责
2013/12/13 职场文书
本科应届生求职信
2014/08/05 职场文书
实习工作表现评语
2014/12/31 职场文书
企业介绍信范文
2015/01/30 职场文书
护士自我推荐信范文
2015/03/24 职场文书
无罪辩护词范文
2015/05/21 职场文书
公司借条范本
2015/05/25 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
go goroutine 怎样进行错误处理
2021/07/16 Golang
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python