[js] PC用图片双层自动轮播
#
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
html,
body,
ul,
li {
border: 0;
margin: 0;
padding: 0;
list-style: none;
box-sizing: border-box;
}
a:link {
color: #333;
text-decoration: none;
}
a:visited {
color: #333;
text-decoration: none;
}
a:hover {
color: #333;
text-decoration: none;
}
a:active {
color: #333;
text-decoration: none;
}
.wrapper {
margin: 0 auto;
width: 600px;
height: 350px;
position: relative;
}
.big {
overflow: hidden;
margin: 0 auto;
width: 400px;
height: 250px;
}
.leftArrow {
position: absolute;
left: 0px;
top: 65px;
font-size: 120px;
font-weight: bold;
z-index: 10;
}
.rightArrow {
position: absolute;
right: 0px;
top: 65px;
font-size: 120px;
font-weight: bold;
z-index: 10;
}
.leftSmall {
position: absolute;
left: 40px;
top: 265px;
font-size: 60px;
font-weight: bold;
z-index: 10;
}
.rightSmall {
position: absolute;
right: 40px;
top: 265px;
font-size: 60px;
font-weight: bold;
z-index: 10;
}
.small {
overflow: hidden;
margin: 0 auto;
width: 400px;
height: 100px;
}
.big ul {
width: 9999px;
}
.big li {
width: 400px;
height: 250px;
float: left;
}
.big li img {
width: 100%;
height: 100%;
}
.small ul {
width: 9999px;
list-style: none;
}
.small li {
width: 160px;
height: 100px;
float: left;
}
.small li img {
width: 100%;
height: 100%;
}
.border-big {
border: 4px lightgrey solid;
}
.border-small {
border: 2px lightcyan solid;
}
.border-sun {
border: 4px lightgreen solid;
}
.border-shine {
border: 2px lightpink solid;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="big">
<ul class="bigList">
<li>
<img src="./1.png" alt="大图1" />
</li>
<li>
<img src="./2.png" alt="大图2" />
</li>
<li>
<img src="./3.png" alt="大图3" />
</li>
<li>
<img src="./4.png" alt="大图4" />
</li>
<li>
<img src="./5.png" alt="大图5" />
</li>
</ul>
<a class="leftArrow" href="javascript:;"><</a>
<a class="rightArrow" href="javascript:;">></a>
</div>
<div class="small">
<ul class="smallList">
<li class="border-shine">
<img src="./1.png" alt="小图1" name="0" />
</li>
<li class="border-small">
<img src="./2.png" alt="小图2" name="1" />
</li>
<li class="border-small">
<img src="./3.png" alt="小图3" name="2" />
</li>
<li class="border-small">
<img src="./4.png" alt="小图4" name="3" />
</li>
<li class="border-small">
<img src="./5.png" alt="小图5" name="4" />
</li>
</ul>
<a class="leftSmall" href="javascript:;"><</a>
<a class="rightSmall" href="javascript:;">></a>
</div>
</div>
</div>
<script>
(function() {
var a = document.body.querySelector('.leftArrow'),
b = document.body.querySelector('.rightArrow'),
c = document.body.querySelector('.leftSmall'),
d = document.body.querySelector('.rightSmall'),
holder = document.body.querySelector('.wrapper'),
pos = 0,
num = 0,
big = document.body.querySelector('.bigList'),
small = document.body.querySelector('.smallList'),
smallChild = small.children,
total = smallChild.length,
realL = smallChild.length - 1,
stopLoop;
a.addEventListener('click', function() {
if (pos > 0) {
pos--;
changeThePos();
changeTheColor();
} else {
pos = realL;
changeThePos();
changeTheColor();
}
num = isOdd(pos);
});
b.addEventListener('click', function() {
if (pos < realL) {
pos++;
changeThePos();
changeTheColor();
} else {
pos = 0;
big.style.marginLeft = '0px';
small.style.marginLeft = '0px';
changeTheColor();
}
num = isOdd(pos);
});
c.addEventListener('click', function() {
if (num > 0) {
num -= 2;
small.style.marginLeft = '-' + (num * 160) + 'px';
} else {
num = realL;
small.style.marginLeft = '-' + (num * 160) + 'px';
}
});
d.addEventListener('click', function() {
if (num < realL) {
num += 2;
small.style.marginLeft = '-' + (num * 160) + 'px';
} else {
num = 0;
small.style.marginLeft = '0px';
}
});
small.addEventListener('mouseover', function(e) {
if (e.target.tagName === 'IMG') {
for (var i = 0; i < total; i++) {
if (e.target.name == i) {
smallChild[i].classList.add('border-shine');
smallChild[i].classList.remove('border-small');
big.style.marginLeft = '-' + (i * 400) + 'px';
pos = i;
num = isOdd(pos);
} else {
smallChild[i].classList.add('border-small');
smallChild[i].classList.remove('border-shine');
}
}
}
});
stopLoop = setTimeout(function() {
if (pos < realL) {
pos++;
changeThePos();
changeTheColor();
} else {
pos = 0;
big.style.marginLeft = '0px';
small.style.marginLeft = '0px';
changeTheColor();
}
num = isOdd(pos);
stopLoop = setTimeout(arguments.callee, 1000);
}, 1000);
holder.addEventListener('mouseout', function() {
stopLoop = setTimeout(function() {
if (pos < realL) {
pos++;
changeThePos();
changeTheColor();
} else {
pos = 0;
big.style.marginLeft = '0px';
small.style.marginLeft = '0px';
changeTheColor();
}
num = isOdd(pos);
stopLoop = setTimeout(arguments.callee, 1000);
}, 1000);
});
holder.addEventListener('mouseover', function() {
clearTimeout(stopLoop);
});
function changeThePos() {
big.style.marginLeft = '-' + (pos * 400) + 'px';
small.style.marginLeft = '-' + (pos * 160) + 'px';
}
function changeTheColor() {
for (var i = 0; i < total; i++) {
if (i === pos) {
smallChild[i].classList.add('border-shine');
smallChild[i].classList.remove('border-small');
} else {
smallChild[i].classList.add('border-small');
smallChild[i].classList.remove('border-shine');
}
}
}
function isOdd(figure) {
var a = !(figure % 2);
if (a) {
return figure;
} else {
return figure - 1;
}
}
})();
</script>
</body>
</html>
浙公网安备 33010602011771号