js/jquery中实现图片轮播

一,jquery方法

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>图片轮播 jq(左右切换)</title>

<style type="text/css">

  body,div,ul,li,a,img{margin: 0;padding: 0;}

  ul,li{list-style: none;}

  a{text-decoration: none;}

  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}

  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}

  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}

  .imgList li{float:left;display: inline;}

  #prev,

  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}

  #prev{left: 10px;}

  #next{right: 10px;}

  #prev:hover,

  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}

  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}

  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}

  .infoList li{display: none;}

  .infoList .infoOn{display: inline;color: white;}

  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}

  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}

  .indexList .indexOn{background: red;font-weight: bold;color: white;}

</style>

</head>

<body>

  <div id="wrapper"><!-- 最外层部分 -->

    <div id="banner"><!-- 轮播部分 -->

      <ul class="imgList"><!-- 图片部分 -->

        <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>

      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>

      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>

      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>

      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>

      </ul>

      <img src="./img/prev.png" width="20px" height="40px" id="prev">

      <img src="./img/next.png" width="20px" height="40px" id="next">

      <div class="bg"></div> <!-- 图片底部背景层部分-->

      <ul class="infoList"><!-- 图片左下角文字信息部分 -->

        <li class="infoOn">puss in boots1</li>

        <li>puss in boots2</li>

        <li>puss in boots3</li>

        <li>puss in boots4</li>

        <li>puss in boots5</li>

      </ul>

      <ul class="indexList"><!-- 图片右下角序号部分 -->

        <li class="indexOn">1</li>

        <li>2</li>

        <li>3</li>

        <li>4</li>

        <li>5</li>

      </ul>

    </div>

  </div>

  <script type="text/javascript" src="./js/jquery.min.js"></script>

  <script type="text/javascript">

  var curIndex = 0, //当前index

      imgLen = $(".imgList li").length; //图片总数

     // 定时器自动变换2.5秒每次

  var autoChange = setInterval(function(){

    if(curIndex < imgLen-1){

      curIndex ++;

    }else{

      curIndex = 0;

    }

    //调用变换处理函数

    changeTo(curIndex);

  },2500);

   //左箭头滑入滑出事件处理

  $("#prev").hover(function(){

    //滑入清除定时器

    clearInterval(autoChange);

  },function(){

    //滑出则重置定时器

    autoChangeAgain();

  });

  //左箭头点击处理

  $("#prev").click(function(){

    //根据curIndex进行上一个图片处理

    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);

    changeTo(curIndex);

  });

  //右箭头滑入滑出事件处理

  $("#next").hover(function(){

    //滑入清除定时器

    clearInterval(autoChange);

  },function(){

    //滑出则重置定时器

    autoChangeAgain();

  });

  //右箭头点击处理

  $("#next").click(function(){

    curIndex = (curIndex < imgLen - 1) ? (++curIndex) : 0;

    changeTo(curIndex);

  });

  //对右下角按钮index进行事件绑定处理等

  $(".indexList").find("li").each(function(item){

    $(this).hover(function(){

      clearInterval(autoChange);

      changeTo(item);

      curIndex = item;

    },function(){

      autoChangeAgain();

    });

  });

  //清除定时器时候的重置定时器--封装

  function autoChangeAgain(){

      autoChange = setInterval(function(){

      if(curIndex < imgLen-1){

        curIndex ++;

      }else{

        curIndex = 0;

      }

    //调用变换处理函数

      changeTo(curIndex);

    },2500);

    }

  function changeTo(num){

    var goLeft = num * 400;

    $(".imgList").animate({left: "-" + goLeft + "px"},500);

    $(".infoList").find("li").removeClass("infoOn").eq(num).addClass("infoOn");

    $(".indexList").find("li").removeClass("indexOn").eq(num).addClass("indexOn");

  }

  </script>

</body>

</html>

--------------------------------------------------------------------------------------------------------------------------------------------------------------

二,原生JS方法

<!DOCTYPE html >

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>图片轮播 js原生(左右切换)</title>

<style type="text/css">

  body,div,ul,li,a,img{margin: 0;padding: 0;}

  ul,li{list-style: none;}

  a{text-decoration: none;}

  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}

  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}

  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}

  .imgList li{float:left;display: inline;}

  #prev,

  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}

  #prev{left: 10px;}

  #next{right: 10px;}

  #prev:hover,

  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}

  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}

  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}

  .infoList li{display: none;}

  .infoList .infoOn{display: inline;color: white;}

  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}

  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}

  .indexList .indexOn{background: red;font-weight: bold;color: white;}

</style>

</head>

