原生js实现轮播图

本文实例为大家分享了js轮播图的具体实现代码,供大家参考,具体内容如下

CSS:

<style>
  * {
    margin: 0;
    padding: 0;
    list-style: none;
    text-decoration: none;
    font-family: "Microsoft YaHei", Arial, Helvetica, sans-serifsans-serif;
  } 

  body {
    background: #eee;
  } 

  #Bigbox {
    width: 720px;
    height: 420px;
    border: 1px solid #333;
    margin: 60px auto;
  } 

  #Box {
    width: 700px;
    height: 400px;
    position: relative;
    overflow: hidden;
    top: 10px;
    left: 10px;
  } 

  #Ul {
    height: 400px;
    position: absolute;
    top: 0;
    left: 0;
  } 

  #Ul li {
    width: 700px;
    height: 400px;
    float: left;
  } 

  #Left {
    width: 60px;
    height: 50px;
    border-radius: 30%;
    background: rgba(96, 96, 96, .5);
    position: absolute;
    top: 50%;
    left: 0;
    margin-top: -25px;
    color: #fff;
    line-height: 50px;
    text-align: center;
    cursor: pointer;
    font-size: 20px;
    display: none;
  } 

  #Right {
    width: 60px;
    height: 50px;
    border-radius: 30%;
    background: rgba(96, 96, 96, .5);
    position: absolute;
    top: 50%;
    right: 0;
    margin-top: -25px;
    color: #fff;
    line-height: 50px;
    text-align: center;
    cursor: pointer;
    font-size: 20px;
    display: none;
  }
</style>

html:

<div id="Bigbox">
    <div id="Box">
      <ul id="Ul">
        <li>
          1<img src="img/1.jpg" width="100%" height="100%">
        </li>
        <li>
          2<img src="img/2.jpg" width="100%" height="100%">
        </li>
        <li>
          3<img src="img/3.jpg" width="100%" height="100%">
        </li>
        <li>
          4<img src="img/4.jpg" width="100%" height="100%">
        </li>
        <li>
          5<img src="img/5.jpg" width="100%" height="100%">
        </li>
        <li>
          6<img src="img/6.jpg" width="100%" height="100%">
        </li>
        <li>
          7<img src="img/7.jpg" width="100%" height="100%">
        </li>
        <li>
          8<img src="img/8.jpg" width="100%" height="100%">
        </li>
        <li>
          9<img src="img/9.jpg" width="100%" height="100%">
        </li>
        <li>
          10<img src="img/10.jpg" width="100%" height="100%">
        </li>
      </ul>
      <div id="Left" onselectstart="return false">左</div>
      <div id="Right" onselectstart="return false">右</div>
    </div>
 </div>

js:

<script>
 window.onload = function() {
   var n = 0;
   var timer = null;
   var timer1 = null;
   var timer2 = null;
   var timer3 = null;
   var oDiv = document.getElementById('Box')
   var oUl = document.getElementById('Ul')
   var oLi = oUl.getElementsByTagName('li')
    //获取div宽度
   var oDivWidth = getStyle(oDiv, 'width').split('px')[0] //复制oUl的innerHTML
   oUl.innerHTML += oUl.innerHTML
    //设置ul宽度
   oUl.style.width = oLi.length * oDivWidth + 'px'
    //获取ul宽度
   var oUlWidth = getStyle(oUl, 'width').split('px')[0] //封装获取非行间样式函数
   function getStyle(obj, sName) {
    if (obj.currentStyle) {
     return obj.currentStyle[sName];
    } else {
     return getComputedStyle(obj, false)[sName];
    }
   }
   //执行函数
   clearInterval(timer3)
   timer3 = setInterval(function() {
     Run()
    }, 2000)
    //封装运动函数
   function Run() {
    clearInterval(timer)
    timer = setInterval(function() {
     n -= 20;
     oUl.style.left = n + 'px'
     if (n % oDivWidth == 0) {
      clearInterval(timer3)
      clearInterval(timer)
      clearInterval(timer1)
      timer1 = setTimeout(function() {
       Run()
      }, 2000)
     }
     if (n <= -oUlWidth / 2) {
      oUl.style.left = 0;
      n = 0;
      clearInterval(timer3)
      clearInterval(timer)
      clearInterval(timer1)
      timer1 = setTimeout(function() {
       Run()
      }, 2000)
     }
    }, 30)
   } 

   //鼠标移入停止滚动
   oDiv.onmouseover = function() {
    Left.style.display = 'block'
    Right.style.display = 'block'
    clearInterval(timer3)
    clearInterval(timer2)
    timer2 = setInterval(function() {
     if (n % oDivWidth == 0) {
      clearInterval(timer)
      clearInterval(timer1)
     }
    }, 30) 

   } 

   //鼠标移出继续执行
   oDiv.onmouseout = function() {
    Left.style.display = 'none'
    Right.style.display = 'none'
    clearInterval(timer3)
    clearInterval(timer2)
    clearInterval(timer1)
    timer1 = setTimeout(function() {
     Run()
    }, 2000)
   } 

   //向左
   Left.onclick = function() {
    //清除所有定时器
    clearInterval(timer)
    clearInterval(timer1)
    clearInterval(timer2)
    clearInterval(timer3)
    timer = setInterval(function() {
     n -= 50;
     oUl.style.left = n + 'px'
     if (n % oDivWidth == 0) {
      clearInterval(timer)
     }
     if (n <= -oUlWidth / 2) {
      oUl.style.left = 0;
      n = 0;
     }
    }, 30)
   } 

   //向右
   Right.onclick = function() {
    clearInterval(timer)
    clearInterval(timer1)
    clearInterval(timer2)
    clearInterval(timer3)
    if (n == 0) {
     n = -oUlWidth / 2
    }
    clearInterval(timer)
    timer = setInterval(function() {
     n += 50;
     oUl.style.left = n + 'px'
     if (n % oDivWidth == 0) {
      clearInterval(timer)
     } 

    }, 30)
   }
  }
