练习6_轮播图.html 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. /* css reset */
  9. body {
  10. margin: 0;
  11. }
  12. li {
  13. list-style: none;
  14. }
  15. ul {
  16. margin: 0;
  17. padding: 0;
  18. }
  19. html {
  20. background-color: black;
  21. }
  22. /* 工具类 */
  23. .clearfix::after {
  24. content: "";
  25. display: block;
  26. clear: both;
  27. }
  28. .container {
  29. width: 600px;
  30. height: 200px;
  31. border: 4px solid #fff;
  32. margin: 100px auto;
  33. position: relative;
  34. }
  35. .container .swiper-img img {
  36. width: 600px;
  37. height: 200px;
  38. display: none;
  39. }
  40. .container .swiper-img .active {
  41. display: block;
  42. }
  43. /* 按钮区域 */
  44. .container .swiper-btn {
  45. position: absolute;
  46. bottom: 10px;
  47. left: 0;
  48. width: calc(100% - 40px);
  49. padding: 0 20px;
  50. }
  51. .container .swiper-btn li {
  52. color: #fff;
  53. display: inline-block;
  54. width: 20px;
  55. height: 20px;
  56. border-radius: 10px;
  57. background-color: #f90;
  58. text-align: center;
  59. line-height: 20px;
  60. margin: 0 3px;
  61. }
  62. .container .swiper-btn .left-btn {
  63. float: left;
  64. }
  65. .container .swiper-btn .right-btn {
  66. float: right;
  67. }
  68. .container .right-btn .active {
  69. background-color: red;
  70. }
  71. </style>
  72. </head>
  73. <body>
  74. <div class="container">
  75. <div class="swiper-img">
  76. <img class="s-img active" src="./image/image.png" alt="图片">
  77. <img class="s-img" src="./image/image1.png" alt="图片">
  78. <img class="s-img" src="./image/image2.png" alt="图片">
  79. <img class="s-img" src="./image/image3.png" alt="图片">
  80. <img class="s-img" src="./image/image4.png" alt="图片">
  81. </div>
  82. <div class="swiper-btn clearfix">
  83. <div class="left-btn">
  84. <ul>
  85. <li class="arr-btn">&lt;</li>
  86. <li class="arr-btn">&gt;</li>
  87. </ul>
  88. </div>
  89. <div class="right-btn">
  90. <ul>
  91. <li class="num-btn active">1</li>
  92. <li class="num-btn">2</li>
  93. <li class="num-btn">3</li>
  94. <li class="num-btn">4</li>
  95. <li class="num-btn">5</li>
  96. </ul>
  97. </div>
  98. </div>
  99. </div>
  100. <script>
  101. // 获取所有轮播的图片
  102. var aImg = document.getElementsByClassName("s-img");
  103. // 获取所有数字按钮
  104. var aNumBtn = document.getElementsByClassName("num-btn");
  105. // 获取左右按钮
  106. var leftBtn = document.getElementsByClassName("arr-btn")[0];
  107. var rightBtn = document.getElementsByClassName("arr-btn")[1];
  108. // 获取整个轮播图区域
  109. var oSwiper = document.getElementsByClassName("container")[0];
  110. // 定义全局变量放置当前索引值
  111. var nowIndex = 0;
  112. // 定义定时函数全局变量
  113. var timer = null;
  114. // 定义切换轮播图函数
  115. function changeSwiper(index) {
  116. // 清除状态
  117. for (var i = 0; i < aNumBtn.length; i++) {
  118. // 清除所有数字按钮的选中状态
  119. aNumBtn[i].classList.remove("active");
  120. // 清除所有轮播图片的选中状态
  121. aImg[i].classList.remove("active");
  122. }
  123. // 给当前选中的数字按钮加上选中状态
  124. aNumBtn[index].classList.add("active");
  125. // 给当前选中的轮播图片加上选中状态
  126. aImg[index].classList.add("active");
  127. // 更新当前索引值
  128. nowIndex = index;
  129. }
  130. // 给数字按钮绑定事件
  131. for (var i = 0; i < aNumBtn.length; i++) {
  132. // 给每个数字按钮绑定一个索引值
  133. aNumBtn[i].index = i;
  134. aNumBtn[i].onmouseover = function () {
  135. changeSwiper(this.index);
  136. }
  137. }
  138. // 绑定向右按钮事件
  139. rightBtn.onclick = function () {
  140. // 判断数字是否是最后一个 如果是的从第一个开始
  141. if (nowIndex == 4) {
  142. changeSwiper(0);
  143. } else {
  144. changeSwiper(nowIndex + 1);
  145. }
  146. }
  147. // 绑定向左按钮事件
  148. leftBtn.onclick = function () {
  149. // 判断数字是否是第一个 如果是的从最后一个开始
  150. if (nowIndex == 0) {
  151. changeSwiper(4);
  152. } else {
  153. changeSwiper(nowIndex - 1);
  154. }
  155. }
  156. // 实现每隔1秒钟自动切换一次
  157. function autoChange() {
  158. timer = setInterval(function () {
  159. if (nowIndex == 4) {
  160. changeSwiper(0);
  161. } else {
  162. changeSwiper(nowIndex + 1);
  163. }
  164. }, 1000);
  165. }
  166. autoChange();
  167. // 实现鼠标移入轮播图区域停止自动切换
  168. oSwiper.onmouseenter = function () {
  169. clearInterval(timer);
  170. }
  171. // 实现鼠标移出轮播图区域开始自动切换
  172. oSwiper.onmouseleave = function () {
  173. autoChange();
  174. }
  175. // 给数字按钮绑定事件
  176. // for(var i=0;i<aNumBtn.length;i++){
  177. // // 给每个数字按钮绑定一个索引值
  178. // aNumBtn[i].index = i;
  179. // aNumBtn[i].onmouseover = function(){
  180. // // 清除状态
  181. // for(var j =0;j<aNumBtn.length;j++){
  182. // // 清除所有数字按钮的选中状态
  183. // aNumBtn[j].classList.remove("active");
  184. // // 清除所有轮播图片的选中状态
  185. // aImg[j].classList.remove("active");
  186. // }
  187. // // 给当前选中的数字按钮加上选中状态
  188. // this.classList.add("active");
  189. // // 给当前选中的轮播图片加上选中状态
  190. // aImg[this.index].classList.add("active");
  191. // // 更新当前索引值
  192. // nowIndex = this.index;
  193. // }
  194. // }
  195. </script>
  196. </body>
  197. </html>