简单轮播图2(左右)

电玩女神 2022-06-09 12:28 292阅读 0赞

HTML部分

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>轮播图3</title>
  6. <link rel="stylesheet" type="text/css" href="../css/reset.css" />
  7. <link rel="stylesheet" type="text/css" href="../css/轮播图3.css" />
  8. <script type="text/javascript" src="../js/basics.js"></script>
  9. <script type="text/javascript" src="../js/轮播图3.js"></script>
  10. </head>
  11. <body>
  12. <div id="box">
  13. <ul class="clear" id="list">
  14. <li>
  15. <img src="../img/1504579720226.jpg" />
  16. </li>
  17. <li>
  18. <img src="../img/1504579756992.jpg" />
  19. </li>
  20. <li>
  21. <img src="../img/1504579814977.jpg" />
  22. </li>
  23. <li>
  24. <img src="../img/1504579832741.jpg" />
  25. </li>
  26. <li>
  27. <img src="../img/1504579877857.jpg" />
  28. </li>
  29. </ul>
  30. <div id="toPrev"><</div>
  31. <div id="toNext">></div>
  32. <div id="sortNum">
  33. <ul>
  34. <li class="active">1</li>
  35. <li>2</li>
  36. <li>3</li>
  37. <li>4</li>
  38. <li>5</li>
  39. </ul>
  40. </div>
  41. </div>
  42. </body>
  43. </html>

CSS部分

  1. #box{ width: 600px; height: 400px; margin: 100px auto; border: solid 1px #2AABD2; position: relative; overflow: hidden; }
  2. #box ul{ height: 500px; position: absolute; top: 0; left: 0; }
  3. #box #list li{ float: left; }
  4. #box #list li img{ height: 400px; width: 600px; display: block; }
  5. #toPrev{ height: 100px; width: 50px; background: black; opacity: 0.3; filter: alpha(opacity = 30); position: absolute; left: 0; top: 50%; margin-top: -50px; color: #FFF; font-size: 40px; text-align: center; line-height: 100px; cursor: pointer; }
  6. #toNext{ height: 100px; width: 50px; background: black; opacity: 0.3; filter: alpha(opacity = 30); position: absolute; right: 0; top: 50%; margin-top: -50px; color: #FFF; font-size: 40px; text-align: center; line-height: 100px; cursor: pointer; }
  7. #sortNum{ position: absolute; right: -43px; bottom: 20px; width: 200px; height: 20px; }
  8. #sortNum ul li{ float: left; height: 20px; width: 20px; background: black; opacity: 0.3; filter: alpha(opacity = 30); color: #FFFFFF; text-align: center; line-height: 20px; margin-right: 5px; cursor: default; }
  9. #sortNum ul .active{ background: yellow; opacity: 1; filter: alpha(opacity = 100); color: black; }

js部分

  1. window.onload = function(){
  2. var box = $('box');
  3. var toPrevBtn = $('toPrev');
  4. var toNextBtn = $('toNext');
  5. var oUl = $('list');
  6. oUl.appendChild(oUl.children[0].cloneNode(true));
  7. var lis = oUl.getElementsByTagName('li');
  8. var liWidth = lis[0].offsetWidth;
  9. oUl.style.width = lis.length*liWidth + 'px';
  10. var sortNumDiv = $('sortNum');
  11. var nLis = sortNumDiv.getElementsByTagName('li');
  12. var i = 0;
  13. var timer = setInterval(function(){
  14. i++;
  15. move();
  16. },1000);
  17. function move(){
  18. if(i < 0){ //如果图片移动到第一张之前
  19. oUl.style.left = -liWidth*(lis.length-1)+'px';
  20. i = lis.length-2;
  21. }
  22. if(i == lis.length){ //如果图片移动到最后一张之后
  23. oUl.style.left = 0 + 'px';
  24. i = 1;
  25. }
  26. animate(oUl,'left',liWidth*-i);
  27. if(i == nLis.length){
  28. nLis[0].className = 'active';
  29. for(var j = 1;j < nLis.length;j++){
  30. nLis[j].className = '';
  31. }
  32. }else{
  33. for(var j = 0;j < nLis.length;j++){
  34. if(j != i){
  35. nLis[j].className = '';
  36. }else{
  37. nLis[j].className = 'active';
  38. }
  39. }
  40. }
  41. }
  42. toPrevBtn.onclick = function(){
  43. i--;
  44. move();
  45. };
  46. toNextBtn.onclick = function(){
  47. i++;
  48. move();
  49. };
  50. //鼠标放在数字键上
  51. for(var k = 0;k < nLis.length;k++){
  52. nLis[k].index = k;
  53. nLis[k].onmouseover = function(){
  54. i = this.index;
  55. move();
  56. };
  57. }
  58. // //鼠标放在数字键上二(不能让这样用因为排序和包含块的时间会子鼠标移除排序框时,多次触发,导致混乱)
  59. // for(var k = 0;k < nLis.length;k++){
  60. // nLis[k].index = k;
  61. // nLis[k].onmouseover = function(){
  62. // i = this.index;
  63. // move();
  64. // clearInterval(timer);
  65. // };
  66. //
  67. // nLis[k].onmouseout = function(){
  68. //
  69. // timer = setInterval(function(){
  70. // i++;
  71. // move();
  72. // },1000);
  73. // };
  74. // }
  75. //
  76. //鼠标放在盒子上停止运动,离开继续运动
  77. box.onmousemove = function(){
  78. clearInterval(timer);
  79. };
  80. box.onmouseout = function(){
  81. timer = setInterval(function(){
  82. i++;
  83. move();
  84. },1000);
  85. };
  86. //
  87. };

效果
图片会轮播,点击序号框会滑到指定图片,点击向左向右可翻页

注意点:
1、克隆第一子节点,ul设置为相对定位,ul的宽度为所有li宽度之和
2、当图片被点击到第一张图片之前的位置,采用了非动画的方式直接将ul的left的值设置为-(图片的张数-1)*图片宽度,符号表示向右移动(既移动到最后一张图片的位置),然后将i的值设置为i-2既从倒数第二张图片

3、如果移动到最后一张图片之后则将ul的left值设为0,将i设置为1,既从第二张图片开始轮播
4、排序框的改变这里是通过设置元素的class名实现的
5、因为这里的向左和向右的div是设置在box上的,而在box上设置了鼠标移入就停止定时器,所以点击向左和向右时不需要再让定时器停止。如他们设置在box的外部,则需要设置停止定时器,并在离开时在开启
6、向左既将i的值减小,向右既将i的值增大,然后再继续执行

发表评论

表情:
评论列表 (有 0 条评论,292人围观)

还没有评论,来说两句吧...

相关阅读

    相关 简单

    这篇文章侧重于js方面在轮播时的应用, 这里先交代一下大致的思路: 主要通过对style.left以及对定时器的使用来实现轮播效果 做一个简单的轮播图,我们要解决的主

    相关 简单

    最近一直在研究Ajax与后台的交互,今晚看了一下轮播图如何与结合Ajax与后台进行实时的数据连接。 首先我讲一下我做轮播图的思路吧。首先html的代码如下: <d