用jQuery實(shí)現(xiàn)圓點(diǎn)圖片輪播效果
圖片輪播效果 :
在頁(yè)面的指定位置實(shí)現(xiàn)的圖片自動(dòng)的左右輪流切換展示,效果為無(wú)縫連接;
點(diǎn)擊圖片左下的標(biāo)簽(或中間的小圓點(diǎn))切換到對(duì)應(yīng)的圖片;
點(diǎn)擊圖片的左右切換標(biāo)簽;
整體思路 :
--------------------------------------------------------------------------------
自動(dòng)輪播: 將一個(gè)用于放置圖片素材的與顯示框同高度的大div放入顯示框,將圖片素材放入大的div中,通過(guò)jquery的animate()方法改變大div相對(duì)于顯示框絕對(duì)位置的left值及變化時(shí)間實(shí)現(xiàn)圖片的滑動(dòng);使用setInterval()方法設(shè)置定時(shí)器,達(dá)到自動(dòng)播放效果;無(wú)縫連續(xù)播放的重點(diǎn)在于,第一張圖片與最后一張圖片要相同,這樣播放完最后一張圖片后將大div框的left設(shè)定為初始值,再將與圖片索引相同的變量設(shè)定為1(第二張),這樣就能達(dá)到無(wú)縫連續(xù)滑動(dòng)效果;
--------------------------------------------------------------------------------
點(diǎn)擊標(biāo)簽切換到對(duì)應(yīng)圖片: 對(duì)點(diǎn)擊切換圖片的li標(biāo)簽添加鼠標(biāo)點(diǎn)擊事件,若存在定時(shí)器的先清除,使用$(this).Index()獲取當(dāng)前點(diǎn)擊圖片的序號(hào)(索引),將大div的left值設(shè)置為當(dāng)前圖片位置的值,同時(shí)別忘了將當(dāng)前l(fā)i標(biāo)簽設(shè)置深顏色的明顯效果,其他li標(biāo)簽設(shè)置初始效果;在事件中設(shè)置倒計(jì)時(shí),當(dāng)鼠標(biāo)點(diǎn)擊后一段時(shí)間不進(jìn)行其他操作,則恢復(fù)自動(dòng)播放的定時(shí)器;
--------------------------------------------------------------------------------
點(diǎn)擊向左向右標(biāo)簽切換到上/下一張圖片: 該標(biāo)簽使用< a >標(biāo)簽達(dá)到效果更好(防止連續(xù)點(diǎn)擊時(shí)產(chǎn)生選中頁(yè)面變藍(lán)的現(xiàn)象),先獲取點(diǎn)擊時(shí)圖片的編號(hào),此時(shí)不能使用$(this).Index(),因?yàn)榇藭r(shí)this指代的對(duì)象為左右切換標(biāo)簽,而不是圖片對(duì)象,還記得上面那個(gè)與圖片索引相同的變量嗎?我們需要一開始就設(shè)定它為全局變量(我將它起名為rcd),它的值相當(dāng)于是和圖片,li標(biāo)簽一起綁定的,在還沒(méi)有點(diǎn)擊向左向右標(biāo)簽時(shí),圖片是在輪播的,rcd變量中存著當(dāng)前圖片的序號(hào),因此,盡管用不了this,我們可以用rcd+1/-1找到向右滑/向左劃的圖片編號(hào),有了編號(hào),就可以知道大div需要運(yùn)動(dòng)到的位置,和設(shè)置左下方的標(biāo)簽顯示狀態(tài)了.當(dāng)rcd-1==-1時(shí),將div的位置設(shè)置為最后一張圖片顯示的位置,然后將rcd設(shè)置為倒數(shù)第二張圖片對(duì)應(yīng)的編號(hào);當(dāng)rcd+1比最后一張還多一時(shí),將div的位置設(shè)置為第一張圖片顯示的位置,將rcd設(shè)置為第二張圖片對(duì)應(yīng)的編號(hào)即可.
--------------------------------------------------------------------------------
代碼實(shí)現(xiàn)如下 :
<script src="jquery.min.js" type="text/javascript" charset="utf-8"></script> //引入jquery (css代碼未貼) <script type="text/javascript"> $(function(){ var rcd=0; //代表圖片和li標(biāo)簽編號(hào)的全局變量 // 滑動(dòng)函數(shù) function slide(){ rcd++; if(rcd==4){ //右滑倒最后一張時(shí),將圖片設(shè)定為第一張的位置,即將滑動(dòng)的圖片設(shè)定為第二張(rcd=1) $('#sld').css({'left':'0'}); rcd=1; }; var dis = rcd*(-1210)+'px'; //這里的1210是每張圖片的寬度,rcd和dis的關(guān)系就是編號(hào)和div left值的關(guān)系 $('#sld').stop().animate({'left':dis},1000) //設(shè)定left if (rcd==3) { //當(dāng)切換到最后一張時(shí)(一共4張圖片),將左下方的標(biāo)簽樣式也改成與第一張一樣的 $('#fix ul li').eq(0).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'}) }else{ $('#fix ul li').eq(rcd).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'}) //不是最后一張那么就正常執(zhí)行 } } // 設(shè)定定時(shí)器,開始輪播 var timer = setInterval(slide,2000); var st; //聲明倒計(jì)時(shí)函數(shù)變量名 // 綁定li鼠標(biāo)點(diǎn)擊事件 $('#fix ul li').click(function(){ clearInterval(timer); //清除定時(shí)器(同下一行) clearTimeout(st); var rcd = $(this).index(); //獲得點(diǎn)擊的li的編號(hào) var dis =rcd*(-1210)+'px'; //獲得該編號(hào)對(duì)應(yīng)的div的left值 $('#sld').stop().animate({'left':dis},500) //開始運(yùn)動(dòng) $('#fix ul li').eq(rcd).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'}) //設(shè)置當(dāng)前l(fā)i樣式,其他li變?yōu)槌跏贾? st = setTimeout(function(){ //設(shè)置定時(shí)器,若3秒內(nèi)沒(méi)有鼠標(biāo)點(diǎn)擊操作,就重新設(shè)置輪播定時(shí)器 timer = setInterval(slide,2000); },3000) }); // 左圖標(biāo)點(diǎn)擊事件 $('#fix .lt').click(function(){ clearInterval(timer); clearTimeout(st); rcd--; //點(diǎn)擊前的編號(hào)-1 if(rcd==-1){ //如果rcd減后值為-1,那么將div的left設(shè)置為最后一張圖顯示的值,并將rcd設(shè)置為倒數(shù)第二張的編號(hào) $('#sld').css({'left':'-3630px'}); rcd=2; }; var dis = rcd*(-1210)+'px'; $('#sld').stop().animate({'left':dis},1000) //運(yùn)動(dòng) if (rcd==3) { //與前面相同 $('#fix ul li').eq(0).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'}) }else{ $('#fix ul li').eq(rcd).css({'opacity': '0.6'}).siblings('li').css({'opacity': '0.2'}) } st = setTimeout(function(){ timer = setInterval(slide,2000); },3000) }) // 右圖標(biāo)點(diǎn)擊事件 $('#fix .rt').click(function(){ clearInterval(timer); clearTimeout(st); slide(); //右圖標(biāo)點(diǎn)擊一次與滑動(dòng)函數(shù)一致 st = setTimeout(function(){ timer = setInterval(slide,2000); },3000) }) // 給#fix div加鼠標(biāo)移入事件 $('#fix').mouseenter(function(){ $('#fix a').css({'display':'block'}); //鼠標(biāo)移入時(shí),向左向右圖標(biāo)顯示 }) // 給#fix div加鼠標(biāo)移出事件 $('#fix').mouseleave(function(){ $('#fix a').css({'display':'none'}); //鼠標(biāo)移出時(shí),向左向右圖標(biāo)隱藏 }) }) </script> </head> <body> <div id="fix"> <div id="sld"> <img src="輪播圖/ph1.png"/> <img src="輪播圖/ph2.jpg"/> <img src="輪播圖/ph3.jpg"/> <img src="輪播圖/ph1.png"/> </div> <ul> <li style="opacity: 0.6;">iPhone6</li> <li>Mate9</li> <li>vivo X9</li> </ul> <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" class="lt"><img src="輪播圖/left.png"/></a> //阻止瀏覽器的默認(rèn)跳轉(zhuǎn) <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" class="rt"><img src="輪播圖/right.png"/></a> </div> </body>
也可以在我的Github上克隆這個(gè)效果的完整代碼: https://github.com/Getthrough/Image-Carousel
以上所述是小編給大家介紹的用jQuery實(shí)現(xiàn)圓點(diǎn)圖片輪播效果,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
- jQuery實(shí)現(xiàn)的淡入淡出圖片輪播效果示例
- 使用JQuery實(shí)現(xiàn)圖片輪播效果的實(shí)例(推薦)
- jQuery的圖片輪播插件PgwSlideshow使用詳解
- jQuery插件Flexslider實(shí)現(xiàn)圖片輪播、圖文結(jié)合滑動(dòng)切換效果
- jQuery插件實(shí)現(xiàn)圖片輪播特效
- jQuery實(shí)現(xiàn)圖片輪播效果代碼(基于jquery.pack.js插件)
- 12款經(jīng)典的白富美型—jquery圖片輪播插件—前端開發(fā)必備
- 原生js和jquery實(shí)現(xiàn)圖片輪播特效
- 基于JQuery的實(shí)現(xiàn)圖片輪播效果(焦點(diǎn)圖)
- 原生js和jquery實(shí)現(xiàn)圖片輪播淡入淡出效果
- jQuery實(shí)現(xiàn)的3D版圖片輪播示例【滑動(dòng)輪播】
相關(guān)文章
Jquery右下角抖動(dòng)、浮動(dòng) 實(shí)例代碼(兼容ie6、FF)
本實(shí)例結(jié)合了jquery+js中的setTimeout函數(shù)實(shí)現(xiàn)了一直浮動(dòng)在頁(yè)面右下解的廣告,有需要的朋友可以參考一下2013-08-08jQuery Jcrop插件實(shí)現(xiàn)圖片選取功能
今天我們要在ASP.NET中用jQuery.Jcrop插件實(shí)現(xiàn)圖片的選取功能,你想選取美女的哪個(gè)部位你說(shuō)了算,我就管不著了2011-11-11基于jquery可配置循環(huán)左右滾動(dòng)例子
基于jquery可配置循環(huán)左右滾動(dòng)例子,喜歡的朋友可以參考下。2011-09-09利用jQuery設(shè)計(jì)一個(gè)簡(jiǎn)單的web音樂(lè)播放器的實(shí)例分享
這篇文章主要介紹了利用jQuery設(shè)計(jì)一個(gè)簡(jiǎn)單的web音樂(lè)播放器的實(shí)例分享,包括PHP后臺(tái)和從MySQL中讀取曲目等基本功能的實(shí)現(xiàn),需要的朋友可以參考下2016-03-03jQuery實(shí)現(xiàn)右下角可縮放大小的層完整實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)右下角可縮放大小的層,以完整實(shí)例形式分析了jQuery頁(yè)面元素及相關(guān)樣式屬性操作技巧,需要的朋友可以參考下2016-06-06JavaScript的jQuery庫(kù)插件的簡(jiǎn)要開發(fā)指南
這篇文章主要介紹了JavaScript的jQuery庫(kù)插件的簡(jiǎn)要開發(fā)指南,分為基于選擇器的插件和不基于選擇器的插件兩種情況,需要的朋友可以參考下2015-08-08jQuery實(shí)現(xiàn)簡(jiǎn)易聊天框
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)簡(jiǎn)易聊天框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02jQuery實(shí)現(xiàn)原理的模擬代碼 -6 代碼下載
前幾篇文章中的示例代碼,去掉了幾個(gè) bug, 這里一起提供下載。2010-08-08