动态轮播图网页效果的实现

实现一个HTML5的轮播图网页效果

一、项目流程

  1. 创建基本的HTML结构
  2. 使用CSS美化网页
  3. 添加JavaScript交互效果
  4. 测试和优化网页的效果

二、实现步骤

1. 创建基本的HTML结构

首先,我们需要一个简单的HTML文件,来搭建页面的骨架。

这里我们定义了网页的结构,包含标题、按钮并引入了CSS、JavaScript文件。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>JS轮播图</title>
		<link rel="stylesheet" href="css/index.css" />
		<script type="text/javascript" src="js/index.js" ></script>
	</head>
	<body>
		<div class="main" id="main">
			<!--图片轮播-->
			<div class="banner" id="banner">
				<a href="javascript:void(0)">
					<div class="banner_slide slide1 slide_active" ></div>
				</a>
				<a href="Javascript:void(0)">
					<div class="banner_slide slide2"></div>
				</a>
				<a href="javascript:void(0)">
					<div class="banner_slide slide3"></div>
				</a>
			</div>
			<!--左,右按钮-->
			<!--a标签不做任何超链接跳转-->
			<a href="javascript:void(0)" class="button prev" id="left"></a>
			<a href="javascript:void(0)" class="button next" id="right"></a>
			<!--圆点导航-->
			<div class="dots" id="dots">
				<span class="active"></span>
				<span></span>
				<span></span>
			</div>
		</div>
	</body>
</html>

2.使用CSS美化网页

我们需要创建一个外部的CSS文件 index.css,用来编辑设置样式。

*{
	margin: 0px;
	padding: 0px;
}
.main{
	width: 1200px;
	height: 460px;
	margin: 30px auto;
	overflow: hidden;
	position: relative;
	border: 6px solid black;
	border-radius:10px;
}
.banner{
	width: 1200px;
	height: 460px;
	overflow: hidden;
	position: relative;
}
.banner_slide{
	width: 1200px;
	height: 460px;
	overflow: hidden;
	position: absolute;
	display: none;
}
.slide_active{
	display: block;
}
.slide1{
	background-image: url(../img/bg1.jpg);
}
.slide2{
	background-image: url(../img/bg2.jpg);
}
.slide3{
	background-image: url(../img/bg3.jpg);
}
.button{
	position: absolute;
	width: 40px;
	height: 80px;
	left: 0px;
	top: 50%;
	background: url(../img/arrow.png) no-repeat center center;
	margin-top: -40px;
}
.prev{
	transform: rotate(180deg);
}
.next{
	left: auto;
	right: 0px;
}
.button:hover{
	background-color: #333;
    opacity: 0.7;
}
.dots{
	position: absolute;
	right: 20px;
	bottom: 24px;
	text-align: right;
}
.dots span{
	width: 12px;
	height: 12px;
	background-color: rgba(7,17,17,0.4);
	display: inline-block;
	border-radius: 6px;
	box-shadow: 0px 0px 0px 2px rgba(255,255,255,0.8) inset;
	margin-left: 8px;
	cursor: pointer;  /*鼠标手指*/
}
.dots span.active{
	/*background-color:#fff;*/
	background-color: red;
	box-shadow: 0px 0px 0px 2px rgba(7,17,17,0.4) inset;
}

3.添加JavaScript代码实现动态倒计时功能效果

我们需要创建一个外部的JS文件 index.js,用来编辑设置动态轮播图的操作。

window.onload = banner;
function banner(){
	//封装一个代替getElementById()的方法
	function byId(id){
		//W3C标准不允许id为number
		return typeof(id) === "string" ? document.getElementById(id) : id;
	}
	console.log(byId("right"));
	var index = 0,
	    timer = null,
	    pics = byId("banner").getElementsByTagName("div"),
	    len = pics.length,
	    dots = byId("dots").getElementsByTagName("span"),
	    right =byId("right"),
	    left = byId("left");
	    //console.log(len);
	    function slideImg(){
	    	var main = byId("main");
	    	//划过清除定时器,离开继续
	    	main.onmouseover = function(){
	    		//划过清除定时器
	    		if(timer){
	    			clearInterval(timer);
	    		}
	    	}
	    	main.onmouseout = function(){
	    		timer = setInterval(function(){
	    			index++;
	    			if(index >= len){
	    				index = 0;
	    			}
	    			//console.log(index);
	    			//切换图片
	    			changeImg();
	    		},1500)
	    	}
	    	//自动在main上触发鼠标离开事件
	    	main.onmouseout();
	        //遍历所有的圆点,且绑定点击事件,点击圆点切换图片
	        		for(var d = 0; d < len; d++){
	        			//给所有span添加一个id属性,值为d,作为当前span的索引
	        			dots[d].id = d;
	        			dots[d].onclick = function(){
	        				//改变index为当前span的索引
	        				index = this.id;
	        				//调用changeImg()实现切换图片
	        				changeImg();
	        				
	        			}
	        		}        		
	        //下一张
	        right.onclick = function(){
	        	index++;
	        	if(index >= len){
	        		index = 0;
	        	}
	        	//调用changeImg()实现切换图片                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
	        	changeImg();
	        }
	        //上一张	
	        
	    }		
	   
	    
	    //切换图片
	    function changeImg(){
	    	//遍历banner所有的div及dots下所有的span,将div隐藏,将span清除类
	    	for(var i = 0; i < len; i++){
	    		pics[i].style.display = "none";
	    		dots[i].className ="";
	    	}
	    	//根据index索引找到当前的div和当前span,将其显示出来和设置为当前
	    	pics[index].style.display = "block";
	    	dots[index].className = "active";
	    }
	    slideImg();
}

4. 测试和优化

完成以上步骤后,务必确保在不同设备和浏览器上测试你的页面,查看响应式设计是否有效,并对代码进行优化。例如,确保CSS选择器高效,避免过多的DOM操作等。

三、效果展示

项目下载地址

download
来源:默认下载
阅读剩余
THE END