<body>

  <div id="wrapper"><!-- 最外层部分 -->

    <div id="banner"><!-- 轮播部分 -->

      <ul class="imgList"><!-- 图片部分 -->

        <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>

      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>

      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>

      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>

      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>

      </ul>

      <img src="./img/prev.png" width="20px" height="40px" id="prev">

      <img src="./img/next.png" width="20px" height="40px" id="next">

      <div class="bg"></div> <!-- 图片底部背景层部分-->

      <ul class="infoList"><!-- 图片左下角文字信息部分 -->

        <li class="infoOn">puss in boots1</li>

        <li>puss in boots2</li>

        <li>puss in boots3</li>

        <li>puss in boots4</li>

        <li>puss in boots5</li>

      </ul>

      <ul class="indexList"><!-- 图片右下角序号部分 -->

        <li class="indexOn">1</li>

        <li>2</li>

        <li>3</li>

        <li>4</li>

        <li>5</li>

      </ul>

    </div>

  </div>

  <script type="text/javascript">

  var curIndex = 0, //当前index

      imgArr = getElementsByClassName("imgList")[0].getElementsByTagName("li"), //获取图片组

      imgLen = imgArr.length,

      infoArr = getElementsByClassName("infoList")[0].getElementsByTagName("li"), //获取图片info组

      indexArr = getElementsByClassName("indexList")[0].getElementsByTagName("li"); //获取控制index组

     // 定时器自动变换2.5秒每次

  var autoChange = setInterval(function(){

    if(curIndex < imgLen -1){

      curIndex ++;

    }else{

      curIndex = 0;

    }

    //调用变换处理函数

    changeTo(curIndex);

  },2500);

  //清除定时器时候的重置定时器--封装

  function autoChangeAgain(){

      autoChange = setInterval(function(){

      if(curIndex < imgLen -1){

        curIndex ++;

      }else{

        curIndex = 0;

      }

    //调用变换处理函数

      changeTo(curIndex);

    },2500);

    }

  //调用添加事件处理

  addEvent();

  //给左右箭头和右下角的图片index添加事件处理

 function addEvent(){

  for(var i=0;i<imgLen;i++){

    //闭包防止作用域内活动对象item的影响

    (function(_i){

    //鼠标滑过则清除定时器,并作变换处理

    indexArr[_i].onmouseover = function(){

      clearTimeout(autoChange);

      changeTo(_i);

      curIndex = _i;

    };

    //鼠标滑出则重置定时器处理

    indexArr[_i].onmouseout = function(){

      autoChangeAgain();

    };

     })(i);

  }

  //给左箭头prev添加上一个事件

  var prev = document.getElementById("prev");

  prev.onmouseover = function(){

    //滑入清除定时器

    clearInterval(autoChange);

  };

  prev.onclick = function(){

    //根据curIndex进行上一个图片处理

    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);

    changeTo(curIndex);

  };

  prev.onmouseout = function(){

    //滑出则重置定时器

    autoChangeAgain();

  };

   //给右箭头next添加下一个事件

  var next = document.getElementById("next");

  next.onmouseover = function(){

    clearInterval(autoChange);

  };

  next.onclick = function(){

    curIndex = (curIndex < imgLen - 1) ? (++curIndex) : 0;

    changeTo(curIndex);

  };

  next.onmouseout = function(){

    autoChangeAgain();

  };

}

  //左右切换处理函数

  function changeTo(num){

    //设置image

    var imgList = getElementsByClassName("imgList")[0];

    goLeft(imgList,num*400); //左移一定距离

    //设置image 的 info

    var curInfo = getElementsByClassName("infoOn")[0];

    removeClass(curInfo,"infoOn");

    addClass(infoArr[num],"infoOn");

    //设置image的控制下标 index

    var _curIndex = getElementsByClassName("indexOn")[0];

    removeClass(_curIndex,"indexOn");

    addClass(indexArr[num],"indexOn");

  }

  //图片组相对原始左移dist px距离

  function goLeft(elem,dist){

    if(dist == 400){ //第一次时设置left为0px 或者直接使用内嵌法 style="left:0;"

      elem.style.left = "0px";

    }

    var toLeft; //判断图片移动方向是否为左

    dist = dist + parseInt(elem.style.left); //图片组相对当前移动距离

    if(dist<0){ 

      toLeft = false;

      dist = Math.abs(dist);

    }else{

      toLeft = true;

    }

    for(var i=0;i<= dist/20;i++){ //这里设定缓慢移动,10阶每阶40px

      (function(_i){

        var pos = parseInt(elem.style.left); //获取当前left

        setTimeout(function(){

          pos += (toLeft)? -(_i * 20) : (_i * 20); //根据toLeft值指定图片组位置改变

          //console.log(pos);

          elem.style.left = pos + "px";

        },_i * 25); //每阶间隔50毫秒

      })(i);

    }

  }

  //通过class获取节点

  function getElementsByClassName(className){

    var classArr = [];

    var tags = document.getElementsByTagName(‘*‘);

    for(var item in tags){

      if(tags[item].nodeType == 1){

        if(tags[item].getAttribute(‘class‘) == className){

          classArr.push(tags[item]);

        }

      }

    }

    return classArr; //返回

  }

  // 判断obj是否有此class

  function hasClass(obj,cls){  //class位于单词边界

    return obj.className.match(new RegExp(‘(\\s|^)‘ + cls + ‘(\\s|$)‘));

   }

   //给 obj添加class

  function addClass(obj,cls){

    if(!this.hasClass(obj,cls)){

       obj.className += cls;

    }

  }

  //移除obj对应的class

  function removeClass(obj,cls){

    if(hasClass(obj,cls)){

      var reg = new RegExp(‘(\\s|^)‘ + cls + ‘(\\s|$)‘);

         obj.className = obj.className.replace(reg,‘‘);

    }

  }

  </script>

