实现图片自动播放与左右箭头进行一个图片的播放

-----20220514
前端作业

需求部分

我们要求将html,css,js进行结合
实现图片自动切换,具有淡出显示,淡出消失的功能,并且可以通过左右标签或左下角的圆圈来进行一个图片的转换

效果图

轮播图实现效果

js代码解释

首先通过getElementsByClassName的方法, 将文档中所有指定类名的元素集合作为 NodeList 对象。然后通过getElementByID,返回对拥有指定 ID 的第一个对象的引用,就这样引用左右标签。
之后通过清除class,为我们定义的参数items,circles加指定的属性,并为其赋指定的值
开始定时器的方法为摁右边的按钮,其他的部分代码上有注释,较为清楚

源码部分

js部分

window.onload=function(){
    var items=document.getElementsByClassName("item");
    //getElementsByClassName() 方法返回文档中所有指定类名的元素集合
    //作为 NodeList 对象。
    //NodeList 对象代表一个有顺序的节点列表。NodeList 对象 
    //我们可通过节点列表中的节点索引号来访问列表中的节点(索引号由0开始)。
    var circles=document.getElementsByClassName("circle");
    var leftBtn=document.getElementById("btn-left");
    //可返回对拥有指定 ID 的第一个对象的引用。
    var rightBtn=document.getElementById("btn-right");
    var content=document.querySelector('.contect');
    //querySelector() 方法返回文档中匹配指定 CSS 选择器的一个元素。
    var index=0;
    var timer=null;
    //清除class
    var clearclass=function(){
        for(let i=0;i<items.length;i++){
            items[i].className="item";
            circles[i].className="circle";
            circles[i].setAttribute("num",i);
            //添加指定的属性,并为其赋指定的值
        }
    }
    /*只显示一个class*/
    function move(){
        clearclass();
        items[index].className="item active";
        circles[index].className="circle white";
    }
    //点击右边按钮切换下一张图片
    rightBtn.onclick=function(){
        if(index<items.length-1){
            index++;
        }
        else{
            index=0;
        }
        move();
    }
    //点击左边按钮切换上一张图片
    leftBtn.onclick=function(){
        if(index<items.length){
            index--;
        }
        else{
            index=items.length-1;
        }
        move();
    }
    //开始定时器,点击右边按钮,实现轮播
    timer=setInterval(function(){
        rightBtn.onclick();
    },3000)
    //点击圆点时,跳转到对应图片
    for(var i=0;i<circles.length;i++){
        circles[i].addEventListener("click",function(){
            var point_index=this.getAttribute("num");
            index=point_index;
            move();
        })
    }
    //鼠标移入清除定时器,并开启一个定时器,使慢慢转动
    content.onmouseover=function(){
        clearInterval(timer);
        //clearInterval() 方法可取消由 setInterval() 设置的 timeout。
        //clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。
            timer=setInterval(function(){
                rightBtn.onclick();
            },60000)
    }
    //鼠标移出又开启定时器
    content.onmouseleave=function(){
        clearInterval(timer);
        timer=setInterval(function(){
            rightBtn.onclick();
        },3000)
    }
    }
    

css部分

*{
    margin: 0;
    padding: 0;
}
body{
    color: rgb(103, 57, 41);
}
.container{
    width: 1010px;
    margin: 0 auto;
    background-color: #aaa;
}
.header{
    width: 1000px;
    height: 250px;
    margin: 5px;
    background-color: #123;
    position: relative;
}
#item.a{
	list-style: none;
}
#item.li{
	list-style: none;
}
#item{
	width: 100%;
	height: 100%;
	
}
.item{
	position: absolute;
	opacity: 0;
	transition: all 1s;
	
}
.item.active{
	opacity:1;
}
img{
	width: 950px;
    height: 250px;
}
#btn-left{
	width: 30px;
	height: 69px;
	font-size: 30px;
	color: white;
	background-color:rgba(0,0,0,0.4);
	line-height: 69px;
	padding-left:5px;
	z-index: 10;/*始终显示在图片的上层*/
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-60%);/*使按钮向上偏移居中对齐*/
	cursor: pointer;
	opacity: 0;/*平时隐藏*/
}
.container:hover #btn-left{
	/*鼠标滑入,显示图标*/
	opacity: 1;
}

#btn-right{
	width: 26px;
	height: 69px;
	font-size: 30px;
	color: white;
	background-color:rgba(0,0,0,0.4);
	line-height: 69px;
	padding-left: 5px;
	z-index: 10;
	position: absolute;
	right: 0;
	top: 50%;
	cursor: pointer;
	opacity: 0;
	transform: translateY(-60%);
}
.container:hover #btn-right{
	opacity: 1;
}
#circle{
	height: 20px;
	display: flex;
	position: absolute;
	bottom: 35px;
	right: 25px;
}
.circle{
	width: 10px;
	height: 10px;
	border-radius: 10px;
	border: 2px solid white;
	background: rgba(0,0,0,0.4);
	cursor: pointer;
	margin: 5px;
}
.white{
	background-color: #FFFFFF;
}

html部分

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>咖啡店</title>
	<link rel="stylesheet" href="caffe.css">
    <script src="caffe.js"></script>
</head>
<body>
	<div class="container">
		<!-- 头部 -->
		<div class="header">
			<ul id="item">
				<li class="item">
					<a href="#"><img src="banner.jpg" ></a>
				</li>
				<li class="item">
					<a href="#"><img src="banner1.jpg" ></a>
				</li>
				<li class="item">
					<a href="#"><img src="banner2.jpg" ></a>
				</li>
				<li class="item">
					<a href="#"><img src="banner3.jpg" ></a>
				</li>
				<li class="item">
					<a href="#"><img src="banner4.jpg" ></a>
				</li>
			</ul>
			<div id="btn-left"><</div>
			<div id="btn-right">></div>
			<ul id="circle">
				<li class="circle"></li>
				<li class="circle"></li>
				<li class="circle"></li>
				<li class="circle"></li>
				<li class="circle"></li>
			</ul>
		</div>
		</body>
</html>
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值