原生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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
Apr 13 Javascript
一个关于javascript匿名函数的问题分析
Mar 30 Javascript
JS实现模仿微博发布效果实例代码
Dec 16 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
Jan 25 Javascript
微信小程序  wx.request合法域名配置详解
Nov 23 Javascript
微信小程序 同步请求授权的详解
Aug 04 Javascript
angular中ui calendar的一些使用心得(推荐)
Nov 03 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
Nov 08 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
Feb 12 Javascript
Javascript中的this,bind和that使用实例
Dec 05 Javascript
vue-cli3 热更新配置操作
Sep 18 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 一个比较完善的简单文件上传
2010/03/25 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
JS定时关闭窗口的实例
2013/05/22 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
pycharm安装和首次使用教程
2018/08/27 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
ET Mall东森购物网:东森严选
2017/03/06 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
致1500米运动员广播稿
2014/02/07 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
个人作风建设总结
2014/10/23 职场文书
初中信息技术教学反思
2016/02/16 职场文书