用jquery实现图片轮播功能拓展

1 篇文章 0 订阅
1 篇文章 0 订阅

要求

实现图片轮播
1.图片自动切换(定时器);
2.鼠标悬停在图片上图片不切换(清除定时器)
3.鼠标悬停在按钮上时显示对应的图片(鼠标悬停事件)
4.鼠标悬停在图片上是现实左右箭头
5.点击左键切换到上一张图片,但图片为第一张时,点击切换到最后一张图片
6.点击右键切换到下一张图片,但图片为最后一张时,点击切换到第一张图片

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			#my_ul li{
				list-style: none;
				position: absolute;
			}
			#container{
				width: 450px;
				height: 270px;
				position: relative;
				margin: 0 auto;
			}
			.none{
				display: none;
			}
			#my_ul2 li{
				list-style: none;
				width: 25px;
				height: 25px;
				background-color: white;
				line-height: 25px;
				text-align: center;
				float: left;
				margin: 5px;
				border-radius: 5px;
			}
			#my_ul2{
				position: absolute;
				right: 0;
				bottom: 0px;
				width: 245px;
			}
		</style>
		<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
	</head>
	<body>
		<div id="container">
			<ul id="my_ul">
				<!-- 图片资源 -->
				<li><img src="img/01.jpg" ></li>
				<li><img src="img/02.jpg" ></li>
				<li><img src="img/03.jpg" ></li>
				<li><img src="img/04.jpg" ></li>
				<li><img src="img/05.jpg" ></li>
				<li><img src="img/06.jpg" ></li>
				<li><img src="img/07.jpg" ></li>
			</ul>
			<ul id="my_ul2">
				<!-- 按钮图标 -->
				<li>1</li>
				<li>2</li>
				<li>3</li>
				<li>4</li>
				<li>5</li>
				<li>6</li>
				<li>7</li>
			</ul>
			
		</div>
		<script type="text/javascript">
			$(function(){
				var i = 1;//负责记录轮播到第几个
				$("#my_ul li:gt(0)").addClass("none");//默认第一张图片显示剩下的不显示
				var time = setInterval(run,3000);
				$("#my_ul li").mouseover(function(){//鼠标放上停止波动
					clearInterval(time);
	
				})
				$("#my_ul li").mouseout(function(){//鼠标移开继续波动
					time = setInterval(run,3000);
					
				})
				
				$("#my_ul2 li").mouseover(function(){//鼠标在图标按钮上
					clearInterval(time);//先停止波动
					var index = $("#my_ul2 li").index(this);//获取当前鼠标放在哪一个li上
					i = index + 1;//将i重新赋值从li这个位置开始
					for(var j = 1 ; j <= 7 ; j++){
						if(j != index+1){//将不是li位置的元素隐藏
							$("#my_ul li:nth-child(" + j + ")").hide(1);
						}else{//将li位置元素显示
							$("#my_ul li:nth-child(" + j + ")").show(1);
						}
						
					}
				}
				)
				
				$("#my_ul2 li").mouseout(function(){//鼠标移开继续滚动
					time = setInterval(run,3000);
					
				})
				function run(){
					if(i == 7){//如果i到达最后的位置重置它
						$("#my_ul li:nth-child(" + i + ")").fadeToggle(3000);
						i = 1;
						$("#my_ul li:nth-child(" + i + ")").fadeToggle(3000);
					}else{
						$("#my_ul li:nth-child(" + i + ")").fadeToggle(3000);//隐藏
						i++;
						$("#my_ul li:nth-child(" + i + ")").fadeToggle(3000);//显示
					}
					return i;
				}
			})
		</script>
	</body>
</html>

思路
一.图片自动切换(定时器);

  1. 首先详见第一张图片展示剩下的隐藏
  2. 然后使用定时器依次将第i张图片隐藏,然后将第i+1张图片显示然后i++;
    二.鼠标悬停在图片上图片不切换(清除定时器)
  3. 鼠标放上停止定时器
  4. 鼠标移开开启定时器
    三.鼠标悬停在按钮上时显示对应的图片(鼠标悬停事件)
  5. 首先停止计时器
  6. 获取到当前鼠标停在第几个li上
  var index = $("#my_ul2 li").index(this);
  1. 将i的值改为当前显示的是第几个li
  2. 通过循环将li元素显示剩下的隐藏
  3. 最后当鼠标移开的时候重新开启计时器

4.鼠标悬停在图片上是现实左右箭头
5.点击左键切换到上一张图片,但图片为第一张时,点击切换到最后一张图片
6.点击右键切换到下一张图片,但图片为最后一张时,点击切换到第一张图片
感觉剩下的需求和第三条需求差不多就不写了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值