这期内容当中小编将会给大家带来有关怎么在web项目中实现一个手动轮播功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>轮播图</title>
<!-- <script type="text/javascript" src="demo.js"></script> -->
</head>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
}
a{
text-decoration: none;
}
#container{
position: relative;
width: 500px;
height: 260px;
margin: 20px auto;
overflow: hidden; /*溢出隐藏:只显示一张图片*/
}
#container .parent{
position: absolute;
width: 2500px; /*整个图片层长度:500*5=2500*/
height: 260px;
}
#container .parent li{
float: left;
width: 500px;
height: 100%;
}
#container .parent li img{
width: 100%;
height: 100%;
}
#container .btnLeft,
#container .btnRight{
width: 30px;
height: 30px;
background-color: #9E9E9E;
border-radius: 20%;
opacity: 80%;
position: absolute; /*包含块为图片显示层container*/
top: 0;
bottom: 0;
margin: auto;
font-size: 20px;
color: #f40;
text-align: center;
line-height: 30px;
}
#container .btnLeft{
left: 10px;
}
#container .btnRight{
right: 10px;
}
#container .btnLeft:hover,
#container .btnRight:hover{
opacity: 90%;
cursor: pointer;
}
/*蒙层*/
#container .modal{
width: 100%;
height: 40px;
background: rgba(0,0,0,.3);
position: absolute;
left: 0;
bottom: 0;
line-height: 40px;
padding: 0 40px;
box-sizing: border-box;
}
#container .modal .title{
float: left;
color: #fff;
font-size: 12px;
}
#container .modal .dots{
float: right;
position: absolute;
bottom: 10px;
left: 340px;
}
#container .modal .dots li{
width: 15px;
height: 15px;
border-radius: 50%;
float: left;
/*可以使用行块盒*/
/*display: inline-block;*/
margin: 0 5px;
cursor: pointer;
}
.clearfix::after{
content: "";
display: block;
clear: both;
}
.on{
background-color: red;
}
.off{
background-color: gray;
}
</style>
<body>
<div id="container">
<ul class="parent" >
<li><img src="1.jpg"></li>
<li><img src="2.jpg"></li>
<li><img src="3.jpg"></li>
<li><img src="4.jpg"></li>
<li><img src="5.jpg"></li>
</ul>
<div class="btnLeft"><</div>
<div class="btnRight">></div>
<div class="modal">
<div class="title">
<h3>轮播图</h3>
</div>
<div class="dots">
<ul class="clearfix">
<li class="on"></li>
<li class="off"></li>
<li class="off"></li>
<li class="off"></li>
<li class="off"></li>
</ul>
</div>
</div>
</div>
<script type="text/javascript">
var imgShow = document.getElementsByClassName('parent')[0],
dotList = document.querySelectorAll('.dots >.clearfix > li');
var btnLeft = document.getElementsByClassName('btnLeft')[0],
btnRight = document.getElementsByClassName('btnRight')[0];
var dotLen = dotList.length,
index = 0; //轮播层的图片索引,0表示第一张
//圆点显示
function showRadius() {
for(var i = 0; i < dotLen; i++) {
if(dotList[i].className === "on"){
dotList[i].className = "off";
}
}
dotList[index].className = "on";
}
//向左移动
btnLeft.onclick = function() {
index--;
if(index < 0){ /*第1张向左时,变为第5张*/
index = 4;
}
showRadius();
var left;
var imgLeft = imgShow.style.left;
if(imgLeft === "0px") { /*当是第1张时,每张图片左移,移4张图,位置为-(4*500)*/
left = -2000;
}
else{
left = parseInt(imgLeft) + 500; /*由于left为负数,每左移一张加500*/
}
imgShow.style.left = left + "px";
}
//向右移动
btnRight.onclick = function() {
index++;
if(index > 4){ /*第5张向右时,变为第1张*/
index = 0;
}
showRadius();
var right;
var imgLeft = imgShow.style.left;
if(imgLeft === "-2000px") { /*当是第5张时,第1张的位置为0*/
right = 0;
}
else{
right = parseInt(imgLeft) - 500; /*由于left为负数,每右移一张减500*/
}
imgShow.style.left = right + "px";
}
// 自动轮播
/*var timer;
function autoPlay() {
timer = setInterval(function() {
var right;
var imgLeft = imgShow.style.left;
if(imgLeft === "-2000px") {
right = 0;
}
else{
right = parseInt(imgLeft) - 500;
}
imgShow.style.left = right + "px";
} ,1000)
}
autoPlay();*/
for(var i = 0; i < dotLen; i++) {
/*利用闭包传递索引*/
(function(i) {
dotList[i].onclick = function() {
var dis = index - i; //当前位置和点击的距离
imgShow.style.left = (parseInt(imgShow.style.left) + dis * 500) + "px";
index = i; //显示当前位置的圆点
showRadius();
}
})(i);
}
</script>
</body>
</html>
上述就是小编为大家分享的怎么在web项目中实现一个手动轮播功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。