原生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 对象模型 执行模型
Dec 06 Javascript
用jQuery中的ajax分页实现代码
Sep 20 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 Javascript
实例代码讲解jquery easyui动态tab页
Nov 17 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 Javascript
浅谈js中的延迟执行和定时执行
May 31 Javascript
js仿小米官网图片轮播特效
Sep 29 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 Javascript
微信小程序 UI与容器组件总结
Feb 21 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 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连接MySQL代码的参数说明
2008/06/07 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
php读取本地json文件的实例
2018/03/07 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
python实现俄罗斯方块游戏
2020/03/25 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
python开发前景如何
2020/06/11 Python
python 通过exifread读取照片信息
2020/12/24 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
小学生暑假家长评语
2014/04/17 职场文书
机械系毕业生求职信
2014/05/28 职场文书
群教班子对照检查材料
2014/08/26 职场文书
写给老师的保证书
2015/05/09 职场文书
聘任书格式及范文
2015/09/21 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
python实现MD5进行文件去重的示例代码
2021/07/09 Python