原生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 相关文章推荐
用js判断页面是否加载完成实现代码
Dec 11 Javascript
Jquery Ajax xmlhttp请求成功问题
Feb 04 Javascript
JS简单实现动画弹出层效果
May 05 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
详解JavaScript中常用的函数类型
Nov 18 Javascript
javascript实现去除HTML标签的方法
Dec 26 Javascript
Node.js中用D3.js的方法示例
Jan 16 Javascript
vue实现商城上货组件简易版
Nov 27 Javascript
vue中v-for加载本地静态图片方法
Mar 03 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
微信小程序 button样式设置为图片的方法
Jun 19 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的memcached客户端memcached
2011/06/14 PHP
10个实用的PHP代码片段
2011/09/02 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
JavaScript 函数replace深入了解
2013/03/14 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
javascript常见用法总结
2014/05/22 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python实现购物车程序
2018/04/16 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
pandas 空数据处理方法详解
2019/11/02 Python
python ubplot使用方法解析
2020/01/10 Python
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
行政助理的岗位职责
2014/02/18 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
2016年教代会开幕词
2016/03/04 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
十个Python自动化常用操作,即拿即用
2021/05/10 Python