用js写出5种不同的轮播图

9 篇文章 0 订阅

1、轮播

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.wrapper {
				width: 600px;
				height: 350px;
				margin: 0 auto;
				position: relative;
			}

			img {
				width: 100%;
				height: 100%;
			}

			.btn {
				width: 150px;
				display: flex;
				justify-content: space-around;
				position: absolute;
				left: 225px;
				bottom: 10px;
			}

			.btn span {
				display: block;
				width: 15px;
				height: 15px;
				border: 1px solid white;
				/* border-radius: 50%; */
			}

			.active {
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div class="wrapper">
			<img src="./imgs/adt1.png" alt="">
			<div class="btn">
				<span class="active"></span>
				<span></span>
				<span></span>
				<span></span>
				<span></span>
			</div>
		</div>
		<script>
			var _img = document.querySelector("img");
			var _wrapper = document.querySelector(".wrapper");
			var _spots = document.querySelectorAll(".btn span");
			var imgs = ['./imgs/adt1.png', './imgs/adt2.png', './imgs/adt3.png', './imgs/adt4.png', './imgs/adt5.png']
			autoplay();
			var id;
			var index = 1;

			function autoplay() {
				id = setInterval(function() {
					_img.src = imgs[index]
					spots();
					index++;
					if (index >= 5) {
						index = 0;
					}
				}, 2000)
			}

			function spots() {
				for (var i = 0; i < _spots.length; i++) {
					if (i == index) {
						_spots[i].className = "active"
					} else {
						_spots[i].className = ""
					}
				}
			}

			//悬浮时停止
			_wrapper.onmouseover = function() {
				clearInterval(id);
			}
			//离开时继续
			_wrapper.onmouseout = function() {
				autoplay();
			}
		</script>
	</body>
</html>

 效果展示:

2、轮播-替换src

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.wrapper{
				width: 600px;
				height: 350px;
				margin: 0 auto;
				position: relative;
			}
			img{
				width: 100%;
				height: 100%;
			}
			.btn{
				width:150px;
				display: flex;
				justify-content: space-around;
				position: absolute;
				left:225px;
				bottom:10px;
			}
			
			.btn span{
				display: block;
				width:15px;
				height:15px;
				border: 3px solid white;
				border-radius: 50%;
			}
			.active{
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div class="wrapper">
			<img src="./imgs/1.png" alt="">
			<div class="btn">
				<span class="active"></span>
				<span></span>
				<span></span>
				<span></span>
				<span></span>
			</div>
		</div>
		<script>
			var _img=document.querySelector("img");
			var _wrapper=document.querySelector(".wrapper");
			var _spots=document.querySelectorAll(".btn span");
			var imgs=['./imgs/1.png','./imgs/2.png','./imgs/3.png','./imgs/4.png','./imgs/5.png']
			
			//自动播放
			autoplay();
			var id;
			var index=1;
			function autoplay(){
				id=setInterval(function(){
					_img.src=imgs[index];
					//控制小圆点
					spots();
					index++;
					if(index>=5){
						index=0;
					}
				},2000)
			}
			
			//小圆点变化
			function spots(){
				for (var i = 0; i < _spots.length; i++) {
					if(i==index){
						_spots[i].className="active"
					}else{
						_spots[i].className=""
					}
				}
			}
			//悬浮时停止
			_wrapper.onmouseover=function(){
				clearInterval(id);
			}
			//离开时继续
			_wrapper.onmouseout=function(){
				autoplay();
			}
		</script>
	</body>
</html>

效果展示:

3、轮播-滚动条

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.wrapper{
				width: 600px;
				height: 350px;
				overflow: hidden;
				margin: 0 auto;
				
			}
			img{
			   width: 600px;
			   height: 350px;	
			}
			.contain{
				display: flex;
				width: 3600px;
			}
		</style>
	</head>
	<body>
		<div class="wrapper">
			<div class="contain">
				<img src="./imgs/1.png"/>
				<img src="./imgs/2.png"/>
				<img src="./imgs/3.png"/>
				<img src="./imgs/4.png"/>
				<img src="./imgs/5.png"/>
				<img src="./imgs/1.png"/>
			</div>
		</div>
		<script>
			var _wrapper=document.querySelector(".wrapper");
			var index=0;
			var num=setInterval(function(){
				//滚动一张
				var moveLength=0; //用标识是否走完一张
				var id=setInterval(function(){
					_wrapper.scrollLeft+=8;
					moveLength+=8
					if(moveLength>=600){
						clearInterval(id);
					}
				},20) //一张需要2250毫秒
				index++;
				// 走完所有下标和滚动都要从0开始
				if(index>=6){
					index=0;
					_wrapper.scrollLeft=0;
				}
			},3000)
		</script>
	</body>
</html>

效果展示:

4、轮播-定位left

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.wrapper{
				width: 600px;
				height: 350px;
				overflow: hidden;
				margin: 0 auto;
				position: relative;
			}
			img{
			   width: 600px;
			   height: 350px;	
			}
			.contain{
				display: flex;
				width: 3000px;
				position: absolute;
				left: 0;
				top: 0;
			}
			.btn{
				width:150px;
				display: flex;
				justify-content: space-around;
				position: absolute;
				left:225px;
				bottom:10px;
			}
			
			.btn span{
				display: block;
				width:15px;
				height:15px;
				border: 3px solid white;
				border-radius: 50%;
			}
			
			.wrapper a{
				text-decoration: none;
				font-size: 50px;
				color: red;
				position: absolute;
				top: 35%;
			}
			
			.wrapper a:nth-of-type(1){
				left: 10px;
				
			}
			.wrapper a:nth-of-type(2){
				right: 10px;
			}
			.active{
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div class="wrapper">
			<div class="contain">
				<img src="./imgs/1.png"/>
				<img src="./imgs/2.png"/>
				<img src="./imgs/3.png"/>
				<img src="./imgs/4.png"/>
				<img src="./imgs/5.png"/>
			</div>
			<div class="btn">
				<span class="active"></span>
				<span></span>
				<span></span>
				<span></span>
				<span></span>
			</div>
			<a href="javascript:void(0);">&lt;</a>
			<a href="javascript:void(0);">&gt;</a>
		</div>
		<script>
			var _wrapper=document.querySelector(".wrapper");
			var _contain=document.querySelector(".contain");
			//下一张按钮
			var _nextPic=document.querySelector(".wrapper a:nth-of-type(2)");
			// 上一张按钮
			var _prevPic=document.querySelector(".wrapper a:nth-of-type(1)");
		    //获取所有小圆点
			var _spots=document.querySelectorAll(".btn span");
		
			
			// 下一张
			_nextPic.onclick=function(){
				next_pic();
			}
			var index=0;
			function next_pic(){
				_contain.style.left=_contain.offsetLeft-600+"px";
				if(_contain.offsetLeft<=-3000){
					_contain.style.left=0;
				}
				index++;
				if(index>4){
					index=0;
				}
				spots();
			}
			
		    // 上一张
			_prevPic.onclick=function(){
				prev_pic();
			}
		    function prev_pic(){
		    	_contain.style.left=_contain.offsetLeft+600+"px";
		    	if(_contain.offsetLeft>0){
		    		_contain.style.left=-2400+"px";
		    	}
		    	index--;
		    	if(index<0){
		    		index=4;
		    	}
				spots();
		    }
			
			//自动轮播
			autoplay();
			var id;
			function autoplay(){
				id=setInterval(function(){
					next_pic();
				},2000)
			}
			
			//小圆点变化
			function spots(){
				for (var i = 0; i < _spots.length; i++) {
					if(i==index){
						_spots[i].className="active"
					}else{
						_spots[i].className=""
					}
				}
			}
			
			//悬停控制
			_wrapper.onmouseover=function(){
				clearInterval(id);
			}
			_wrapper.onmouseout=function(){
				autoplay();
			}
		</script>
	</body>
</html>

 效果展示:

5、轮播-悬浮定位left

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.wrapper{
				width: 600px;
				height: 350px;
				overflow: hidden;
				margin: 0 auto;
				position: relative;
			}
			img{
			   width: 600px;
			   height: 350px;	
			}
			.contain{
				display: flex;
				width: 3000px;
				position: absolute;
				left: 0;
				top: 0;
			}
			.btn{
				width:150px;
				display: flex;
				justify-content: space-around;
				position: absolute;
				left:225px;
				bottom:10px;
			}
			
			.btn span{
				display: block;
				width:15px;
				height:15px;
				border: 3px solid white;
				border-radius: 50%;
			}
			
			.wrapper a{
				text-decoration: none;
				font-size: 50px;
				color: red;
				position: absolute;
				top: 35%;
			}
			
			.wrapper a:nth-of-type(1){
				left: 10px;
				
			}
			.wrapper a:nth-of-type(2){
				right: 10px;
			}
			.active{
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div class="wrapper">
			<div class="contain">
				<img src="./imgs/1.png"/>
				<img src="./imgs/2.png"/>
				<img src="./imgs/3.png"/>
				<img src="./imgs/4.png"/>
				<img src="./imgs/5.png"/>
			</div>
			<div class="btn">
				<span class="active"></span>
				<span></span>
				<span></span>
				<span></span>
				<span></span>
			</div>
			<a href="javascript:void(0);">&lt;</a>
			<a href="javascript:void(0);">&gt;</a>
		</div>
		<script>
			var _wrapper=document.querySelector(".wrapper");
			var _contain=document.querySelector(".contain");
			var _btn=document.querySelector(".btn");
			//下一张按钮
			var _nextPic=document.querySelector(".wrapper a:nth-of-type(2)");
			// 上一张按钮
			var _prevPic=document.querySelector(".wrapper a:nth-of-type(1)");
			
			var _btn=document.querySelector(".btn");
		    //获取所有小圆点
			var _spots=document.querySelectorAll(".btn span");
		
			
			// 下一张
			_nextPic.onclick=function(){
				next_pic();
			}
			var index=0;
			function next_pic(){
				_contain.style.left=_contain.offsetLeft-600+"px";
				if(_contain.offsetLeft<=-3000){
					_contain.style.left=0;
				}
				index++;
				if(index>4){
					index=0;
				}
				spots();
			}
			
		    // 上一张
			_prevPic.onclick=function(){
				prev_pic();
			}
		    function prev_pic(){
		    	_contain.style.left=_contain.offsetLeft+600+"px";
		    	if(_contain.offsetLeft>0){
		    		_contain.style.left=-2400+"px";
		    	}
		    	index--;
		    	if(index<0){
		    		index=4;
		    	}
				spots();
		    }
			
			//自动轮播
			autoplay();
			var id;
			function autoplay(){
				id=setInterval(function(){
					next_pic();
				},2000)
			}
			
			//小圆点变化
			function spots(){
				for (var i = 0; i < _spots.length; i++) {
					if(i==index){
						_spots[i].className="active"
					}else{
						_spots[i].className=""
					}
				}
			}
			
			//悬停控制
			_wrapper.onmouseover=function(){
				clearInterval(id);
			}
			_wrapper.onmouseout=function(){
				autoplay();
			}
			
			
			//悬浮小圆点更新图片
			_btn.onmouseover=function(event){
				//获取悬浮的小圆点
				var target=event.srcElement||event.target;
				if(target.nodeName=='SPAN'){
					//查询小圆点下标
					var n=Array.from(_spots).findIndex(function(tag){
						return tag==target
					})
					//更新下标
					index=n;
					//更新位移
					_contain.style.left=-600*n+"px";
					//更新颜色
					spots();
				}
			}
			
		</script>
	</body>
</html>

效果展示:

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值