原生js轮播(仿慕课网)


Posted in Javascript onFebruary 15, 2017

效果如下:

原生js轮播(仿慕课网)

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>javascript</title>
 <style>
 *{margin:0;padding:0;border:0;}
 a{text-decoration:none;color:#fff;font-size:40px;line-height:200px;display:none;text-align:center;}
 #container{width:300px;height:200px;margin:50px auto;position:relative;overflow:hidden;}
 #list{width:2100px;height:200px;position:absolute;top:0;}
 #list span{width:300px;height:200px;display:inline-block;text-align:center;font-size:22px;float:left;color:#fff;}
 .one{background:red;}
 .two{background:orange;}
 .three{background:blue;}
 .four{background:green;}
 .five{background:black;}
 #buttons{width:200px;height:30px;position:absolute;bottom:0px;left:100px;z-index:9;}
 #buttons span{display:inline-block;cursor:pointer;width:12px;height:12px;border-radius:6px;background: #2a2a2a}
 #prev{width:40px;height:200px;position:absolute;left:0px;}
 #next{width:40px;height:200px;position:absolute;right:0px;}
 #container .on{background:#fff;}
 </style>
</head>
<body>
 <div id="container">
 <div id="list" style="left:-300px">
 <span class="five">我是黑色第五张</span>
 <span class="one">我是红色第一张</span>
 <span class="two">我是黄色第二张</span>
 <span class="three">我是蓝色第三张</span>
 <span class="four">我是绿色第四张</span>
 <span class="five">我是黑色第五张</span>
 <span class="one">我是红色第一张</span>
 </div>
 <div id="buttons">
 <span class="on" index="1"></span>
 <span index="2"></span>
 <span index="3"></span>
 <span index="4"></span>
 <span index="5"></span>
 </div>
 <a id="prev" href="javascript:;" rel="external nofollow" rel="external nofollow" ><</a>
 <a id="next" href="javascript:;" rel="external nofollow" rel="external nofollow" >></a>
 </div>
 <script>
  var container = document.getElementById('container'),
   list = document.getElementById('list'),
   buttons = document.getElementById('buttons').getElementsByTagName('span'),
   prev = document.getElementById('prev'),
   next = document.getElementById('next'),
   index = 1,
   len = 5,
   interval = 3000,
   animated = false,
   timer;
  function animate(offset){
  if(offset == 0) return;
  animated = true;
  var time = 150,
  inter = 5,
  speed = offset/(time/inter),
  left = parseInt(list.style.left) + offset;
 var go = function(){
 if((speed>0 && parseInt(list.style.left)<left) || (speed<0 && parseInt(list.style.left)>left)){
  list.style.left = parseInt(list.style.left) + speed + 'px';
  setTimeout(go,inter);
 }else{
  list.style.left = left + 'px';
  if(left > -100){
  list.style.left = -300*len + 'px';
  }
  if(left < (-300*len)){
  list.style.left = '-300px'
  }
  animated = false;
 }
 }
 go();
  }
  function showButton(){
  for(var i=0 ; i<buttons.length ; i++){
  if(buttons[i].className == 'on'){
  buttons[i].className = '';
  break;
  }
  }
  buttons[index - 1].className = 'on';
  }
  function play(){
  timer = setTimeout(function(){
  next.onclick();
  play();
  },interval);
  }
  function stop(){
  clearTimeout(timer);
  }
  next.onclick = function(){
  if(animated) {
  return;
  }
  if(index == 5){
  index = 1;
  }else{
  index++;
  }
  animate(-300);
  showButton();
  }
  prev.onclick = function(){
  if(animated) {
  return;
  }
  if(index == 1){
  index = 5;
  }else{
  index--;
  }
  animate(300);
  showButton();
  }
  for (var i = 0; i < buttons.length; i++) {
    buttons[i].onclick = function () {
     if (animated) {
      return;
     }
     if(this.className == 'on') {
      return;
     }
     var myIndex = parseInt(this.getAttribute('index'));
     var offset = -300 * (myIndex - index);
     animate(offset);
     index = myIndex;
     showButton();
    }
   }
  container.onmouseover = function(){
  prev.style.display = next.style.display = 'block';
  stop();
  }
  container.onmouseout = function(){
  prev.style.display = next.style.display = 'none';
  play();
 }
  play();
 </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript Window及document对象详细整理
Jan 12 Javascript
JavaScript实现文字跟随鼠标特效
Aug 06 Javascript
Jquery Easyui日历组件Calender使用详解(23)
Dec 18 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
Feb 13 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
vue拖拽排序插件vuedraggable使用方法详解
Aug 21 Javascript
vux-scroller实现移动端上拉加载功能过程解析
Oct 08 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
vue实践---vue不依赖外部资源实现简单多语操作
Sep 21 Javascript
vue created钩子函数与mounted钩子函数的用法区别
Nov 05 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
如何在JavaScript中等分数组的实现
Dec 13 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
Feb 15 #Javascript
Canvas实现放射线动画效果
Feb 15 #Javascript
微信小程序 开发经验整理
Feb 15 #Javascript
bootstrap table操作技巧分享
Feb 15 #Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
Feb 15 #Javascript
JS原型与原型链的深入理解
Feb 15 #Javascript
js中数组插入、删除元素操作的方法
Feb 15 #Javascript
You might like
德生PL990的分析评价
2021/03/02 无线电
PHP个人网站架设连环讲(一)
2006/10/09 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
取得父标签
2006/11/14 Javascript
动态调用css文件——jquery的应用
2007/02/20 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
python的Template使用指南
2014/09/11 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
会计专业毕业生自我评价
2013/09/25 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
css背景和边框标签实例详解
2021/05/21 HTML / CSS
关于python类SortedList详解
2021/09/04 Python
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers