原生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 相关文章推荐
Prototype使用指南之array.js
Jan 10 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
jquery validate在ie8下的bug解决方法
Nov 13 Javascript
jquery对元素拖动排序示例
Jan 16 Javascript
javascript获取元素偏移量的方法有哪些
Jun 24 Javascript
node.js 使用ejs模板引擎时后缀换成.html
Apr 22 Javascript
JS深度拷贝Object Array实例分析
Mar 31 Javascript
jQuery 选择符详细介绍及整理
Dec 02 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
vue ssr 实现方式(学习笔记)
Jan 18 Javascript
200行HTML+JavaScript实现年会抽奖程序
Jan 22 Javascript
JS实现放烟花效果
Mar 10 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
php strftime函数的详细用法
2018/06/21 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
javascript流程控制语句集合
2017/09/18 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python制作爬虫抓取美女图
2016/01/20 Python
django批量导入xml数据
2016/10/16 Python
Python 多线程实例详解
2017/03/25 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python实现简单图片物体标注工具
2019/03/18 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
几个Shell Script面试题
2012/08/31 面试题
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
口头翻译求职人自荐信
2013/12/07 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
各种货币符号快捷输入
2022/02/17 杂记