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><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript banner轮播 左右切换 圆点点击切换</title>
<style type="text/css"><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>>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></style>
</head>
<body>
<div id="banner">
<!-- 轮播图片 -->
<div id="tab">
<img class="tabImg" src="images/banner1.jpg" height="400"/>
<img class="tabImg" src="images/banner2.jpg" height="400"/>
<img class="tabImg" src="images/banner3.jpg" height="400"/>
<img class="tabImg" src="images/banner4.jpg" height="400"/>
</div>
<!-- 指示符 -->
<div class="lunbo_btn">
<span num="0" class="tabBtn hover"></span>
<span num="1" class="tabBtn"></span>
<span num="2" class="tabBtn"></span>
<span num="3" class="tabBtn"></span>
</div>
<!-- 左右切换按钮 -->
<div class="arrow prve">
<span class="slider_left"></span>
</div>
<div class="arrow next">
<span class="slider_right"></span>
</div>
</div>
<script type="text/javascript">
<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<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<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<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></script>
</body>
</html></pre>
</div>
<p> </p>
<p>完毕!</p>
<p>good job! good luck!</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/hxun/p/11104367.html
頁:
[1]