</body>

</html>

时间: 2024-10-06 14:53:53

js/jquery中实现图片轮播的相关文章

使用javascript,jquery实现的图片轮播功能

使用javascript,jquery实现的图片轮播功能本功能采用最基础的javascript和一些简单的jquery技术实现,易理解,以修改使用,代码简易,适合刚开始接触到网站开发的朋友们参考.可以直接把代码copy下来,放入一个html 文件即可,然后把jquery文件放在同一个文件夹下就可以了.文件下载地址:http://download.csdn.net/detail/xyytcs/5037545 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1

基于jQuery实现左右图片轮播(原理通用)

基于jQuery实现左右图片轮播(原理通用), 本文为大家分享了jQuery实现左右图片轮播代码,供大家参考,具体实现内容如下 运行效果图: 重点!!! 实现原理: 通过判断index值的大小变化来判断图片左移还是右移.通过控制图片的left值,来达到一个轮播的效果. 具体代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title>

js最简单焦点图片轮播代码

将下面代码保存为banner.js,在需要显示焦点图的地方调用该js即可. <script type="text/javascript" src="banner.js"></script> 注意:代码中图片路径修改为你自己的图片地址 var widths=725; //焦点图片宽 var w=0; var widthss=widths+w; var heights=295; //焦点图片高 var heightss=heightss+w; v

jQuery轻量级京东图片轮播代码等

http://sc.chinaz.com/jiaoben/jiaodiantu.html jQuery轻量级京东图片轮播代码 查看全图点击预览 顶(17)踩(4)报错评论(0)下载地址 更新时间:2016-07-11 09:18 类别:脚本 0 更多相关 jQuery缩略图数字按钮图片切换 所属专题:焦点图代码 脚本简介 jQuery轻量级京东图片轮播代码是一款带左右按钮控制,带缩略图的图片轮播代码.

JQuery slidebox实现图片轮播

jQuery图片轮播(焦点图)插件jquery.slideBox,简单设置下参数就可以多个多种动画效果,左右,上下,速度,还可指定默认显示第N张,点击的按钮在现代浏览中可以实现圆形或圆角效果,插件代码简洁,运行效率高,兼容IE6+,Chrome,Firefox,Opera,safari,具有良好用的用户体验效果.下面来看下使用方法吧. 1.引入核心文件 2.html代码 <div> <h3>一.左右轮播,滚动持续0.6秒,滚动延迟3秒,滚动效果swing,初始焦点第1张,点选按键自

JQuery插件之图片轮播插件–slideBox

来源:http://www.ido321.com/852.html 今天偶然发现了一个比較好用的图片轮播插件-slideBox 先看看效果:http://slidebox.sinaapp.com/ 代码例如以下 1: <!doctype html> 2: <html> 3: <head> 4: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

js原生代码之图片轮播

话不多说说,直接上代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="./public/js/jquery-1.11.2-min.js">&l

jQuery 插件 jSlider 图片轮播

有导航箭头,可以自动播放,可以循环播放. 官方网站 https://github.com/copthuy/jSlider <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"> <title>jSlider 图片轮播插件</title> <meta name="description" content

cssSlidy.js 响应式手机图片轮播

cssSlidy是一款支持手机移动端的焦点图轮播插件,支持标题设置,滑动动画,间隔时间等. 在线实例 实例演示 使用方法 <div id="slidy-container">      <figure id="slidy">          <a href='#' target='_blank'><img src="img/2.jpg" alt="jQuery.nicescroll美化滚动条&