Js实现图片点击切换与轮播

浅浅的花香味﹌ 2021-10-23 18:42 529阅读 0赞

Js实现图片点击切换与轮播

图片点击切换

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <script type="text/javascript">
  7. window.onload=function(){
  8. var btn1=document.getElementById("pre");
  9. var btn2=document.getElementById("next");
  10. var img=document.getElementById("img1");
  11. var imgarr=["images/1.jpg","images/2.jpg","images/3.jpg","images/4.jpg","images/5.jpg","images/6.jpg"];
  12. var index=0;
  13. var info=document.getElementById("pd");
  14. info.innerHTML="一共"+imgarr.length+"张 图片 ,当前 第"+(index+1)+"张";
  15. btn1.onclick=function(){
  16. index--;
  17. if(index<0){
  18. index=imgarr.length-1;
  19. }
  20. img.src=imgarr[index];
  21. info.innerHTML="一共"+imgarr.length+"张 图片 ,当前 第"+(index+1)+"张";
  22. };
  23. btn2.onclick=function(){
  24. index++;
  25. if(index>imgarr.length-1){
  26. index=0;
  27. }
  28. img.src=imgarr[in000dex];
  29. info.innerHTML="一共"+imgarr.length+"张 图片 ,当前 第"+(index+1)+"张";
  30. };
  31. };
  32. </script>
  33. <style type="text/css">
  34. *{
  35. padding: 0;
  36. margin:0;
  37. }
  38. .outer{
  39. width:640px;
  40. height:453px;
  41. margin:100px auto;
  42. text-align: center;
  43. }
  44. </style>
  45. </head>
  46. <body>
  47. <div class="outer">
  48. <p id="pd"></p>
  49. <img src="images/1.jpg" id="img1" />
  50. <button id="pre">上一张</button>
  51. <button id="next">下一张</button>
  52. </div>
  53. </body>
  54. </html>

实现效果:

1477786-20190708203319495-1574750501.jpg

轮播

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <style type="text/css">
  7. *{
  8. padding:0px;
  9. margin: 0px;
  10. }
  11. #outer{
  12. position: relative;
  13. width:660px;
  14. height:425px;
  15. margin:50px auto ;
  16. background:yellow;
  17. padding:10px 0;
  18. overflow: hidden;
  19. }
  20. #imglist{
  21. position: absolute;
  22. list-style: none;
  23. /*
  24. * 设置偏移量
  25. *
  26. *
  27. */
  28. left:0px;
  29. }
  30. #imglist li{
  31. margin: 0 10px;
  32. float:left;
  33. }
  34. #navDiv{
  35. position: absolute;
  36. bottom: 15px;
  37. /*
  38. * 设置left值
  39. * outer宽度 640
  40. * navDiv宽度 30*5=125
  41. * 640-125=515
  42. * 515/2=257.5
  43. * left:257.5px;
  44. */
  45. left:0;
  46. }
  47. #navDiv a{
  48. float:left;
  49. width:20px;
  50. height:20px;
  51. background:#ff1;
  52. opacity: 0.5;
  53. /*兼容IE8的透明*/
  54. filter:alpha(opacity=50);
  55. margin: 0 5px;
  56. }
  57. #navDiv a:hover{
  58. background:red;
  59. }
  60. </style>
  61. <script type="text/javascript" src="tools.js"></script>
  62. <script type="text/javascript">
  63. window.onload=function(){
  64. var imglist=document.getElementById("imglist");
  65. var navDiv=document.getElementById("navDiv");
  66. var outer=document.getElementById("outer");
  67. //获取页面所有的img标签
  68. var imgarr=document.getElementsByTagName("img");
  69. //获取页面所有的A标签
  70. var allA=document.getElementsByTagName("a");
  71. //默认显示图片的索引
  72. var index=0;
  73. //设置
  74. allA[index].style.background="black";
  75. //设置ul的长度
  76. imglist.style.width=660*imgarr.length+"px";
  77. //设置navDiv的left值
  78. navDiv.style.left=(outer.offsetWidth-navDiv.offsetWidth)/2+"px";
  79. //定义一个定时器标识
  80. var timer;
  81. //点击超链接切换到指定的图片
  82. //为所有的超链接绑定单击响应函数
  83. for(var i=0;i<allA.length;i++){
  84. //为每一个超链接都添加一个NUM属性
  85. allA[i].num=i;
  86. //为超链接绑定单击响应函数
  87. allA[i].οnclick=function(){
  88. //关闭自动切换
  89. clearInterval(timer);
  90. //获取点击超链接的索引,并将其设置为index
  91. index=this.num;
  92. //切换图片
  93. //imglist.style.left=index*-660+"px";
  94. setA();
  95. move(imglist,20,-660*index,"left",function(){
  96. //动画执行完后,再执行自动切换
  97. autoChange();
  98. });
  99. };
  100. }
  101. //自动切换图片
  102. autoChange();
  103. //创建一个方法来设置选中的A
  104. function setA(){
  105. //判断是不是最后一张照片
  106. if(index>=imgarr.length-1){
  107. index=0;
  108. //如果是最后一张,就把imglist移到0
  109. imglist.style.left=0+"px";
  110. }
  111. for(var j=0;j<allA.length;j++){
  112. //去掉内联样式,只剩下样式表的样式
  113. allA[j].style.background="";
  114. }
  115. allA[index].style.background="black";
  116. };
  117. function autoChange(){
  118. timer=setInterval(function(){
  119. index++;
  120. index%=imgarr.length;
  121. move(imglist,20,-660*index,"left",function(){
  122. setA();
  123. });
  124. },3000);
  125. };
  126. };
  127. </script>
  128. </head>
  129. <body>
  130. <!--创建一个外部的div,来作为大的容器-->
  131. <div id="outer">
  132. <!--创建一个ul,用来放置图片-->
  133. <ul id="imglist">
  134. <li>
  135. <img src="images/1.jpg" />
  136. </li>
  137. <li>
  138. <img src="images/2.jpg" />
  139. </li>
  140. <li>
  141. <img src="images/3.jpg" />
  142. </li>
  143. <li>
  144. <img src="images/4.jpg" />
  145. </li>
  146. <li>
  147. <img src="images/5.jpg" />
  148. </li>
  149. <li>
  150. <img src="images/1.jpg" />
  151. </li>
  152. </ul>
  153. <div id="navDiv">
  154. <a href="javascript:;"></a>
  155. <a href="javascript:;"></a>
  156. <a href="javascript:;"></a>
  157. <a href="javascript:;"></a>
  158. <a href="javascript:;"></a>
  159. </div>
  160. </div>
  161. </body>
  162. </html>
  163. tools.js
  164. //动画函数
  165. /*参数
  166. * -1.obj 对象
  167. * -2.speed 速度
  168. * -3.target 执行动画的目标
  169. * -4.arrt 要变化的样式
  170. * -5.callback:回调函数 将会在动画执行完后执行
  171. */
  172. function move(obj,speed,target,arrt,callback){
  173. //关闭上一次定时器
  174. clearTimeout(obj.timer);
  175. //判断速度的正负值
  176. //如果从0向800移动则为正
  177. //如果从800向0移动则为负
  178. var current=parseInt(getStyle(obj,arrt));
  179. if(current>target){
  180. speed=-speed;
  181. }
  182. //开启一个定时器
  183. //为obj添加一个timer属性,用来保存它1自己的定时器的标识
  184. obj.timer=setInterval(function(){
  185. //获取原来的left值
  186. var oldvalue=parseInt(getStyle(obj,arrt));
  187. //在旧值的基础上增加
  188. var newvalue=oldvalue+speed;
  189. if(speed<0&&newvalue<target||speed>0&&newvalue>target)
  190. {
  191. newvalue=target;
  192. }
  193. obj.style[arrt]=newvalue+"px";
  194. //当元素到达target关闭定时器
  195. if(newvalue===target||newvalue===target){
  196. clearTimeout(obj.timer);
  197. //动画执行完 执行函数
  198. callback&&callback();
  199. }
  200. },30);
  201. };

实现效果:

1477786-20190708203418128-1912568333.jpg

转载于:https://www.cnblogs.com/-wenli/p/11153653.html

发表评论

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

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

相关阅读

    相关 js实现

    效果图 今天讲下如何利用js做个点击操作的轮播图,效果图如下,因为无法传视频,只能截图了,代码在下面讲解,需要可以自己打出来运行。 ![在这里插入图片描述][wate

    相关 简单的实现图片~

    第一次写博客,从十点开始说要来写,换了个头像,现在才开始码字。 `学习web前端时间并不多,还没毕业的自学小白,想要用博客来记录自己的学习史。` `有问题的任意吐槽~`