Home  >  Article  >  Web Front-end  >  jQuery implements friendly carousel image effects_jquery

jQuery implements friendly carousel image effects_jquery

WBOY
WBOYOriginal
2016-05-16 16:20:58965browse

First the rendering:

[Processing] The picture scrolling carousel here has been slightly processed: when you click on page 1 on page 5, the picture scrolls one by one instead of 2-3-4 -5 (This kind of multiple scrolling will make you dizzy);

The implementation method is:

The rest is to share the source code:

-------css----------------

Copy code The code is as follows:

.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",5b8b4f53;
         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---------------------

Copy code The code is as follows:


       

           

                   

  •                

  •                

  •                

  •                

  •            

       

       

            首页
            上一页
            1
            2
            3
            4
            5
            下一页
            尾页
       

   

-------------JS--------------

复制代码 代码如下:

/*----Instructions for use
The structure must be consistent; when calling multiple times, just assign different ids or class names to the outermost layer
*/
/*----Parameter
@ wrap [String] The class name or id of the outer element
@ auto [Boolean] If not set, the default is not to play automatically; if set to true, it will play automatically
@speed [Number] Switch images every few seconds, the default is 4 seconds
*/
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; //Index
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              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;
//Page number processing
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;
            });
        });
//Home
        this.btn_home.click(function(){
            _that.index = 0;
            _that.isCtrl(_that.index);
            _that.imgShow(_that.index);
        });
        //尾页
        this.btn_end.click(function(){
            _that.index = _that.len - 1;
            _that.isCtrl(_that.index);
            _that.imgShow(_that.index);
        });
        //上一页
        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;
            });
        });
        //下一页
        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();
            });
        }
    }
}


The code is very concise, but the effect is very good and very practical. Friends can use it in their own projects after beautifying it.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn