[前端] 原生javascript实现图片轮播切换效果

1933 0
Honkers 2022-10-21 15:48:06 | 显示全部楼层 |阅读模式
本文实例为大家分享了javascript实现图片轮播切换效果的具体代码,供大家参考,具体内容如下
效果如下:


代码部分:
  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.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7.     <title>Document</title>
  8.     <style>
  9.         *{margin:0;padding:0;}
  10.         #banner{position:relative;width:400px;height:200px;margin:50px auto;overflow: hidden;}
  11.         #banner .box{width:400px;height:200px;overflow: hidden;}
  12.         #banner .box li img{width:400px;height:200px;overflow: hidden;}
  13.         #banner .box li{display:none;}
  14.         #banner .box li.active{display:block;}
  15.         #banner .static{position:absolute;bottom:0;height:30px;width:390px;padding-right:10px;text-align:right;}
  16.         #banner .static span{display:inline-block;width:20px;height:20px;margin:0 2px;line-height:20px;text-align:center;background:#fff;cursor:default;}
  17.         #banner .static span.active{background:blue;color:#fff;}
  18.         #banner .btn{position:absolute;top:80px;height:40px;width:20px;color:#fff;line-height:40px;text-align:center;background:#000;opacity:.75;cursor:default;}
  19.         #banner .next.btn{right:0;}
  20. </style>
  21. </head>
  22. <body>
  23.     <div id="banner">
  24.         <div class="box">
  25.             <ul>
  26.                 <li class="active">
  27.                     <a href="#">
  28.                         <img src="img/banner.jpg"/>
  29.                     </a>
  30.                 </li>
  31.                 <li>
  32.                     <a href="#">
  33.                         <img src="img/banner01.jpg"/>
  34.                     </a>
  35.                 </li>
  36.                 <li class="">
  37.                     <a href="#">
  38.                         <img src="img/banner02.jpg"/>
  39.                     </a>
  40.                 </li>
  41.                 <li>
  42.                     <a href="#">
  43.                         <img src="img/banner03.jpg"/>
  44.                     </a>
  45.                 </li>
  46.             </ul>
  47.         </div>
  48.         <div class="static">
  49.             <span class="active">1</span>
  50.             <span>2</span>
  51.             <span>3</span>
  52.             <span>4</span>
  53.         </div>
  54.         <div class="prev btn"><</div>
  55.         <div class="next btn">></div>
  56.     </div>
  57.     <script>
  58.         //切换样式
  59.         function toggleClass(elem, classStr){
  60.             if(elem.className){
  61.                 if(elem.className.indexOf(classStr) > -1){
  62.                     elem.className = elem.className.replace(classStr,"");
  63.                 }else{
  64.                     elem.className = elem.className + " " + classStr;
  65.                 }
  66.             }else{
  67.                 elem.className = classStr;
  68.             }
  69.         }
  70.         //获取元素所在兄弟元素的索引
  71.         function getIndex(elem){
  72.             var index;
  73.             var childNodes = elem.parentNode.childNodes;
  74.             //获取子元素的元素节点
  75.             function childElem(){
  76.                 var result = [];
  77.                 for(var i = 0, len = childNodes.length; i < len; i++){
  78.                     if(childNodes[i].nodeType == 1){
  79.                         result.push(childNodes[i]);
  80.                     }
  81.                 }
  82.                 return result;
  83.             }
  84.             //判断元素与子元素是否相等
  85.             var child = childElem(elem);
  86.             for(var j = 0, lenj = child.length; j < len; j++){
  87.                 if(child[j] == elem){
  88.                     index = j;
  89.                 }else{
  90.                     console.error("没有找到相应的子元素!");
  91.                 }
  92.             }
  93.             //返回索引
  94.             return index;
  95.         }
  96.         //dom选择器
  97.         function $(selector){
  98.             return document.querySelector(selector);
  99.         }
  100.         function $$(selector){
  101.             return document.querySelectorAll(selector);
  102.         }
  103.         //对象参数
  104.         var int = {
  105.             num: null,
  106.             speed: null,
  107.             timerId: null
  108.         };
  109.         var liItem = $$("#banner .box li");
  110.         var static = $$("#banner .static span");
  111.         var btn = $$("#banner .btn");
  112.         //初始化默认值
  113.         var activeNum = 1;
  114.         int.num = liItem.length;
  115.         int.speed = 3000;
  116.         //切换动作
  117.         function toggleItem(num){
  118.             toggleClass($("#banner .box li.active"), "active");
  119.             toggleClass($("#banner .static span.active"), "active");
  120.             //添加下一个激活选项
  121.             toggleClass(liItem.item(num), "active");
  122.             toggleClass(static.item(num), "active");
  123.         }
  124.         function autoPlay(){
  125.             int.timerId = setInterval(function(){
  126.                 if(activeNum < int.num){
  127.                     toggleItem(activeNum);
  128.                     activeNum++;
  129.                 }else{
  130.                     activeNum = 0;
  131.                     toggleItem(activeNum);
  132.                     activeNum++;
  133.                 }
  134.             },int.speed);
  135.         }
  136.         //定时轮播
  137.         autoPlay();
  138.         //状态点鼠标移入移出效果
  139.         for(var i = 0, len = static.length; i < len; i++){
  140.             //匿名传参避免产生闭包得不到想要的效果
  141.             (function(j){
  142.                 //鼠标移入效果
  143.                 static.item(j).onmouseenter = function(){
  144.                     //停止动画
  145.                     clearInterval(int.timerId);
  146.                     var index = getIndex(this);
  147.                     toggleItem(index);
  148.                 }
  149.                 //鼠标移出效果
  150.                 static.item(j).onmouseleave = function(){
  151.                     //开始动画
  152.                     autoPlay();
  153.                 }
  154.             })(i);
  155.         }
  156.         for(var k = 0, lenk = btn.length; k < lenk; k++){
  157.             //上下张按钮移入移出效果
  158.             btn.item(k).onmouseenter = function(){
  159.                 clearInterval(int.timerId);
  160.             }
  161.             btn.item(k).onmouseleave = function(){
  162.                 autoPlay();
  163.             }
  164.         }
  165.         //单价击上一张
  166.         $(".prev.btn").onclick = function(){
  167.             if(activeNum > 0){
  168.                 activeNum--;
  169.                 toggleItem(activeNum);
  170.             }else{
  171.                 activeNum = 3;
  172.                 toggleItem(activeNum);
  173.             }
  174.         }
  175.         //单击下一张
  176.         $(".next.btn").onclick = function(){
  177.             if(activeNum < int.num){
  178.                 toggleItem(activeNum);
  179.                 activeNum++;
  180.             }else{
  181.                 activeNum = 0;
  182.                 toggleItem(activeNum);
  183.                 activeNum++;
  184.             }
  185.         }
  186.     </script>
  187. </body>
  188. </html>
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中国红客联盟。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4009
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行