纯JS实现轮播图


Posted in Javascript onFebruary 22, 2017

这几天一直在看js动画,今天又get到了一个轮播图,使用纯js实现的,但是没有美化哈,需要的小伙伴自己美化喔

如下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>图片轮播的效果</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
      text-decoration: none;
    }
    body {
      padding: 20px;
    }
    #container {
      position: relative;
      width: 600px;
      height: 400px;
      border: 3px solid #333;
      overflow: hidden;
    }
    #list {
      position: absolute;
      z-index: 1;
      width: 4200px;
      height: 400px;
    }
    #list img {
      float: left;
      width: 600px;
      height: 400px;
    }
    #buttons {
      position: absolute;
      left: 250px;
      bottom: 20px;
      z-index: 2;
      height: 10px;
      width: 100px;
    }
    #buttons span {
      float: left;
      margin-right: 5px;
      width: 10px;
      height: 10px;
      border: 1px solid #fff;
      border-radius: 50%;
      background: #333;
      cursor: pointer;
    }
    #buttons .on {
      background: orangered;
    }
    .arrow {
      position: absolute;
      top: 180px;
      z-index: 2;
      display: none;
      width: 40px;
      height: 40px;
      font-size: 36px;
      font-weight: bold;
      line-height: 39px;
      text-align: center;
      color: #fff;
      background-color: RGBA(0, 0, 0, .3);
      cursor: pointer;
    }
    .arrow:hover {
      background-color: RGBA(0, 0, 0, .7);
    }
    #container:hover .arrow {
      display: block;
    }
    #prev {
      left: 20px;
    }
    #next {
      right: 20px;
    }
  </style>
</head>
<body>
<div id="container">
  <div id="list" style="left: -600px;">
    <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s018.jpg" alt="无缝滚动" />
    <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s018.jpg" alt="无缝滚动" />
    <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s019.jpg" alt="无缝滚动" />
    <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s020.jpg" alt="无缝滚动" />
    <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s021.jpg" alt="无缝滚动" />
    <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s022.jpg" alt="无缝滚动" />
    <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s022.jpg" alt="无缝滚动" />
  </div>
  <div id="buttons">
    <span index="1" class="on"></span>
    <span index="2"></span>
    <span index="3"></span>
    <span index="4"></span>
    <span index="5"></span>
  </div>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" id="prev" class="arrow"><</a>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" id="next" class="arrow">></a>
</div>
<script type="text/javascript">
  window.onload=function(){
    var container = document.getElementById("container");
    var list = document.getElementById("list");
    var buttons = document.getElementById("buttons").getElementsByTagName('span');
    var prev = document.getElementById("prev");
    var next = document.getElementById("next");
    var index = 1;
   function animate(offset){
     var newLeft = parseInt(list.style.left) + offset;
     list.style.left = newLeft + 'px';
     if(newLeft<-3000){
       list.style.left= -600 +'px';
     }
     if(newLeft>-600){
       list.style.left = -3000 + 'px';
     }
   }
   function buttonsshow(){
     for(var i =0; i<buttons.length;i++){
       if(buttons[i].className == 'on'){
         buttons[i].className='';
       }
     }
     buttons[index-1].className='on';
   }
   prev.onclick = function(){
     index-=1;
     if(index<1)
     {
       index=5;
     }
     buttonsshow();
     animate(600);
   };
   next.onclick = function(){
     index+=1;
     if(index>5){
       index=1;
     }
     buttonsshow();
     animate(-600);
   };
   //自动播放
   var timer;
    function play(){
      timer= setInterval(function(){
        next.onclick();
      },1000)
    }
    play();
    function stop(){
      clearInterval(timer);
    }
    container.onmouseover=stop;
    container.onmouseout=play;
for(var i=0; i<buttons.length; i++){
  ( function(i){
      buttons[i].onclick=function(){
        var clickindex= parseInt(this.getAttribute('index'));
        var offset = 600*(index-clickindex);
        animate(offset);
        index = clickindex;
        buttonsshow();
      }
  })(i);
}
  }
</script>
</body>
</html>

以上所述是小编给大家介绍的纯JS实现轮播图,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
基于jQuery的js分页代码
Jun 10 Javascript
jquery获得页面元素的坐标值实现思路及代码
Apr 15 Javascript
javascript动态设置样式style实例分析
May 13 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
Mar 13 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
如何获取vue单文件自身源码路径
May 06 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
Sep 11 Javascript
微信小程序实现日历签到
Sep 21 Javascript
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
javascript 操作cookies详解及实例
Feb 22 #Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 #Javascript
js实现简易垂直滚动条
Feb 22 #Javascript
微信小程序 引用其他js文件实现代码
Feb 22 #Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 #Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 #Javascript
JS实现一个简单的日历
Feb 22 #Javascript
You might like
聊天室php&amp;mysql(六)
2006/10/09 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python 开发的三种运行模式详细介绍
2017/01/18 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
对numpy中shape的深入理解
2018/06/15 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
python+requests接口自动化框架的实现
2020/08/31 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
What is EJB
2016/07/22 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
工程班组长岗位职责
2013/12/30 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
大学生励志演讲稿
2014/04/25 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript