文章目录
- 用到的jQuery方法
- 分析原理
- 代码
用到的jQuery方法
jQuery的下载的话,大家直接去官网下载就行了,没什么特别的要求,需要用到的jQuery方法和代码如下:
🐳jQuery的siblings()方法:
siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的。
🐳jQuery的trigger() 方法
trigger() 方法触发被选元素的指定事件类型。
🐳jQuery的eq()选择器
eq() 选择器选取带有指定 index 值的元素。
index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1)。
经常与其他元素/选择器一起使用,来选择指定的组中特定序号的元素。
分析原理
随便来几个网站看看:
其实整个轮播图就像一跳链子,链子的长度—>就是所有图片的宽度之和!(也就是ul的长度!这里假设这个轮播图是利用无序列表ul-li做的),然后在最外层套一个盒子,盒子显示图片显示具体位置,其他部分----->overflow:hidden!!!具体的代码可以看下面的代码实现~
代码
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery轮播图</title>
<link rel="stylesheet" href="./css/test.css">
<script src="./js/jquery.min.js"></script>
</head>
<body>
<div class="slideShow">
<!--图片布局开始banner-->
<ul>
<li><a href="#"><img src="./images/g-1.jpg" width="100%"/></a></li>
<li><a href="#"><img src="./images/g-2.jpg" width="100%"/></a></li>
<li><a href="#"><img src="./images/g-5.jpg" width="100%"/></a></li>
<li><a href="#"><img src="./images/g-4.jpg" width="100%"/></a></li>
</ul>
<!--图片布局结束-->
<!--按钮布局开始-->
<div class="showNav">
<span class="active">1</span> <span>2</span> <span>3</span> <span>4</span>
</div>
<!--按钮布局结束-->
</div>
<script src="js/jquery-1.11.3.js"></script>
<script src="js/layout.js"></script>
</body>
<script>
$(document).ready(function(){
var slideShow=$(".slideShow"),
ul=slideShow.find("ul"),
showNumber=slideShow.find(".showNav span"),//获取按钮
oneWidth=slideShow.find("ul li").eq(0).width(); //获取每个图片的宽度
var timer=null; //定时器返回值,主要用于关闭定时器
var iNow=0; //iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
showNumber.on("click",function(){
//为每个按钮绑定一个点击事件
$(this).addClass("active").siblings().removeClass("active"); //按钮点击时为这个按钮添加高亮状态,并且将其他按钮高亮状态去掉
var index=$(this).index(); //获取哪个按钮被点击,也就是找到被点击按钮的索引值
iNow=index;
ul.animate({
"left":-oneWidth*iNow, //注意此处用到left属性,所以ul的样式里面需要设置position: relative; 让ul左移N个图片大小的宽度,N根据被点击的按钮索引值iNOWx确定
})
});
timer=setInterval(function(){ //打开定时器
iNow++; //让图片的索引值次序加1,这样就可以实现顺序轮播图片
if(iNow>showNumber.length-1){ //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
iNow=0;
}
showNumber.eq(iNow).trigger("click"); //模拟触发数字按钮的click(重点)
},2000); //2000为轮播的时间
})
</script>
</html>
css
@charset "UTF-8";
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
/* 去除前面的点 */
}
.slideShow{
width: 800px;
/* height: 400px */
border: 1px #eeeeee solid;
margin: 20px auto;
position: relative;
overflow: hidden;
/*此处需要将溢出框架的图片部分隐藏*/
}
.slideShow ul{
width: 4800px;
position: relative;
/*此处需注意relative : 对象不可层叠,但将依据left,right,top,bottom等属性在正常文档流中偏移位置,如果没有这个属性,图片将不可左右移动*/
transition: all 1s ease-in-out;
/* 设置移动动画 */
}
.slideShow ul li{
float: left;
/*让四张图片左浮动,形成并排的横着布局,方便点击按钮时的左移动*/
width: 800px;
}
.slideShow .showNav{
/*用绝对定位给数字按钮进行布局*/
position: absolute;
right: 10px;
bottom: 15px;
text-align:center;
font-size: 12px;
line-height: 20px;
}
.slideShow .showNav span{
cursor: pointer;
display: block;
float: left;
width: 20px;
height: 20px;
background: #814634;
opacity: .5;
margin-left: 2px;
border-radius: 50%;
color: #fff;
}
.slideShow .showNav .active{
opacity: 1;
background: #e03e0d;
}