js原生代码实现简单轮播图

Dear 丶 2022-12-28 14:16 301阅读 0赞

1.先给最基本的样式,点击左右按钮的时候,图片开始动,切换css 样式display:none和display:block,达到基本的效果
2.图片上面的小圆点,点击左右按钮绑定到一起 、
3.给每个小圆点添加点击事件
4.鼠标移入图片区域停止自动轮播图
5.离开图片区域开始轮播
****

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style type="text/css">
  7. img{
  8. display: block;
  9. width: 600px;
  10. height: 500px;
  11. }
  12. li{
  13. list-style: none;
  14. width: 600px;
  15. height: 500px;
  16. }
  17. *{
  18. margin: 0px;
  19. padding: 0px;
  20. }
  21. .box{
  22. display: flex;
  23. position: relative;
  24. }
  25. #list li{
  26. display:none;
  27. }
  28. #left{
  29. width: 80px;
  30. height: 140px;
  31. font-size: 50px;
  32. color: azure;
  33. background-color: rgba(0, 0, 0, 0.3);
  34. position: absolute;
  35. top: 150px;
  36. }
  37. #right{
  38. width: 80px;
  39. height: 140px;
  40. font-size: 50px;
  41. color: azure;
  42. background-color: rgba(0, 0, 0, 0.3);
  43. position: absolute;
  44. top: 150px;
  45. left: 520px;
  46. }
  47. .yuanDian ul{
  48. position: absolute;
  49. top: 420px;
  50. left: 80px;
  51. }
  52. .yuanDian ul li{
  53. margin: 0px 20px;
  54. display: inline-block;
  55. height: 30px;
  56. width: 30px;
  57. border-radius: 50%;
  58. background: salmon;
  59. }
  60. .box{
  61. width: 600px;
  62. height: 500px;
  63. }
  64. /* 基础的css样式 */
  65. </style>
  66. </head>
  67. <body>
  68. <div class="box" id="box">
  69. <div class="lunbo" id="cut">
  70. <ul id="list">
  71. <li style="display: block;"><img src="./imgs/1.jpg" ></li>
  72. <li><img src="./imgs/2.jpg" ></li>
  73. <li><img src="./imgs/3.jpg" ></li>
  74. <li><img src="./imgs/4.jpg" ></li>
  75. <li><img src="./imgs/5.jpg" ></li>
  76. </ul>
  77. <div class="button">
  78. <button type="button" id="left" onclick="left()"><</button>
  79. <button type="button" id="right" onclick="right()"> ></button>
  80. </div>
  81. </div>
  82. <div class="yuanDian">
  83. <ul>
  84. <li style="background: red;"></li>
  85. <li></li>
  86. <li></li>
  87. <li></li>
  88. <li></li>
  89. </ul>
  90. </div>
  91. </div>
  92. <script>
  93. /** 整理一下思路 * 1.先给最基本的样式,点击左右按钮的时候,图片开始动,切换css * 样式display:none和display:block,达到基本的效果 * 2.图片上面的小圆点,点击左右按钮绑定到一起 * 3.给每个小圆点添加点击事件 * 4.鼠标移入图片区域停止自动轮播图 * 5.离开图片区域开始轮播 * */
  94. window.onload=function(){
  95. //获取所有网节点
  96. var lis=document.getElementById("list").children;
  97. var left=document.getElementById("left");
  98. var right=document.getElementById("right");
  99. var box = document.getElementById("box");
  100. //监控图片每一次改变的位置数
  101. var tpIndex=0;
  102. //实现最基本的点击左右按钮时图片切换
  103. {
  104. //接收一个参数就是图片的位置数
  105. function lunBo(a1){
  106. for(var i=0;i<lis.length;i++){
  107. //给所有的图片添加display="none"属性隐藏起来
  108. lis[i].style.display="none"
  109. }
  110. //给当前的传进来的图片位置数给css样式display="block"
  111. lis[a1].style.display="block"
  112. tpIndex=a1
  113. a(tpIndex);
  114. }
  115. //tpIndex监控图片位置
  116. //每点击left按钮
  117. /** * tpIndex自减 * 因为图片一共五张,减下去就是负数了 * 所有这里要加一个判断,然后重新赋值 * 然后给lunbo函数传当前的图片位置 */
  118. left.onclick= function(){
  119. tpIndex--;
  120. if(tpIndex<0){
  121. //和下标对应
  122. tpIndex=lis.length-1;//因为lis.length是长度0 1 2 3 4 5 这就多了一个数,所以减一
  123. }
  124. lunBo(tpIndex)
  125. }
  126. //
  127. //每点击right按钮
  128. /** * tpIndex自增 * 从0开始到4 * 因为图片一共五张,加上去就是大于4了 * 所有这里要加一个判断,然后重新赋值 * 然后给lunbo函数传当前的图片位置 */
  129. right.onclick=function (){
  130. tpIndex++;
  131. if(tpIndex >lis.length-1){
  132. tpIndex=0;
  133. }
  134. lunBo(tpIndex);
  135. }
  136. }
  137. //实现和图片和小圆点的绑定
  138. { //获取所有节点
  139. var yuanDians=document.querySelectorAll(".yuanDian ul li")
  140. // 给小原点添加样式
  141. function a(tpIndex){
  142. for(var i=0;i<yuanDians.length;i++){
  143. yuanDians[i].style.background=""
  144. }
  145. yuanDians[tpIndex].style.background="red"
  146. }
  147. //循环给小圆点添加点击事件
  148. for(let i=0;i<yuanDians.length;i++){
  149. yuanDians[i].onclick=function(){
  150. tpIndex=i;// 监控图片当前位置 就是当前点击时的的下标
  151. a(tpIndex) // 给a函数传参,当前小圆点添加样式
  152. lunBo(tpIndex) // 同时也给赋值轮播的函数传参,给当前图片显示出来
  153. }
  154. }
  155. }
  156. // 实现鼠标移入停止轮播,移出开始轮播
  157. {
  158. //方便计时器使用,简化代码
  159. function run(){
  160. tpIndex++;
  161. if(tpIndex >lis.length-1){
  162. tpIndex=0;
  163. }
  164. lunBo(tpIndex);
  165. a(tpIndex);
  166. }
  167. //添加计时器
  168. var x=setInterval(run,1000);
  169. //当鼠标离开的时候开始自动轮播
  170. box.onmouseleave=function(){
  171. x=setInterval(run,1000);
  172. }
  173. //鼠标进入停止轮播
  174. box. onmouseenter=function(){
  175. clearInterval(x)
  176. }
  177. }
  178. }
  179. </script>
  180. </body>
  181. </html>

发表评论

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

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

相关阅读

    相关 原生JS实现简单

    注意 我们用原生JS来做一个简单的无缝轮播图,首先需要准备几张**图片作为材料**,图片的链接需要自己设置,所以这边我的代码中图片链接的位置请大家自己添加图片。 ...

    相关 原生js实现

    轮播图基本上是前端所必须面临的一个功能。而且在网上可以找到各种各样的插件或者写法。 但是我个人觉得还是写一下比较好。这里用到的是原生JS、CSS3相结合的写法。 对IE 8

    相关 原生js实现

    原生js实现轮播图  很多网站上都有轮播图,但却很难找到一个系统讲解的,因此这里做一个简单的介绍,希望大家都能有所收获,如果有哪些不正确的地方,希望大家可以指出。  [