jquery無縫圖片輪播組件封裝
圖片輪播在我們的前端開發(fā)中是非常常見的,下面是自己寫的一個(gè)圖片輪播組件,支持自動(dòng)輪播,手動(dòng)輪播,無縫銜接。
dom結(jié)構(gòu)
首先是dom結(jié)構(gòu),將所有內(nèi)容放入一個(gè)大盒子,應(yīng)用ul標(biāo)簽存放圖片列表,圓點(diǎn)定位圖片位置。
<div id="box"> <ul id="banners"> <li class="banners-img"><img src="img/DSC_1913.JPG" /></li> <li class="banners-img"><img src="img/DSC_1913.JPG" /></li> <li class="banners-img"><img src="img/DSC_1913.JPG" /></li> <li class="banners-img"><img src="img/DSC_1913.JPG" /></li> </ul> <ul class="num"> <li class="on"></li> </ul> <div class="btns btn_l"><</div> <div class="btns btn_r">></div> </div>
下面是盒子樣式,這里使用百分比自適應(yīng),大盒子使用overflow: hidden;防止圖片溢出,將ul寬設(shè)置為圖片總寬度+1(這里+1后面會(huì)有用到)。
#box{ width:100%; height:40.0em; overflow: hidden; position: absolute; } #box #banners{ width:500%; position: relative; } #box .banners-img{ float: left; width:20%; height:40.0em; } #box .banners-img img{ width:100%; height: 100%; } .num{ width:10%; height:2.0em; position: relative; top: 82%; left: 40%; -webkit-transform: rotate(-90deg); -ms-transform: rotate(-90deg); transform:rotate(-90deg); } .num li{ width:2.0em; height:100%; position: relative; border-radius: 50%; background-color: grey; } .num .on{ background-color: black; } .btns{ width:1.0em; height:1.0em; background-color: rgba(0,0,0,0.5); position:relative; top:50%; color: white; font-size: 3.0em; text-align: center; line-height: 1.0em; cursor: pointer; display: none; } #box:hover .btns{ display: block; } .btn_l{ left: 0; } .btn_r{ right:0; }
組件使用jquery編寫
function addImg(item,arrSrc){ //添加圖片,這里需同時(shí)修改樣式,讀者可自行修改 for(let i = 0;i<item;i++){ item[i].attr('src',arrSrc[i]); } } var srcs = ['img/DSC_1913.JPG','img/DSC_1914.JPG','img/DSC_1915.JPG','img/DSC_1916.JPG']; addImg($('.banners-img img'),srcs); var Clone = $("#banners li").first().clone(); //追加一張圖片,輪到最后一張時(shí)能夠自然過渡,這里初學(xué)者需慢慢體會(huì) $("#banners").append(Clone); var Size = $("#banners li").size(); //alert(Size); for(var j=0;j<Size-2;j++){ $(".num").append("<li></li>"); } //獲取圖片寬度 var imgWidth = parseInt($("#banners .banners-img").css("width")); //因?qū)挾葹榘俜直?,窗口大小變化時(shí)需重新獲取 window.onresize = function(){ var newWidth = $("#banners .banners-img").css("width"); imgWidth = parseInt(newWidth); } //鼠標(biāo)移到按鈕時(shí)輪播 $(".num li").hover(function(){ var index = $(this).index(); i=index; $("#box #banners").stop().animate({left:-i*imgWidth},500); $("#box .num li").eq(i).addClass("on") .siblings().removeClass("on"); }) //自動(dòng)輪播 var t = setInterval(function(){ i++; move(); },3000); //鼠標(biāo)移入時(shí)停止自動(dòng)輪播 $("#box").hover(function(){ clearInterval(t); },function(){ t = setInterval(function(){ i++; move(); },3000); }) //手動(dòng)輪播 $("#box .btn_l").click(function(){ i--; move(); }); $("#box .btn_r").click(function(){ i++; move(); }); //封裝一個(gè)運(yùn)動(dòng)函數(shù) // alert(imgWidth); function move(){ if(i==Size){ //當(dāng)輪播到最后一張時(shí)過渡到第一張圖片 $("#box #banners").css({left:0}); i=1; } if(i==-1){ $("#box #banners").css({left:-(Size-1)*imgWidth}); i=Size-2; } $("#box #banners").stop().animate({left:-i*imgWidth},500); if(i==Size-1){ $("#box .num li").eq(0).addClass("on") .siblings().removeClass("on"); }else{ $("#box .num li").eq(i).addClass("on") .siblings().removeClass("on"); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jQuery移動(dòng)端圖片上傳組件
- 基于jquery的圖片輪播 tab切換組件
- jQuery圖片拖動(dòng)組件Dropzone用法示例
- jquery.picsign圖片標(biāo)注組件實(shí)例詳解
- Jquery插件之多圖片異步上傳
- Jquery ajaxsubmit上傳圖片實(shí)現(xiàn)代碼
- jquery實(shí)現(xiàn)圖片上傳前本地預(yù)覽功能
- 基于jquery實(shí)現(xiàn)的上傳圖片及圖片大小驗(yàn)證、圖片預(yù)覽效果代碼
- jquery 批量上傳圖片實(shí)現(xiàn)代碼
- 使用jQuery實(shí)現(xiàn)驗(yàn)證上傳圖片的格式與大小
- 基于jquery實(shí)現(xiàn)圖片上傳本地預(yù)覽功能
- jQuery實(shí)現(xiàn)移動(dòng)端圖片上傳預(yù)覽組件的方法分析
相關(guān)文章
基于jQuery的上下無縫滾動(dòng)應(yīng)用(單行或多行)
基于jQuery的上下無縫滾動(dòng)應(yīng)用,可應(yīng)用于多行或者單行.詳解請(qǐng)參考注釋.2010-08-08jQuery實(shí)現(xiàn)帶右側(cè)索引功能的通訊錄示例【附源碼下載】
這篇文章主要介紹了jQuery實(shí)現(xiàn)帶右側(cè)索引功能的通訊錄,結(jié)合實(shí)例形式分析了jQuery針對(duì)頁面元素動(dòng)態(tài)遍歷、排序等相關(guān)操作技巧,并附源碼供讀者下載參考,需要的朋友可以參考下2018-04-04詳解Jquery 遍歷數(shù)組之$().each方法與$.each()方法介紹
這篇文章主要介紹了詳解Jquery 遍歷數(shù)組之$().each方法與$.each()方法介紹 ,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01jQuery實(shí)現(xiàn)tab標(biāo)簽自動(dòng)切換的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)tab標(biāo)簽自動(dòng)切換的方法,實(shí)例分析了jQuery操作tab標(biāo)簽的技巧,涉及addClass、siblings及removeClass鏈?zhǔn)讲僮鞯募记?需要的朋友可以參考下2015-02-02jQuery 中使用JSON的實(shí)現(xiàn)代碼
json 是 Ajax 中使用頻率最高的數(shù)據(jù)格式,在瀏覽器和服務(wù)器中之間的通訊可離不開它2011-12-12jQuery實(shí)現(xiàn)倒計(jì)時(shí)功能 jQuery實(shí)現(xiàn)計(jì)時(shí)器功能
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)倒計(jì)時(shí)功能,jQuery實(shí)現(xiàn)計(jì)時(shí)器功能的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09jQuery插件boxScroll實(shí)現(xiàn)圖片輪播特效
本文給大家分享的是使用jQuery插件Boxscroll來實(shí)現(xiàn)簡(jiǎn)單的圖片輪播特效的代碼,非常簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-07-07基于jquery css3實(shí)現(xiàn)點(diǎn)擊動(dòng)畫彈出表單源碼特效
這篇文章主要介紹了基于jquery css3實(shí)現(xiàn)點(diǎn)擊動(dòng)畫彈出表單,彈出的表單沒有任何遮蓋層,在web前端程序開發(fā)中經(jīng)常會(huì)用到,需要的朋友可以參考下2015-08-08jquery分頁插件jquery.pagination.js實(shí)現(xiàn)無刷新分頁
這篇文章主要介紹了jquery分頁插件jquery.pagination.js實(shí)現(xiàn)無刷新分頁的相關(guān)資料,需要的朋友可以參考下2016-04-04