原生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 相关文章推荐
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
jquery延迟加载外部js实现代码
Jan 11 Javascript
js锁屏解屏通过对$.ajax进行封装实现
Jul 31 Javascript
Egret引擎开发指南之编译项目
Sep 03 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
Apr 06 Javascript
jquery不常用方法汇总
Jul 26 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
jquery编写Tab选项卡滚动导航切换特效
Jul 17 Javascript
bootstrap table配置参数例子
Jan 05 Javascript
微信小程序promsie.all和promise顺序执行
Oct 27 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
Oct 05 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
php抓即时股票信息
2006/10/09 PHP
joomla数据库操作示例代码
2016/01/06 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
python3.5仿微软计算器程序
2020/03/30 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
《灯光》教学反思
2014/02/08 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
银行员工考核评语
2014/12/31 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android