庞文共 發表於 2019-6-28 19:04:00

JavaScript banner轮播 左右切换 圆点点击切换

<p>1、效果如下图:</p>
<p><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190628190238183-1165209108.jpg" alt=""></p>
<p>2、源码如下:</p>
<div class="cnblogs_code">
<pre>&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;title&gt;JavaScript banner轮播 左右切换 圆点点击切换&lt;/title&gt;

&lt;style type="text/css"&gt;<span style="color: rgba(0, 0, 0, 1)">
div,ul,li,a,span,img{margin:</span>0;padding:0<span style="color: rgba(0, 0, 0, 1)">;}
#banner {
    overflow:hidden;
    width:</span>100%<span style="color: rgba(0, 0, 0, 1)">;
    height:400px;
    position:relative;
    </span><span style="color: rgba(0, 0, 255, 1)">float</span><span style="color: rgba(0, 0, 0, 1)">:left;
    padding</span>-<span style="color: rgba(0, 0, 0, 1)">bottom: 10px;
}
#tab</span>&gt;img:not(:first-<span style="color: rgba(0, 0, 0, 1)">child){
    display:none;
}
.lunbo_btn {
    height: 15px;
    width: </span>100%<span style="color: rgba(0, 0, 0, 1)">;
    margin: 0px auto;
    margin</span>-top: -<span style="color: rgba(0, 0, 0, 1)">40px;
    position: absolute;
    z</span>-index: 3<span style="color: rgba(0, 0, 0, 1)">;
    text</span>-<span style="color: rgba(0, 0, 0, 1)">align: center;
}
.lunbo_btn span {
    width:14px;
    height:14px;
    display:inline</span>-<span style="color: rgba(0, 0, 0, 1)">block;
    background</span>-<span style="color: rgba(0, 0, 0, 1)">color:#b4b5b7;
    border</span>-radius:50%<span style="color: rgba(0, 0, 0, 1)">;
    margin:0px 2px;
    cursor:pointer;
}
.lunbo_btn span.hover {
    background</span>-<span style="color: rgba(0, 0, 0, 1)">color:#ffb23c;
}
.arrow {
    display: none;
    width: 30px;
    height: 60px;
    background</span>-color: rgba(0,0,0,0.4<span style="color: rgba(0, 0, 0, 1)">);
    position: absolute;
    top: </span>50%<span style="color: rgba(0, 0, 0, 1)">;
    margin</span>-top: -<span style="color: rgba(0, 0, 0, 1)">30px;
    z</span>-index:999<span style="color: rgba(0, 0, 0, 1)">;
}
.arrow span {
    display: block;
    width: 10px;
    height: 10px;
    border</span>-<span style="color: rgba(0, 0, 0, 1)">bottom: 2px solid #fff;
    border</span>-<span style="color: rgba(0, 0, 0, 1)">left: 2px solid #fff;
}
.slider_left {
    margin: 25px </span>0 0<span style="color: rgba(0, 0, 0, 1)"> 10px;
    transform: rotate(45deg);
}
.prve {
    left: </span>0<span style="color: rgba(0, 0, 0, 1)">;
}
.next {
    right: </span>0<span style="color: rgba(0, 0, 0, 1)">;
}
.slider_right {
    margin: 25px </span>0 0<span style="color: rgba(0, 0, 0, 1)"> 5px;
    transform: rotate(</span>-<span style="color: rgba(0, 0, 0, 1)">135deg);
}
.arrow:hover{background:#</span>444<span style="color: rgba(0, 0, 0, 1)">;}
#banner:hover .arrow{display:block;}
</span>&lt;/style&gt;

&lt;/head&gt;
&lt;body&gt;

&lt;div id="banner"&gt;   
    &lt;!-- 轮播图片 --&gt;
    &lt;div id="tab"&gt;
      &lt;img class="tabImg" src="images/banner1.jpg" height="400"/&gt;
      &lt;img class="tabImg" src="images/banner2.jpg" height="400"/&gt;
      &lt;img class="tabImg" src="images/banner3.jpg" height="400"/&gt;
      &lt;img class="tabImg" src="images/banner4.jpg" height="400"/&gt;
    &lt;/div&gt;
    &lt;!-- 指示符 --&gt;
    &lt;div class="lunbo_btn"&gt;
      &lt;span num="0" class="tabBtn hover"&gt;&lt;/span&gt;
      &lt;span num="1" class="tabBtn"&gt;&lt;/span&gt;
      &lt;span num="2" class="tabBtn"&gt;&lt;/span&gt;
      &lt;span num="3" class="tabBtn"&gt;&lt;/span&gt;
    &lt;/div&gt;   
    &lt;!-- 左右切换按钮 --&gt;
    &lt;div class="arrow prve"&gt;
      &lt;span class="slider_left"&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class="arrow next"&gt;
      &lt;span class="slider_right"&gt;&lt;/span&gt;
    &lt;/div&gt;   
&lt;/div&gt;

&lt;script type="text/javascript"&gt;

    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">轮播图</span>
    <span style="color: rgba(0, 0, 255, 1)">var</span> curIndex=0;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">初始化</span>
    <span style="color: rgba(0, 0, 255, 1)">var</span> img_number = document.getElementsByClassName('tabImg'<span style="color: rgba(0, 0, 0, 1)">).length;
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> _timer = setInterval(runFn,2000);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2秒</span>
    <span style="color: rgba(0, 0, 255, 1)">function</span> runFn(){ <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">运行定时器         </span>
      curIndex = ++curIndex == img_number ? 0 : curIndex;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">算法 4为banner图片数量</span>
<span style="color: rgba(0, 0, 0, 1)">      slideTo(curIndex);
   }
   
   </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">圆点点击切换轮播图</span>
   window.onload = <span style="color: rgba(0, 0, 255, 1)">function</span>() {    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">为按钮初始化onclick事件</span>
      <span style="color: rgba(0, 0, 255, 1)">var</span> tbs = document.getElementsByClassName("tabBtn"<span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i=0;i&lt;tbs.length;i++<span style="color: rgba(0, 0, 0, 1)">){
            tbs.onclick </span>= <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
                clearInterval(_timer);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">细节处理,关闭定时,防止点切图和定时器函数冲突</span>
                slideTo(<span style="color: rgba(0, 0, 255, 1)">this</span>.attributes['num'<span style="color: rgba(0, 0, 0, 1)">].value);
                curIndex </span>= <span style="color: rgba(0, 0, 255, 1)">this</span>.attributes['num'<span style="color: rgba(0, 0, 0, 1)">].value
                _timer </span>= setInterval(runFn,2000);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">点击事件处理完成,继续开启定时轮播</span>
<span style="color: rgba(0, 0, 0, 1)">            }
      }
    }

    </span><span style="color: rgba(0, 0, 255, 1)">var</span> prve = document.getElementsByClassName("prve"<span style="color: rgba(0, 0, 0, 1)">);
    prve[</span>0].onclick = <span style="color: rgba(0, 0, 255, 1)">function</span> () {<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">上一张</span>
      clearInterval(_timer);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">细节处理,关闭定时,防止点切图和定时器函数冲突</span>
      curIndex--<span style="color: rgba(0, 0, 0, 1)">;
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(curIndex == -1<span style="color: rgba(0, 0, 0, 1)">){
            curIndex </span>= img_number-1<span style="color: rgba(0, 0, 0, 1)">;
      }
      slideTo(curIndex);
      _timer </span>= setInterval(runFn,2000);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">点击事件处理完成,继续开启定时轮播</span>
<span style="color: rgba(0, 0, 0, 1)">    }
   
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> next = document.getElementsByClassName("next"<span style="color: rgba(0, 0, 0, 1)">);
    next[</span>0].onclick = <span style="color: rgba(0, 0, 255, 1)">function</span> () {<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">下一张</span>
      clearInterval(_timer);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">细节处理,关闭定时,防止点切图和定时器函数冲突</span>
      curIndex++<span style="color: rgba(0, 0, 0, 1)">;
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(curIndex ==<span style="color: rgba(0, 0, 0, 1)"> img_number){
            curIndex </span>=0<span style="color: rgba(0, 0, 0, 1)">;
      }
      slideTo(curIndex);
      _timer </span>= setInterval(runFn,2000);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">点击事件处理完成,继续开启定时轮播</span>
<span style="color: rgba(0, 0, 0, 1)">    }
   
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">切换banner图片 和 按钮样式</span>
    <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> slideTo(index){
      console.log(index)
      </span><span style="color: rgba(0, 0, 255, 1)">var</span> index = parseInt(index);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">转int类型</span>
      <span style="color: rgba(0, 0, 255, 1)">var</span> images = document.getElementsByClassName('tabImg'<span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i=0;i&lt;images.length;i++){<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遍历每个图片</span>
            <span style="color: rgba(0, 0, 255, 1)">if</span>( i ==<span style="color: rgba(0, 0, 0, 1)"> index ){
                images.style.display </span>= 'inline';<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">显示            </span>
            }<span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
                images.style.display </span>= 'none';<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">隐藏</span>
<span style="color: rgba(0, 0, 0, 1)">            }
      }
      </span><span style="color: rgba(0, 0, 255, 1)">var</span> tabBtn = document.getElementsByClassName('tabBtn'<span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> j=0;j&lt;tabBtn.length;j++){<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遍历每个按钮</span>
            <span style="color: rgba(0, 0, 255, 1)">if</span>( j ==<span style="color: rgba(0, 0, 0, 1)"> index ){
                tabBtn.classList.add(</span>"hover");    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加轮播按钮hover样式</span>
                curIndex=<span style="color: rgba(0, 0, 0, 1)">j;
            }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
                tabBtn.classList.remove(</span>"hover");<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">去除轮播按钮hover样式</span>
<span style="color: rgba(0, 0, 0, 1)">            }
      }
      
    }
   
</span>&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>&nbsp;</p>
<p>完毕!</p>
<p>good job! good luck!</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/hxun/p/11104367.html
頁: [1]
查看完整版本: JavaScript banner轮播 左右切换 圆点点击切换