手写原创纯js实现轮播图

ゝ一世哀愁。 2023-07-02 04:26 141阅读 0赞

默认设定的图片宽度是1440px,如果有不同的可以自己对应修改即可

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>轮播图</title>
  6. <style type="text/css">
  7. html,body{
  8. height:100%;
  9. width: 100%;
  10. padding:0;
  11. margin:0;
  12. }
  13. ul,ol,li{
  14. padding:0;
  15. margin:0;
  16. list-style: none;
  17. }
  18. .container{
  19. position: relative;
  20. width: 1440px;
  21. height: 508px;
  22. left: 50%;
  23. transform: translateX(-50%);
  24. -webkit-transform: translateX(-50%);
  25. -moz-transform: translateX(-50%);
  26. -o-transform: translateX(-50%);
  27. -ms-transform: translateX(-50%);
  28. top: 20px;
  29. overflow: auto;
  30. }
  31. .container::-webkit-scrollbar {display:none}
  32. .banner{
  33. position: absolute;
  34. z-index: 100;
  35. width: 1000px;
  36. margin: 0 auto;
  37. left: 50%;
  38. text-align: center;
  39. line-height: 40px;
  40. transform: translateX(-50%);
  41. -webkit-transform: translateX(-50%);
  42. -moz-transform: translateX(-50%);
  43. -o-transform: translateX(-50%);
  44. -ms-transform: translateX(-50%);
  45. }
  46. .main{
  47. height: 100%;
  48. width: 5760px;
  49. position: absolute;
  50. }
  51. #mainScroll{
  52. left: 0;
  53. }
  54. .main li{
  55. float: left;
  56. padding: 0;
  57. margin: 0;
  58. width: 1440px;
  59. }
  60. .main li img{
  61. width: 100%;
  62. }
  63. .prev-button{
  64. position: absolute;
  65. width: 30px;
  66. height: 30px;
  67. z-index: 100;
  68. top: 50%;
  69. left: 20px;
  70. transform: translate(0,-50%) rotate(45deg);
  71. border: 3px solid rgba(255,255,255,.5);
  72. border-right: none;
  73. border-top: none;
  74. }
  75. .prev-button:hover{
  76. border: 3px solid rgba(255,255,255,.9);
  77. border-right: none;
  78. border-top: none;
  79. cursor: pointer;
  80. }
  81. .next-button{
  82. position: absolute;
  83. width: 30px;
  84. height: 30px;
  85. z-index: 100;
  86. top: 50%;
  87. right: 20px;
  88. transform: translate(0,-50%) rotate(45deg);
  89. border: 3px solid rgba(255,255,255,.5);
  90. border-left: none;
  91. border-bottom: none;
  92. }
  93. .next-button:hover{
  94. border: 3px solid rgba(255,255,255,.9);
  95. border-left: none;
  96. border-bottom: none;
  97. cursor: pointer;
  98. }
  99. </style>
  100. </head>
  101. <body>
  102. <div class="container">
  103. <div class="banner">这里是固定内容</div>
  104. <ul class="main" id="mainScroll">
  105. <li><img src="./img/commonfile_jpg_00b4a73f2a21b3a6e0bf7f37c6274ac7.jpg"></li>
  106. <li><img src="./img/commonfile_jpg_9c8ddad6e1544b66121b2918df07d461.jpg"></li>
  107. <li><img src="./img/commonfile_jpg_aa2402bfa2825f4453231d15de26a14c.jpg"></li>
  108. <li><img src="./img/focus_pic_youpin.jpg"></li>
  109. </ul>
  110. <div class="prev-button" id="prev"></div>
  111. <div class="next-button" id="next"></div>
  112. </div>
  113. </body>
  114. <script type="text/javascript">
  115. //定义偏移dom
  116. var main = document.getElementById('mainScroll');
  117. //设定偏移速度单元,50更慢,默认25为0.5秒执行完毕(25*20=500毫秒)
  118. var sLength = 25;
  119. var sTime = 20;
  120. //点击是否执行函数,避免快速重复点击
  121. var ifdo = true;
  122. main.style.left = '0px';
  123. //定义偏移函数
  124. function moveTo(startPosition,endPosition){
  125. if(ifdo){
  126. ifdo = !ifdo;
  127. var initial = startPosition;
  128. //获取变化量
  129. var shift = endPosition - startPosition;
  130. //每毫秒偏移的量,设定一秒钟完成移动
  131. var singleMove = shift/sLength;
  132. var tick = setInterval(function(){
  133. if((shift<0&&initial>endPosition)||(shift>0&&initial<endPosition)){
  134. if((shift<0&&(initial + singleMove)<endPosition)||(shift>0&&(initial + singleMove)>endPosition)){
  135. //精度调整
  136. main.style.left = endPosition + 'px';
  137. clearInterval(tick);
  138. ifdo = !ifdo;
  139. console.log('end')
  140. }else{
  141. main.style.left = initial + singleMove + 'px';
  142. initial = initial + singleMove;
  143. }
  144. }else{
  145. clearInterval(tick);
  146. ifdo = !ifdo;
  147. console.log('end')
  148. }
  149. },sTime)
  150. }
  151. }
  152. // 下一页
  153. document.getElementById('next').onclick = function(){
  154. var move = parseInt(main.style.left.split('px')[0]);
  155. if(-(move - 1440)!=main.children[0].offsetWidth*4){
  156. moveTo(move,move-1440)
  157. }
  158. }
  159. //上一页
  160. document.getElementById('prev').onclick = function(){
  161. var move = parseInt(main.style.left.split('px')[0]);
  162. if(move!=0){
  163. moveTo(move,move+1440)
  164. }
  165. }
  166. </script>
  167. </html>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4dzIwMTc_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4dzIwMTc_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4dzIwMTc_size_16_color_FFFFFF_t_70 2

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4dzIwMTc_size_16_color_FFFFFF_t_70 3

发表评论

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

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

相关阅读

    相关 js实现淘宝商城

    需求:   循环无缝自动轮播3张图片,点击左右箭头可以手动切换图片,鼠标点击轮播图下面的小圆点会跳转到对应的第几张图片。鼠标放到轮播图的图片上时不再自动轮播,鼠标移开之后又