JS基础——实现图片轮播效果础

        目前还没有开始PHP的学习,最近在慕课网上的JS课程快听完了,国庆假期回去之后开始PHP学习进阶之路。在JS基础课程的最后要求实现一个图片轮播的效果,要求是打开后,隔1秒自动播放,鼠标滑过导航菜单,标题字会出现背景色,就像下图这样


我写的代码中,没有实现“点击标题切换到相应的图片”,这个应该是在JS中修改,哎~先把我的代码附上~



<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>实现图片轮播效果</title>
	<link rel="stylesheet" type="text/css" href="CSS/style.css">
</head>
<body>
	<div id="main" class="main">
		<!--导航菜单-->
		<div class="menu" id="menu">
			<ul id="menu-ul">
				<li><a href="">首页</a></li>
				<li><a href="">点击查看</a></li>
				<li><a href="">会自动的</a></li>
				<li><a href="">我的网站</a></li>
			</ul>
		</div>
		<!--图片轮播-->
		<div class="banner"  id="banner">
			<a href="">
				<div class="banner-side slide1 slide-active"></div>
			</a>
			<a href="">
				<div class="banner-side slide2 "></div>
			</a>
			<a href="">
				<div class="banner-side slide3 "></div>
			</a>
			<a href="">
				<div class="banner-side slide4 "></div>
			</a>
		</div>
	</div>
	<script src="JavaScript/JAVASCRIPT.js"></script>
</body>
</html>
*{
	margin:0;
	padding: 0;
}


a{
	text-decoration: none;
}


ul{
	list-style:none;
}


body{
	font-family: "微软雅黑";
	color: #666;
}


.main{
	width: 1200px;
	height: 460px;
	margin:30px auto;
	position: relative;
	overflow:hidden;
}


.banner{
	width: 1200px;
	height: 460px;
	overflow:hidden;
	position: relative;
}


.banner-side{
	width: 1200px;
	height: 460px;
	background-repeat: no-repeat;
	float: left;
	display: none;
}


.slide-active{
	display: block;
}


.slide1{
	background-image:url(../img/1.jpg);
}


.slide2{
	background-image:url(../img/3.jpg);
}


.slide3{
	background-image:url(../img/4.jpg);
}


.slide4{
	background-image:url(../img/5.jpg);
}


/*导航菜单*/
.menu{
	width: 100%;
    height:40px;
}
.menu ul{
	width: 100%;
    height: 40px;
}
.menu ul li{
	float: left;
    width: 300px;
}
.menu-active{
	background-color:#ffcc00;
    font-weight:bold;
    border: transparent;
    border-radius: 10px;
}
.menu ul li a{
	display: inline-block;
    width: 100%;
    margin: 0 auto;
    text-align: center;
    line-height: 40px;
}
//封装一个代替getElementByID()的方法
function byId(id){
	return typeof(id) === "string"?document.getElementById(id):id;
}
//console.log(byId("main"));


//全局变量
var index = 0,
    timer = null,
    pics = byId("banner").getElementsByTagName("div"),
    menuUlli = byId("menu-ul").getElementsByTagName("a"),
    len = pics.length;


    
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();
		},1000);
	}
//自动在main上触发鼠标离开的事件
main.onmouseout();


//点击文字,切换图片(遍历所有点击,且绑定点击事件,点击文字切换图片)
for(var m=0;m<len;m++){
	//alert(m);
    //给所有li添加一个id的属性,值为当前li的索引
    menuUlli[m].id = m;
    //console.log(m);
	menuUlli[m].onclick = function(){
	  //alert("hello");
	//改变index为当前li的id值
	index = this.id;
	console.log(this.id);
	this.className = "menu-active";
	//调用changeImg(),实现切换图片
	changeImg();
	}
  }
}




//切换图片
function changeImg(){
	//console.log(index);
	//遍历banner下所有的div,将其隐藏,遍历ul下的里将其清除
	for (var i=0;i<len;i++){
		pics[i].style.display = "none";
		menuUlli[i].className = "";
	}
	//根据index索引找到当前div,将其显示出来
    pics[index].style.display = 'block';
    menuUlli[index].className = "menu-active";
}


