温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

一款不用任何插件精美小巧的JQuery图片轮播

发布时间:2020-07-10 22:41:57 来源:网络 阅读:1728 作者:axlnrose 栏目:web开发


现在好多带插件的JQuery焦点图片效果,一个网站那么多效果就要好多插件,这无疑给网站增加一定的负担,现在介绍一款不用任何插件,代码量很少且便于操作的图片轮播效果,希望有所帮助

说下思路,比如有三张图片需要轮播,首先把除了第一张以外的图片隐藏掉,然后点击图片右下方相应的按钮来切换图片显示,用JQuery的fadeIn和fadeOut效果就可以,最后设置延时自动加载方法setInterval()来实现图片轮播到头后自动开始新一轮轮播。

效果预览:

一款不用任何插件精美小巧的JQuery图片轮播

 

HTML部分代码:

 

  1. <div id="banner"> 
  2.     <div id="banner_bg"></div> 
  3.     <div id="banner_info"></div> 
  4.     <ul> 
  5.     <li></li> 
  6.     <li></li> 
  7.     <li></li> 
  8.     </ul> 
  9.     <div id="banner_list"> 
  10.     <a href="#"><img src=" " alt="bing读心机器人" title="bing读心机器人" border="0" width="705" height="240"/></a> 
  11.     <a href="#"><img src=" " alt="手机辐射监测器" title="手机辐射监测器" border="0" width="705" height="240"/></a> 
  12.     <a href="#"><img src=" " alt="GIF快手" title="GIF快手" border="0" width="705" height="240"/></a> 
  13.     </div> 
  14. </div> 

#banner_bg是图片下方半透明的title背景图
#banner_info里面内容显示图片标题
<ul>部分是右下方三个切换图片的小按钮
#banner_list里面是要轮播的三张图片

CSS样式:

  1. #banner {position:relativewidth:705pxheight:240pxoverflow:hiddenfont-size:16pxmargin:5px auto;} 
  2. #banner_list img {border:0px;} 
  3. #banner_bg {width:705px;position:absolutecolor:#fff; bottom:0background:url(../v2_p_w_picpaths/toumingbar.png);height:38px;z-index:1000;cursor:pointerline-height:38pxfont-size:14px;} 
  4. #banner_info{position:absolute; bottom:0px; left:5px;height:38pxline-height:38pxcolor:#fff;z-index:1001;cursor:pointer
  5. #banner ul {position:absolute;list-style-type:none; ;z-index:1002;margin:0padding:0; bottom:8px; right:5px;} 
  6. #banner ul li {width:18pxheight:18px;float:left;display:block;cursor:pointermargin:0px autobackground:url(../v2_p_w_picpaths/scropoint.png) no-repeat;overflow:hiddencolor:#a3a1a2font-size:9pxline-height:18pxtext-align:center;} 
  7. #banner ul li.on {background:url(../v2_p_w_picpaths/scropoint_on.png) no-repeatcolor:#78e927;} 
  8. #banner_list a{position:absolute;

JS部分:

  1. <script type="text/javascript"> 
  2.     var n =0;  
  3.     var t;  
  4.     var count; //定义所需变量 
  5.     $(function(){  
  6.         $("li:first").addClass("on");  //给第一个按钮加上选中样式 
  7.         count=$("#banner_list a").length; //为了让HTML上的代码可自动循环就必须定义banner_list下所含图片的长度           
  8.         $("#banner_list a:not(:first-child)").hide(); //让除了不是第一张图的隐藏掉 
  9.         $("#banner_info").html($("#banner_list a:first-child").find("img").attr('alt')); //把图片的alt属性的值添加到标题栏上去 
  10.         $("#banner_info").click(function(){window.open($("#banner_list a:first-child").attr('href'), "_blank")}); //点击标题另开新窗口打开对应链接 
  11.         var bli = $("#banner li");  
  12.         bli.each(function(i){ //利用JQuery的遍历实现点击li的时候自动切换到下一张 
  13.             bli.eq(i).click(function(){  
  14.             n = i;  
  15.             $("#banner_info").html($("#banner_list a").eq(i).find("img").attr('alt')); 
  16.             $("#banner_list a").filter(":visible").fadeOut(1000).parent().children().eq(i).fadeIn(500); //筛选出所有可见元素,然后取当前点击的fadeOut,其他的fadeIn 
  17.             $(this).addClass("on"); //给所点击的li加上样式 
  18.             $(this).siblings().removeAttr("class");  
  19.                 }); //移除同级li的样式 
  20.             }); 
  21.             t = setInterval("showAuto()", 3000);  
  22.             $("#banner").hover(function(){clearInterval(t)}, function(){t = setInterval("showAuto()", 3000);});  
  23.     }) //设置自动执行时间为3s,利用setInterval自动无限延时加载,同时鼠标放上去后移除自动加载效果,鼠标移开后再继续执行轮播方法。 
  24.   
  25.     function showAuto()  
  26.     {  
  27.         n = n >=count?0 : ++n; //如果n>=图片总个数的话重新赋值为0,也就是从头算起,达到自动切换到第一张的效果 
  28.         $("#banner li").eq(n).trigger('click'); 
  29.     } //在每一个匹配的li上绑定触发click事件  
  30. </script> 

 

 现在发现这个图片轮播在谷歌和FF浏览器下有bug,就是当切换到别的标签页的时候动画停止执行了,等你再切换过来的时候会发现动画疯狂执行,可能是由于浏览器线程处理机制的问题,解决办法是在动画执行完毕之后加上JQuery的stop方法来停止被选元素所有加入队列的动画,这样,就算从另外一个标签页切换回来,他会先停止执行动画,然后再继续执行。

具体代码如下:

在showAuto()方法里加上:

 

 

  1.  function showAuto()  
  2.     {  
  3. $("#banner_list a").stop(true,true);
  4.         n = n >=count?0 : ++n; //如果n>=图片总个数的话重新赋值为0,也就是从头算起,达到自动切换到第一张的效果 
  5.         $("#banner li").eq(n).trigger('click'); 
  6.     } 

 

附上stop方法详解:

 

定义和用法

stop() 方法停止当前正在运行的动画。

语法

$(selector).stop(stopAll,goToEnd)
参数 描述
stopAll 可选。规定是否停止被选元素的所有加入队列的动画。
goToEnd

可选。规定是否允许完成当前的动画。

该参数只能在设置了 stopAll 参数时使用。

 

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI