(超强理解)用jQuery实现轮播图实现方法+解析原理

2023-05-16

最近这段时间,我本人对原生前端的代码、css、js进行了非常认真、详细的理解和训练,我收获了特别多,最近陆续频繁地出博客,现在继续上一篇博客轮番图问题,现在用jQuery实现,其实非常地简单,希望大家看完也已有所收获,现在先来看看效果图,这里的话,因为我懒得再录一个效果图了,都是一样的做法,下面的说明我用的是别的网站的比拟图,做法都是一样的
随便看看😎😎😎👇

在这里插入图片描述

文章目录

  • 用到的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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(超强理解)用jQuery实现轮播图实现方法+解析原理 的相关文章

随机推荐