原生JS写带缩略图的无限平移轮播

带缩略图的简单的轮播效果图

效果图如下:
在这里插入图片描述
下面是代码:
html部分:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<link rel="stylesheet" type="text/css" href="css/new_file.css"/>
	</head>
	<body>
		<div class="box">
			<ul>
				<li>
					<img src="img/1.jpg" style="top: 0;">
				</li>
				<li>
					<img src="img/2.jpg">
				</li>
				<li>
					<img src="img/3.jpg" >
				</li>
				<li>
					<img src="img/4.jpg" >
				</li>
				<li>
					<img src="img/5.jpg" >
				</li>
				<li>
					<img src="img/6.jpg" >
				</li>
				<li>
					<img src="img/1.jpg">
				</li>
			</ul>
			<div class="ser">
				<div class="left">
				</div>
				<div class="left right">	
				</div>
			</div>
		</div>
		<div class="sbox">
			<ul>
				<li>
					<img src="img/5.jpg" >
				</li>
				<li>
					<img src="img/6.jpg" >
				</li>
				<li>
					<img src="img/1.jpg" >
				</li>
				<li>
					<img src="img/2.jpg" >
				</li>
				<li>
					<img src="img/3.jpg" >
				</li>
				<li>
					<img src="img/4.jpg" >
				</li>
				<li>
					<img src="img/5.jpg" >
				</li>
				<li>
					<img src="img/6.jpg" >
				</li>
				<li>
					<img src="img/1.jpg" >
				</li>
				<li>
					<img src="img/2.jpg" >
				</li>
			</ul>
			<div class="gray">
				<div class="grayon">
					
				</div>
				<div class="grayon" style="opacity: 0;">
					
				</div>
				<div class="grayon">
					
				</div>
			</div>
		</div>
		
		<script src="js/new_file.js" type="text/javascript" charset="utf-8"></script>
	</body>
</html>

CSS部分:

* {
  margin: 0;
  padding: 0;
  list-style: none;
}
.box {
  width: 300px;
  height: 300px;
  margin: 0 auto;
  position: relative;
  overflow: hidden;
}
.box ul{
	position: relative;
	width: 300px;
    height: 300px;
	display: flex;
}
.box ul li{
	width: 300px;
	height: 300px;
}
.box ul li img{
	width: 300px;
	height: 300px;
	position: absolute;
	left: 0;
	top: -300px;
	transition: all 0.5s ease;
}
.sbox{
	width: 300px;
	height: 100px;
	margin: 0 auto;
	position: relative;
	left: 0;
	overflow: hidden;
}
.sbox ul{
	position: relative;
	width: 800px;
	height: 100px;
	display: flex;
	left: -100px;
}
.sbox ul li{
	width: 100px;
	height: 100px;
	float: left;
	background-color: gray;
}
.sbox ul li img{
	width: 80px;
	height: 80px;
	padding: 10px 10px 10px 10px;
}
.ser{
	margin: 0 auto;
	width: 300px;
	height: 60px;
	position: absolute;
	top: 120px;
	z-index: 10;
}
.left{
	display: none;
	float: left;
	width: 60px;
	height: 60px;
	background:url(../img/btn.gif) 0 0 no-repeat;
}
.right{
	float: right;
	background:url(../img/btn.gif) 0 -60px no-repeat;
}
.gray{
	width: 300px;
	height: 100px;
	margin: 0 auto;
	position: absolute;
	top: 0;
}
.grayon{
	width: 100px;
	height: 100px;
	float: left;
	background: rgb(202,203,202,.7);
	cursor: pointer;
}
.grayon:hover{
	background: rgb(202,203,202,0);
}

JS部分:

function $c(cl) {
	return document.getElementsByClassName(cl);
}
var oBox=$c("box")[0];
var oUl = $c("sbox")[0].getElementsByTagName("ul")[0];
var oLi = oUl.getElementsByTagName("li");
var bUL=$c("box")[0].getElementsByTagName("ul")[0];
var bImg=bUL.getElementsByTagName("img");
var arrBtn = $c("left");
var pSha=$c("grayon");
var g = 0,
	kai = true;
arrBtn[0].addEventListener("click", left);
pSha[0].addEventListener("click", left);
arrBtn[1].addEventListener("click", right);
pSha[2].addEventListener("click", right);
oBox.onmousemove=function(ev){
	var oevent = ev || event;
    var distanceX = oevent.clientX-oBox.offsetLeft;
	if(distanceX<150){
		arrBtn[0].style.display="block"
		arrBtn[1].style.display="none"
	}else{
		arrBtn[0].style.display="none"
		arrBtn[1].style.display="block"
	}
}
oBox.onmouseout=function(ev){
	var oevent = ev || event;
    arrBtn[0].style.display="none"
    arrBtn[1].style.display="none"
}

function right() {
	if (kai) {
			kai = false;
			g++;
			bImg[g-1].style.zIndex="4";
            bImg[g].style.zIndex="5";
			bImg[g].style.transition="all 0.5s ease";
		    bImg[g].style.top="0px";
			setTimeout(function() {
			if(g==6){
				bImg[5].style.transition="none";
			}
			bImg[g-1].style.top="-300px";
			if (oUl.style.left == "-700px") {
				g = 0;
				oUl.style.transition = "none";
				oUl.style.left = -100 + "px";
			}
			}, 500);
			setTimeout(function() {
				if(g==0){
			   bImg[6].style.transition="none";
			   bImg[0].style.transition="none";
			   bImg[0].style.top="0px";
			   bImg[6].style.top="-300px";
			}
			pSha[1].style.opacity="0";
			}, 510);
				
			for(i=0;i<pSha.length;i++){
				pSha[i].style.opacity="0.5";
			}
			oUl.style.transition = "all 0.5s ease";
			oUl.style.left = -(g+1)* 100 + "px";
				
			setTimeout(function() {
				kai = true;
			}, 1000);
		}
	}

	function left() {
		if (kai) {
				kai = false;
				g--;
				if(g==-1){
					bImg[6].style.transition="none";
					bImg[6].style.zIndex="4";
					bImg[5].style.zIndex="5";
					bImg[0].style.transition="none";
					bImg[6].style.top="0px";
					bImg[0].style.top="-300px";
					bImg[5].style.transition="all 0.5s ease";
					bImg[5].style.top="0px";
					setTimeout(function() {
						bImg[6].style.top="-300px";
					}, 500);
				}else{
				bImg[g+1].style.zIndex="4";
				bImg[g].style.zIndex="5";
				bImg[g].style.transition="all 0.5s ease";
				bImg[g].style.top="0px";
				setTimeout(function() {
					bImg[g+1].style.transition="none";
					bImg[g+1].style.top="-300px";
					}, 500);
				}
				for(i=0;i<pSha.length;i++){
					pSha[i].style.opacity="0.5";
				}
				oUl.style.transition = "all 0.5s ease";
				oUl.style.left = -(g+1)* 100 + "px";
				setTimeout(function() {
					if (oUl.style.left == "0px") {
						g = 5;
						oUl.style.transition = "none";
						oUl.style.left = -600 + "px";
					}
					}, 500);
				setTimeout(function() {
					pSha[1].style.opacity="0";
				}, 510);	
				setTimeout(function() {
					kai = true;
				}, 1000);
			}
		}
    
    setInterval(right,1000)

(注:图片请自行添加这里是欠缺的)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值