js实现轮播图(简单滚动轮播)

冷不防 2021-11-10 09:30 783阅读 0赞

原理:

在页面上有一个可视区域(a),用来显示图片,还有一个放所有需要轮播的图片的区域(b) ,当执行操作时 ,b需要移动 ,移动一个a的宽度,使下一张图片显示,

需要实现一下效果:

1.自动播放

2.左右按钮切换

3.下标圆点切换

在这里插入图片描述

代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. </head>
  7. <style>
  8. *{
  9. margin: 0;
  10. padding: 0;
  11. list-style: none;
  12. }
  13. .box{
  14. width: 1000px;
  15. height: 400px;
  16. border: 1px solid red;
  17. position: relative;
  18. margin: 0 auto;
  19. overflow: hidden;
  20. }
  21. .box .list{
  22. width: 5000px;
  23. height: 100%;
  24. border: 1px solid yellow;
  25. position: relative;
  26. transition: left 1.5s linear; /*过度时间,即变化时间为1.5s*/
  27. }
  28. .box .list li{
  29. width: 1000px;
  30. height: 400px;
  31. float: left;
  32. }
  33. .box .list li img{
  34. width: 1000px;
  35. height: 400px;
  36. float: left;
  37. }
  38. .box .btn{
  39. width: 50px;
  40. height: 100px;
  41. position: absolute;
  42. top: 150px;
  43. }
  44. .box .left{
  45. left: 0;
  46. }
  47. .box .right{
  48. right: 0;
  49. }
  50. .box .page{
  51. width: 100%;
  52. height: 30px;
  53. position: relative;
  54. bottom: 30px;
  55. left: 0;
  56. text-align: center;
  57. }
  58. .box .page li{
  59. width: 15px;
  60. height: 15px;
  61. border-radius: 50%;
  62. background: #000;
  63. display: inline-block;
  64. margin: 0 20px;
  65. }
  66. .box .page .on{
  67. background: #fff;
  68. }
  69. </style>
  70. <body>
  71. <!-- 可视区域 -->
  72. <div class="box">
  73. <!-- 图片运动区域 -->
  74. <ul class="list">
  75. <li><img src="https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=486958716,243120904&fm=26&gp=0.jpg" alt=""></li>
  76. <li><img src="https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3241799622,2404142078&fm=26&gp=0.jpg" alt=""></li>
  77. <li><img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3249712317,2640666993&fm=26&gp=0.jpg" alt=""></li>
  78. </ul>
  79. <!-- 左右按钮 -->
  80. <input type="button" value="<" class="btn left">
  81. <input type="button" value=">" class="btn right">
  82. <!-- 远点区域 -->
  83. <ol class="page">
  84. <li class=" on "></li>
  85. <li></li>
  86. <li></li>
  87. </ol>
  88. </div>
  89. <script type="text/javascript">
  90. var box = document.querySelector('.box');//获取可视区域的盒子
  91. var list = document.querySelector('.list');//获取放图片的盒子,这个盒子是要移动的
  92. var len = document.querySelectorAll('.list li').length;//获取滑块的个数 即几张图片
  93. var liwidth = document.querySelector('.list li').offsetWidth;//获取放每一个图片的li的宽度
  94. var pag = document.querySelector('.page');//获取下面圆圈容器
  95. var pageli = document.querySelectorAll('.page li');//获取圆圈个数
  96. var leftbtn = document.querySelector('.left');//获取左按钮
  97. var rightbtn = document.querySelector('.right');//获取右按钮
  98. var count = 0;//规定当前的位置 (当前显示图片的序号,0,1,2)
  99. // 右按钮的点击事件---点击一下 图片向左移动一张
  100. rightbtn.onclick=function(){
  101. count++;
  102. if(count>=len){
  103. count = 0;
  104. }
  105. /*
  106. 当移动到第一张图片时 ul向左移动0px 即 0 * 1000px(可视区域的宽度)
  107. 当移动到第二张图片时 ul向左移动1000px 即 1 * 1000px (count * liwidth )
  108. 当移动到第三张图片时 ul向左移动2000px 即 2 * 1000px (count * liwidth )
  109. */
  110. list.style.left=-liwidth*count+'px';
  111. //下面圆圈跟着图片的改变 而改变----从黑圈变成白圈
  112. for(var i=0;i<pageli.length;i++){
  113. pageli[i].className=''; //清除所有的类样式
  114. }
  115. pageli[count].className='on'; //加上名为on 的类样式
  116. }
  117. // 左边按钮的点击事件
  118. leftbtn.onclick=function(){
  119. count--;
  120. if(count<=-1){
  121. count=len-1;
  122. }
  123. list.style.left=-liwidth*count+'px';
  124. for(var i=0;i<pageli.length;i++){
  125. pageli[i].className='';
  126. }
  127. pageli[count].className='on';
  128. }
  129. for(var i=0;i<pageli.length;i++){
  130. pageli[i].setAttribute('date-index',i);//自定义属性并赋予page中的每一个li
  131. // 每个小圆点的点击事件
  132. pageli[i].onclick=function(){
  133. // 将点击的小圆点的自定义属性赋予count
  134. count = this.getAttribute('date-index');
  135. list.style.left=-liwidth*count+'px';
  136. for(var i=0;i<pageli.length;i++){
  137. pageli[i].className='';
  138. }
  139. pageli[count].className='on';
  140. }
  141. }
  142. //添加定时器---实现自动轮播
  143. var timer = setInterval(function(){
  144. rightbtn.onclick();
  145. },3000)
  146. // 鼠标移出时 添加定时器(启动)
  147. box.onmouseleave = function(){
  148. timer = setInterval(function(){
  149. rightbtn.onclick();
  150. },3000)
  151. }
  152. // 鼠标移入时 停止定时器(清除)
  153. box.onmouseenter = function(){
  154. clearInterval(timer);
  155. }
  156. </script>
  157. </body>
  158. </html>

效果:

在这里插入图片描述

发表评论

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

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

相关阅读