jQuery實(shí)現(xiàn)友好的輪播圖片特效
先上效果圖:
【處理】 這里的圖片滾動(dòng)輪播,做了點(diǎn)小處理:當(dāng)在第1頁(yè)狀態(tài)時(shí),你點(diǎn)擊第5頁(yè),圖片的滾動(dòng)是一張滑過(guò),而不是從2-3-4-5(這種的多張滾動(dòng),看得頭暈眼花);
實(shí)現(xiàn)的做法是:
剩下的就是源代碼分享了:
-------css----------------
.gy-slide-scroll {
position: relative;
width: 320px;
height: 200px;
overflow: hidden;
left: 50%;
margin-left: -160px;
}
.gy-slide-scroll ul{
position: absolute;
left: 0;
top: 0;
}
.gy-slide-btn {
margin-top: 10px;
text-align: center;
padding: 5px 0;
}
.gy-slide-btn span,.gy-slide-btn i {
margin-left: 5px;
font-style: normal;
font:12px/1 tahoma,arial,"Hiragino Sans GB",\5b8b\4f53;
cursor: pointer;
border: 1px solid #ccc;
padding: 4px 6px;
}
.gy-slide-btn .gy-slide-cur {
background-color: #999;
color: #fff;
}
.gy-slide-btn .gy-slide-no{
color: #ccc;
cursor: default;
}
-----------HTML---------------------
<div id="gy-slide">
<div class="gy-slide-scroll">
<ul>
<li><a href="#"><img src="img/n1.jpg" alt=""></a></li>
<li><a href="#"><img src="img/n2.jpg" alt=""></a></li>
<li><a href="#"><img src="img/n3.jpg" alt=""></a></li>
<li><a href="#"><img src="img/n4.jpg" alt=""></a></li>
<li><a href="#"><img src="img/n5.jpg" alt=""></a></li>
</ul>
</div>
<div class="gy-slide-btn">
<i class="gy-slide-home">首頁(yè)</i>
<i class="gy-slide-prev gy-slide-no">上一頁(yè)</i>
<span class="gy-slide-cur">1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<i class="gy-slide-next">下一頁(yè)</i>
<i class="gy-slide-end">尾頁(yè)</i>
</div>
</div>
-------------JS--------------
/*----使用說(shuō)明
結(jié)構(gòu)必需一致;多次調(diào)用時(shí),最外層賦予不同的id或類名即可
*/
/*----參數(shù)
@ wrap [String] 外層元素的類名或id
@ auto [Boolean] 不設(shè)置默認(rèn)是不自動(dòng)播放;設(shè)置為true,自動(dòng)播放
@ speed [Number] 每隔幾秒圖片切換,默認(rèn)是4秒
*/
function Gy_slider(opt){
this.wrap = $(opt.wrap);
this.scroll = this.wrap.find('.gy-slide-scroll ul');
this.li = this.scroll.find('li');
this.btn_num = this.wrap.find('.gy-slide-btn span');
this.btn_home = this.wrap.find('.gy-slide-home');
this.btn_end = this.wrap.find('.gy-slide-end');
this.btn_prev = this.wrap.find('.gy-slide-prev');
this.btn_next = this.wrap.find('.gy-slide-next');
this.index = 0; //索引
this.refer = 0;
this.ctrl = true;
this.len = this.li.length;
this.move_w = this.scroll.parent().width();
this.auto = opt.auto == true?true:false;
this.speed = opt.speed || 4;
this.init();
}
Gy_slider.prototype = {
imgShow:function(i,callback){
var _that = this,
_w = 0;
switch(true){
case i<this.refer : _w = - this.move_w;break;
case i==this.refer : return;break;
default:_w = this.move_w;
}
this.refer = i;
this.li.eq(i).css({'position':'absolute','left':_w+'px','top':0});
this.scroll.stop(true,true).animate({'left':-_w+'px'},function(){
_that.scroll.css({'left':0});
_that.li.attr('style','').eq(i).css({'position':'absolute','left':0,'top':0});
if(typeof callback == 'function'){
callback();
}
});
this.btn_num.removeClass("gy-slide-cur").eq(i).addClass("gy-slide-cur");
},
isCtrl:function(n){
this.btn_prev.add(this.btn_next).removeClass("gy-slide-no");
if(n==0){
this.btn_prev.addClass("gy-slide-no");
}else if(n==(this.len-1)){
this.btn_next.addClass("gy-slide-no");
}
},
btnClick:function(){
var _that = this;
//頁(yè)碼處理
this.btn_num.click(function(){
if(_that.btn_num.index($(this))==_that.index) return;
if(!_that.ctrl) return;
_that.ctrl = false;
_that.index = _that.btn_num.index($(this));
_that.isCtrl(_that.index);
_that.imgShow(_that.index,function(){
_that.ctrl = true;
});
});
//首頁(yè)
this.btn_home.click(function(){
_that.index = 0;
_that.isCtrl(_that.index);
_that.imgShow(_that.index);
});
//尾頁(yè)
this.btn_end.click(function(){
_that.index = _that.len - 1;
_that.isCtrl(_that.index);
_that.imgShow(_that.index);
});
//上一頁(yè)
this.btn_prev.click(function(){
if($(this).hasClass("gy-slide-no")) return;
if(!_that.ctrl) return;
_that.ctrl = false;
_that.index--;
_that.isCtrl(_that.index);
_that.imgShow(_that.index,function(){
_that.ctrl = true;
});
});
//下一頁(yè)
this.btn_next.click(function(){
if($(this).hasClass("gy-slide-no")) return;
if(!_that.ctrl) return;
_that.ctrl = false;
_that.index++;
_that.isCtrl(_that.index);
_that.imgShow(_that.index,function(){
_that.ctrl = true;
});
});
},
autoPlay:function(){
var _that = this;
if(this.timer) clearInterval(this.timer);
this.timer = setInterval(function(){
_that.index++;
if(_that.index==_that.len){
_that.index = 0;
}
_that.isCtrl(_that.index);
_that.imgShow(_that.index);
},this.speed*1000);
},
init:function(){
var _that = this;
this.btnClick();
if(this.auto){
this.autoPlay();
this.wrap.hover(function(){
clearInterval(_that.timer);
},function(){
_that.autoPlay();
});
}
}
}
代碼很簡(jiǎn)潔,效果卻非常棒,也很實(shí)用,小伙伴們自己美化下就可以使用到自己的項(xiàng)目中了。
- 利用jquery寫(xiě)的左右輪播圖特效
- jquery實(shí)現(xiàn)左右無(wú)縫輪播圖
- jQuery自適應(yīng)輪播圖插件Swiper用法示例
- jquery實(shí)現(xiàn)左右滑動(dòng)式輪播圖
- 基于jQuery實(shí)現(xiàn)淡入淡出效果輪播圖
- 原生Javascript和jQuery做輪播圖簡(jiǎn)單例子
- jQuery制作全屏寬度固定高度輪播圖(實(shí)例講解)
- jQuery實(shí)現(xiàn)簡(jiǎn)潔的輪播圖效果實(shí)例
- jquery制作多功能輪播圖插件
- jquery實(shí)現(xiàn)的簡(jiǎn)單輪播圖功能【適合新手】
相關(guān)文章
jquery實(shí)現(xiàn)metro效果示例代碼
metro效果想必大家并不陌生吧,下面為大家講解下在jquery中時(shí)如何實(shí)現(xiàn)的,新手朋友們可不要錯(cuò)過(guò)了2013-09-09jQuery.Form實(shí)現(xiàn)Ajax上傳文件同時(shí)設(shè)置headers的方法
這篇文章主要介紹了jQuery.Form實(shí)現(xiàn)Ajax上傳文件同時(shí)設(shè)置headers的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06通過(guò)實(shí)例解析jQ Ajax操作相關(guān)原理
這篇文章主要介紹了通過(guò)實(shí)例解析jQ Ajax操作相關(guān)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09jquery ready()的幾種實(shí)現(xiàn)方法小結(jié)
下面是目前本人知道的幾種jQuery的ready ()的寫(xiě)法.如果還有其他的寫(xiě)法,望告知2010-06-06JQuery獲取當(dāng)前屏幕的高度寬度的實(shí)現(xiàn)代碼
JQuery獲取瀏覽器窗口寬高,文檔寬高的代碼,使用jquery的朋友可以參考下。2011-07-07