slideImg();



正在努力修改中~希望有看到的大神可以指点下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,可以使用以下代码实现图片轮播效果: HTML代码: ``` <div class="slider"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> ``` CSS代码: ``` .slider { position: relative; width: 100%; height: 400px; overflow: hidden; } .slider img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: opacity 1s ease-in-out; } .slider img.active { opacity: 1; } ``` JavaScript代码: ``` var images = document.querySelectorAll('.slider img'); var currentImage = 0; function changeImage() { images[currentImage].classList.remove('active'); currentImage = (currentImage + 1) % images.length; images[currentImage].classList.add('active'); } setInterval(changeImage, 3000); ``` 这段代码会每隔3秒钟切换一张图片,实现轮播效果。 ### 回答2: 要使用JavaScript实现图片轮播效果,可以按照以下步骤进行操作: 1.HTML结构:创建一个包含图片的容器,通常使用div元素,并为其添加一个特定的ID,以便在JavaScript中进行访问。在容器内部创建一个图片列表,每个图片使用img标签来表示。 2.CSS样式:使用CSS对容器进行样式设置,指定容器的宽度和高度,并隐藏超出容器范围的图片。为了实现图片的切换效果,可以使用CSS3的过渡效果或者动画效果。 3.JavaScript代码:使用JavaScript来控制图片的切换。首先,获取容器和图片列表的引用。然后,创建一个变量来记录当前显示的图片索引。使用定时器函数setInterval来循环切换图片。在定时器回调函数中,根据当前显示的图片索引,修改图片列表的偏移量,使下一张图片显示出来。同时,更新当前显示的图片索引。 4.添加事件监听器:可以为图片列表添加鼠标移入和移出的事件监听器,当鼠标移入时,停止图片切换;当鼠标移出时,重新开始切换。 5.其他功能:根据需求,还可以添加其他功能,例如添加导航按钮,点击按钮可以切换到特定的图片;添加图片指示器,显示当前显示图片的信息等。 总之,使用JavaScript实现图片轮播效果的关键是通过控制图片列表的偏移量来切换图片,并使用定时器来循环切换。同时,可以通过CSS样式和JavaScript事件监听器来增强用户体验和功能。 ### 回答3: 实现图片轮播效果可以使用JavaScript编写代码,以下是一个基本的实现方法: 1. 首先,HTML中需要一个图片展示的区域,可以使用`<div>`标签或者`<img>`标签来实现。 2. 使用JavaScript获取到需要进行轮播的图片列表,可以使用数组来存储,每个元素存储图片的路径。 3. 设置一个计数器,初始值为0,用于记录当前显示的图片索引。 4. 创建一个函数,用于切换图片,可以命名为`changeImage`。 5. 在`changeImage`函数中,通过获取图片展示区域的元素,然后设置其`src`属性为当前图片索引所对应的图片路径。 6. 在`changeImage`函数中,将计数器加1,然后判断是否超出了图片列表的长度,如果超出了,则将计数器重置为0,从头开始循环轮播。 7. 为了实现轮播效果,可以使用`setInterval`函数来设置一个定时器,每隔一定的时间间隔调用一次`changeImage`函数。 下面是一个示例代码: ```html <body> <div id="imageArea"> <img id="image" src=""> </div> <script> var imageList = ["image1.jpg", "image2.jpg", "image3.jpg"]; // 图片列表 var currentIndex = 0; // 当前显示的图片索引 function changeImage() { var imageArea = document.getElementById("imageArea"); var image = document.getElementById("image"); image.src = imageList[currentIndex]; currentIndex++; if (currentIndex >= imageList.length) { currentIndex = 0; // 重置索引,从头开始循环轮播 } } setInterval(changeImage, 2000); // 每隔2秒切换一次图片 </script> </body> ``` 通过以上的代码,每隔2秒钟,图片会自动切换一次,实现了简单的图片轮播效果。可以根据实际需求修改代码,适配自己的图片列表和时间间隔。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值