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ū)挾葹榘俜直龋翱诖笮∽兓瘯r(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中animate的stop()方法作用實(shí)例分析
這篇文章主要介紹了jquery中animate的stop()方法作用,實(shí)例分析了animate的stop()方法在視頻播放代碼中的使用技巧,感興趣的朋友可以對(duì)比分析一下帶stop方法與不帶stop方法運(yùn)行效果的區(qū)別,需要的朋友可以參考下2015-01-01
jQuery中用on綁定事件時(shí)需注意的事項(xiàng)
本篇文章主要介紹了jQuery中用on綁定事件時(shí)需注意的事項(xiàng),具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
jquery插件pagination實(shí)現(xiàn)無刷新ajax分頁
這篇文章主要介紹了jquery插件pagination實(shí)現(xiàn)無刷新ajax分頁的相關(guān)資料,需要的朋友可以參考下2015-09-09
jQuery實(shí)現(xiàn)為L(zhǎng)I列表前3行設(shè)置樣式的方法【2種方法】
這篇文章主要介紹了jQuery實(shí)現(xiàn)為L(zhǎng)I列表前3行設(shè)置樣式的方法,結(jié)合實(shí)例形式分析了css控制及jQuery元素獲取2種實(shí)現(xiàn)方法,需要的朋友可以參考下2016-09-09
jQuery實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
jQuery插件zTree實(shí)現(xiàn)單獨(dú)選中根節(jié)點(diǎn)中第一個(gè)節(jié)點(diǎn)示例
這篇文章主要介紹了jQuery插件zTree實(shí)現(xiàn)單獨(dú)選中根節(jié)點(diǎn)中第一個(gè)節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式分析了jQuery樹形插件zTree的具體使用技巧,需要的朋友可以參考下2017-03-03
使用jQuery實(shí)現(xiàn)星級(jí)評(píng)分代碼分享
本文給大家分享的是一段使用jQuery制作的星級(jí)評(píng)分的代碼,非常大氣漂亮,功能也很實(shí)用,這里推薦個(gè)大家。2014-12-12

