练习6_轮播图.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  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. <link rel="stylesheet" href="https://at.alicdn.com/t/c/font_5060986_y3nqnoflco.css">
  8. <style>
  9. /* css reset */
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. }
  14. li {
  15. list-style: none;
  16. }
  17. .container {
  18. width: 1226px;
  19. height: 460px;
  20. margin: 100px auto;
  21. position: relative;
  22. }
  23. .img-list {
  24. position: absolute;
  25. top: 0;
  26. left: 0;
  27. }
  28. .img-list img {
  29. width: 100%;
  30. }
  31. .img-list .img-list-item {
  32. display: none;
  33. }
  34. .img-list .active {
  35. display: block;
  36. }
  37. .control-content {
  38. position: absolute;
  39. top: 0;
  40. left: 0;
  41. width: 100%;
  42. height: 100%;
  43. /* background-color: rgba(0,0,0,0.5); */
  44. }
  45. .control-content .left-nav {
  46. width: 234px;
  47. height: 100%;
  48. float: left;
  49. background-color: rgba(105, 101, 101, .6);
  50. }
  51. .control-content .left-nav ul {
  52. padding: 20px 0;
  53. }
  54. .control-content .left-nav ul li {
  55. padding-left: 30px;
  56. color: #fff;
  57. height: 42px;
  58. line-height: 42px;
  59. font-size: 14px;
  60. }
  61. .control-content .left-nav ul li:hover {
  62. background-color: #ff6700;
  63. cursor: pointer;
  64. }
  65. .control-content .left-nav ul li .iconfont {
  66. float: right;
  67. margin-right: 30px;
  68. }
  69. .control-content .right-btn {
  70. width: 992px;
  71. float: left;
  72. height: 100%;
  73. /* background-color: red; */
  74. position: relative;
  75. }
  76. .control-content .arr-btn {
  77. height: 69px;
  78. width: 100%;
  79. /* background-color: blue; */
  80. position: absolute;
  81. top: 50%;
  82. margin-top: -35px;
  83. }
  84. .control-content .arr-btn .arr-left,
  85. .control-content .arr-btn .arr-right {
  86. width: 41px;
  87. height: 100%;
  88. background-image: url("./img/icon-slides.png");
  89. }
  90. .control-content .arr-btn .arr-left {
  91. float: left;
  92. background-position: -84px 0;
  93. }
  94. .control-content .arr-btn .arr-left:hover {
  95. background-position: 0 0;
  96. cursor: pointer;
  97. }
  98. .control-content .arr-btn .arr-right {
  99. float: right;
  100. background-position: -125px 0;
  101. }
  102. .control-content .arr-btn .arr-right:hover {
  103. background-position: -42px 0;
  104. cursor: pointer;
  105. }
  106. .control-content .dot-btn .dot-btn-item {
  107. width: 6px;
  108. height: 6px;
  109. border: 2px solid #fff;
  110. border-radius: 50%;
  111. background-color: rgba(0, 0, 0, .4);
  112. border-color: hsla(0, 0%, 100%, .3);
  113. float: left;
  114. margin: 0 3px;
  115. }
  116. .control-content .dot-btn .dot-btn-item:hover {
  117. background-color: hsla(0, 0%, 100%, .3);
  118. border-color: rgba(0, 0, 0, .4);
  119. cursor: pointer;
  120. }
  121. .control-content .dot-btn .active {
  122. background-color: hsla(0, 0%, 100%, .3);
  123. border-color: rgba(0, 0, 0, .4);
  124. }
  125. .control-content .dot-btn {
  126. position: absolute;
  127. right: 50px;
  128. bottom: 30px;
  129. }
  130. </style>
  131. </head>
  132. <body>
  133. <div class="container">
  134. <div class="img-list">
  135. <ul>
  136. <li class="img-list-item active">
  137. <img src="./img/slider1.jpg" alt="slider1">
  138. </li>
  139. <li class="img-list-item ">
  140. <img src="./img/slider2.jpg" alt="slider2">
  141. </li>
  142. <li class="img-list-item">
  143. <img src="./img/slider3.jpg" alt="slider3">
  144. </li>
  145. <li class="img-list-item">
  146. <img src="./img/slider4.jpg" alt="slider4">
  147. </li>
  148. <li class="img-list-item">
  149. <img src="./img/slider5.jpg" alt="slider5">
  150. </li>
  151. <li class="img-list-item">
  152. <img src="./img/slider6.jpg" alt="slider6">
  153. </li>
  154. </ul>
  155. </div>
  156. <div class="control-content">
  157. <div class="left-nav">
  158. <ul>
  159. <li>
  160. <span class="nav-text">手机</span>
  161. <i class="iconfont icon-arrow"></i>
  162. </li>
  163. <li>
  164. <span class="nav-text">电脑</span>
  165. <i class="iconfont icon-arrow"></i>
  166. </li>
  167. <li>
  168. <span class="nav-text">平板</span>
  169. <i class="iconfont icon-arrow"></i>
  170. </li>
  171. <li>
  172. <span class="nav-text">笔记本</span>
  173. <i class="iconfont icon-arrow"></i>
  174. </li>
  175. <li>
  176. <span class="nav-text">手机</span>
  177. <i class="iconfont icon-arrow"></i>
  178. </li>
  179. <li>
  180. <span class="nav-text">手机</span>
  181. <i class="iconfont icon-arrow"></i>
  182. </li>
  183. <li>
  184. <span class="nav-text">手机</span>
  185. <i class="iconfont icon-arrow"></i>
  186. </li>
  187. <li>
  188. <span class="nav-text">手机</span>
  189. <i class="iconfont icon-arrow"></i>
  190. </li>
  191. <li>
  192. <span class="nav-text">手机</span>
  193. <i class="iconfont icon-arrow"></i>
  194. </li>
  195. <li>
  196. <span class="nav-text">手机</span>
  197. <i class="iconfont icon-arrow"></i>
  198. </li>
  199. </ul>
  200. </div>
  201. <div class="right-btn">
  202. <div class="arr-btn">
  203. <div class="arr-left"></div>
  204. <div class="arr-right"></div>
  205. </div>
  206. <div class="dot-btn">
  207. <ul>
  208. <li class="dot-btn-item active"></li>
  209. <li class="dot-btn-item"></li>
  210. <li class="dot-btn-item"></li>
  211. <li class="dot-btn-item"></li>
  212. <li class="dot-btn-item"></li>
  213. <li class="dot-btn-item"></li>
  214. </ul>
  215. </div>
  216. </div>
  217. </div>
  218. </div>
  219. <script>
  220. // 获取圆点按钮元素
  221. var aDotBtns = document.getElementsByClassName("dot-btn-item");
  222. // 获取图片列表元素
  223. var aImgItems = document.getElementsByClassName("img-list-item");
  224. // 获取向右按钮
  225. var oArrRight = document.getElementsByClassName("arr-right")[0];
  226. // 获取向左按钮
  227. var oArrLeft = document.getElementsByClassName("arr-left")[0];
  228. // 获取整个轮播图区域
  229. var oContainer = document.getElementsByClassName("container")[0];
  230. // 定义全局变量 当前是第几张图片 的索引
  231. var curIndex = 0;
  232. // 定义定时器变量
  233. var timer = null;
  234. // 定义切换图片函数
  235. function switchImg(index) {
  236. // 清除所有圆点按钮的选中状态
  237. for (var j = 0; j < aDotBtns.length; j++) {
  238. aDotBtns[j].classList.remove("active");
  239. aImgItems[j].classList.remove("active");
  240. }
  241. // 给当前按钮添加选中状态
  242. aDotBtns[index].classList.add("active");
  243. // 给相对应图片添加选中状态
  244. aImgItems[index].classList.add("active");
  245. }
  246. // 遍历所有圆点按钮绑定点击事件
  247. for (var i = 0; i < aDotBtns.length; i++) {
  248. aDotBtns[i].index = i; // 自定义属性 记录当前按钮的索引值
  249. aDotBtns[i].onclick = function () {
  250. // // 清除所有圆点按钮的选中状态
  251. // for (var j = 0; j < aDotBtns.length; j++) {
  252. // aDotBtns[j].classList.remove("active");
  253. // aImgItems[j].classList.remove("active");
  254. // }
  255. // // 给当前按钮添加选中状态
  256. // this.classList.add("active");
  257. // // 给相对应图片添加选中状态
  258. // aImgItems[this.index].classList.add("active");
  259. // 调用切换图片函数
  260. switchImg(this.index);
  261. // 更新当前索引值
  262. curIndex = this.index;
  263. }
  264. }
  265. // 向右按钮点击事件
  266. oArrRight.onclick = function () {
  267. // 当前索引+1
  268. curIndex++;
  269. // 如果当前索引大于等于图片总数 则重置为0
  270. if (curIndex >= aImgItems.length) {
  271. curIndex = 0;
  272. }
  273. // 调用切换图片函数
  274. switchImg(curIndex);
  275. }
  276. // 向左按钮点击事件
  277. oArrLeft.onclick = function () {
  278. // 当前索引-1
  279. curIndex--;
  280. // 如果当前索引小于0 则重置为最后一张图片的索引
  281. if (curIndex < 0) {
  282. curIndex = aImgItems.length - 1;
  283. }
  284. // 调用切换图片函数
  285. switchImg(curIndex);
  286. }
  287. // 实现定时轮播
  288. function play() {
  289. timer = setInterval(function () {
  290. oArrRight.onclick();
  291. }, 2000);
  292. }
  293. play();
  294. // 鼠标移入停止轮播 停止轮播
  295. oContainer.onmouseover = function () {
  296. clearInterval(timer);
  297. }
  298. // 鼠标移出开始轮播
  299. oContainer.onmouseout = function () {
  300. play();
  301. }
  302. </script>
  303. </body>
  304. </html>