</script> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 原生js实现网易轮播图效果

    一.实现效果图 二.分析布局 主盒子里分上下两个小盒子(1和2). 包含图片的盒子占两张图片的宽(3),处于上盒子中,当前图片在上盒子(1)中,其它图片在盒子(3)的右侧等待播放. 下边的盒子(2)包括了六个小方块及定位在主盒子上的两个箭头. 三.html部分   <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>wa

  • 原生js实现焦点轮播图效果

    原生js焦点轮播图主要注意这几点: 1.前后按钮实现切换,同时注意辅助图 2.中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index 3.间隔调用与无限轮播. 4.注意在动画时要停止按钮,或者说上一个动画完毕下一个动画才能执行 5.另外在切换图片的时候,底部的Button动画效果,是从底部开始往上升的,要用到transform:scale()和transform-origin:0 100%两个转换属性,代码如下 <!DOCTYPE html> <html&g

  • 支持移动端原生js轮播图

    直接上代码,自行复制粘贴,本人是新手,欢迎指正. <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>轮播图</title> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-sca

  • 原生js实现无缝轮播图效果

    话不多说,请看代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>无缝轮播图-原生js封装</title> <link rel="shortcut icon" href="../public/image/favicon.ico" type="ima

  • js原生代码实现轮播图的实例讲解

    轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同.我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好.在这里分享一下,用js原生代码,实现轮播图的常见效果!思路比较清晰,而且可重复性高,也几乎包含了现在网页上轮播实现的所有效果! 一.现在我们来看看它是什么样的效果,截一张图给大家看: 二.无论我们做什么特效,都要记住一个原则,先写静态的代码,再做动态的处理! 我们的轮播静态效果用html和css来实现: 1.为了代码的规范性,

  • 原生js实现移动开发轮播图、相册滑动特效

    使用方法: 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" href="css/photoSlider.min.css" /> <script src="js/photoSlider.min.js" type="text/javascript" charset="utf-8"></script

  • 原生JS实现层叠轮播图

    又是轮播?没错,换个样式玩轮播. HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>wtf</title> </head> <body> <div class="container"> <div class="box&quo

  • 原生JS轮播图插件

    代码分两个部分:1.HTML部分,根据注释处理即可:2.play.js插件部分,引到HTML里面即可. 1.HTML部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style>/*style标签及其内的内容,在实际项目中可以不要*/ * { margin: 0; p

  • 原生js实现旋转木马轮播图效果

    话不多说,请看代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>旋转木马特效</title> <style type="text/css"> *{margin: 0;padding: 0;list-style:none;} #demo{width:1200px;mar

  • 原生js实现轮播图的示例代码

    很多网站上都有轮播图,但却很难找到一个系统讲解的,因此这里做一个简单的介绍,希望大家都能有所收获,如果有哪些不正确的地方,希望大家可以指出. 原理: 将一些图片在一行中平铺,然后计算偏移量再利用定时器实现定时轮播. 步骤一:建立html基本布局 如下所示: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>轮播图</title> </hea

  • 原生js实现无限循环轮播图效果

    知识要点 1.实现无限循环的原理: 以偏移的距离来判断是否跳回第一张和最后一张 也可以利用循环判断图片的当前索引值 var newLeft=parseInt(list.style.left)+offset;//当前的偏移量+下一次的偏移量=新的偏移量 list.style.left=newLeft+"px";//当前的偏移值=新的偏移值 //以偏移的距离来判断是否跳回第一张和最后一张 if(newLeft>-600){ list.style.left=-3000+"px

  • 原生JS京东轮播图代码

    本文实例为大家分享了JS轮播图的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="css/reset.css" rel="external

随机推荐