zoukankan      html  css  js  c++  java
  • 常见的js图片或内轮换效果

    CSS:

    .CommentCustom{ height:210px; margin:30px 0;}
    .CommentCustom .scrollWrap{ position:relative; height:170px;}
    .CommentCustom .scrollWrap span.btn{ position:absolute; cursor:pointer; display:block; width:10px; height:122px; background:url(../images/cssPos/custom_last_bg.jpg) no-repeat left top;}
    .CommentCustom .scrollWrap span.btnLeft{ left:0; top:0; background-position:left top;}
    .CommentCustom .scrollWrap span.btnLeft:hover{ background-position:left -123px;}
    .CommentCustom .scrollWrap span.btnRight{ right:0; top:0; background-position:-10px top;}
    .CommentCustom .scrollWrap span.btnRight:hover{ background-position:-10px -123px;}
    .CommentCustom .scrollWrap .scrollMain{ position:relative;z-index:1;width:930px; height:170px; margin:0 auto; overflow:hidden;}
    .CommentCustom .scrollWrap .scrollMain ol{ position:absolute; left:0; top:0;}
    .CommentCustom .scrollWrap .scrollMain ol li{height:170px; float:left; width:930px;}
    .CommentCustom .btnItem{ width:80px; margin:0 auto; margin-top:10px;}
    .CommentCustom .btnItem li{ float:left;_display:inline; margin:0 3px;width:20px; height:20px; cursor:pointer; text-align:center; line-height:20px; font-weight:bold; color:#fff; background:url(../images/cssPos/custom_last_bg.jpg) no-repeat -40px -82px;}
    .CommentCustom .btnItem li.selected{ background-position:-20px -82px;}

    DOM:

    <div class="CommentCustom" data-param='{
                                                    "mouseType":"click",
                                                    "slideType":"dirLeft",
                                                    "speed":"normal",
                                                    "easing":"easeInExpo"
                                                    }'>
                <div class="scrollWrap">
                    <span class="btn btnLeft"></span>
                    <span class="btn btnRight"></span>
                    <div class="scrollMain">
                        <ol class="clearfix">
                            <li><img src="images/c1.jpg" /></li>
                            <li><img src="images/c2.jpg" /></li>
                            <li><img src="images/c1.jpg" /></li>
                            <li><img src="images/c2.jpg" /></li>
                            <li><img src="images/c1.jpg" /></li>
                            <li><img src="images/c2.jpg" /></li>
                        </ol>
                    </div>
                </div>
                <ul class="btnItem clearfix">
                    <li class="selected">1</li>
                    <li>2</li>
                    <li>3</li>
                    <li>4</li>
                    <li>5</li>
                    <li>6</li>
                </ul>
            </div>

    JS:

    function CustomComment(obj){
            /**
            @mouseType:[mouseover||click]  执行幻灯片的鼠标事件
            @slideType:[scrollLeft||scrollTop||dirLeft||dirTop||fadeIn]  幻灯片的效果
            @speed:[fast||normal||sleew||5]
            @easing:["def"||"easeInQuad"||"easeOutQuad"||"easeInOutQuad"||"easeInCubic"||
                 "easeOutCubic"||"easeInOutCubic"||"easeInQuart"||"easeOutQuart"||
                 "easeInOutQuart"||"easeInQuint"||"easeOutQuint"||"easeInOutQuint"||
                 "easeInSine"||"easeOutSine"||"easeInOutSine"||"easeInExpo"||
                 "*easeOutExpo"||"*easeInOutExpo"||"easeInCirc"||"easeOutCirc"||"easeInOutCirc"||
                 "easeInElastic"||"easeOutElastic"||"easeInOutElastic"||"easeInBack"||"easeOutBack"||
                 "easeInOutBack"||"easeInBounce"||"easeOutBounce"||"easeInOutBounce"]          幻灯片执行的动画方式
            @autoPlay:"true,5"  自动播放的时间
            
            */
            this.CustomComment=$(obj);//保存一个幻灯片
            this.scroll=$("ol",this.CustomComment);//保存幻灯片对象
            this.scrollMainWidth=this.scroll.children().eq(0).width();
            this.scrollMainHeight=this.scroll.children().eq(0).height();
            this.scrollWrap=$(".scrollWrap",this.CustomComment);
            this.btnItems=$(".btnItem li",this.CustomComment);//保存按钮序列
            this.btnLeft=$(".btnLeft",this.CustomComment);//保存左边的按钮
            this.btnRight=$(".btnRight",this.CustomComment);//保存右边的按钮
            this.data=$.parseJSON(this.CustomComment.attr("data-param"));//保存幻灯片参数
            this.data.mouseType=this.data.mouseType||"mouseover";//初始化鼠标默认事件
            this.data.slideType=this.data.slideType||"scrollLeft";//初始化幻灯片样式
            this.data.speed=Number(this.data.speed)*1000||this.data.speed||"normal";//初始化执行幻灯片的时间
            this.data.autoPlay=this.data.autoPlay||false;//初始化自动执行
            this.btnItems.parent().width(this.btnItems.length*26+"px");
            if(this.data.slideType=="scrollLeft"){
                this.scroll.width(this.scrollMainWidth*this.scroll.children("li").length+"px");
                }else if(this.data.slideType=="scrollTop"){
                    this.scroll.children().css("float","none");
                    }else if(this.data.slideType=="dirLeft"||this.data.slideType=="dirRight"||this.data.slideType=="dirTop"||this.data.slideType=="dirBootom"){
                        this.def=0;
                        this.scroll.children("li").css({
                                                   float:"none",
                                                   position:"absolute",
                                                   display:"none"
                                                   }).eq(0).show();;
                        };
            var _this_=this;
            this.t=null;
            this.loop=0;
            this.btnItems.bind(this.data.mouseType,function(){
                                                    var i=$(this).index();
                                                    _this_.loop=i;
                                                    switch(_this_.data.slideType){
                                                        case "scrollLeft":
                                                                _this_.scrollLeft(i);
                                                                break;
                                                        case "scrollTop":
                                                                _this_.scrollTop(i);
                                                                break;
                                                        case "fadeIn":
                                                                _this_.fadeIn(i);
                                                                break;
                                                        case "dirLeft":
                                                                if(i>_this_.def){
                                                                    _this_.dirLeft(i);
                                                                    _this_.def=i;
                                                                    }else if(i<_this_.def){
                                                                        _this_.dirRight(i);
                                                                        _this_.def=i;
                                                                        };
                                                                break;
                                                        case "dirTop":
                                                                if(i>_this_.def){
                                                                        _this_.dirTop(i);
                                                                        _this_.def=i;
                                                                    }else if(i<_this_.def){
                                                                        _this_.dirBottom(i);
                                                                        _this_.def=i;
                                                                        };
                                                                break;
                                                        default:
                                                                _this_.fadeIn(i);
                                                        };
                                                    });
            this.btnLeft.click(function(){
                                        _this_.loop--;
                                        if(this.loop<0||_this_.loop<-_this_.btnItems.length){
                                            _this_.loop=_this_.btnItems.length-1;
                                            };
                                        _this_.btnItems.eq(_this_.loop).trigger(_this_.data.mouseType);
                                    });
            this.btnRight.click(function(){
                                        _this_.loop++;
                                        if(_this_.loop>=_this_.btnItems.length){
                                            _this_.loop=0;
                                            };
                                        _this_.btnItems.eq(_this_.loop).trigger(_this_.data.mouseType);        
                                    });
            if(this.data.autoPlay[0]){//设置是否自动播放
                this.autoPlay();
                this.scrollWrap.mouseover(function(){window.clearInterval(_this_.t);}).mouseout(function(){_this_.autoPlay();});
                };
            };
        CustomComment.prototype={
            scrollLeft:function(i){
                    this.scroll.stop().animate({left:-i*this.scrollMainWidth+"px"},this.data.speed,this.data.easing||"swing");
                    this.btnItems.eq(i).addClass("selected").siblings().removeClass("selected");
                },
            scrollTop:function(i){
                    this.scroll.stop().animate({top:-i*this.scrollMainHeight+"px"},this.data.speed,this.data.easing||"swing");
                    this.btnItems.eq(i).addClass("selected").siblings().removeClass("selected");
                },
            fadeIn:function(i){
                    this.scroll.children("li").hide().eq(i).fadeIn(this.data.speed,this.data.easing||"swing");
                    this.btnItems.eq(i).addClass("selected").siblings().removeClass("selected");
                },
            dirLeft:function(i){
                    var _this_=this;
                    if(this.btnItems.eq(i).is(".selected")){return;}
                    this.scroll.children("li").eq(i).css({
                                                         left:this.scrollMainWidth+"px",
                                                         display:"block"
                                                         });
                    this.scroll.animate({left:-this.scrollMainWidth+"px"},this.data.speed,this.data.easing||"swing",function(){
                                                                                                   $(this).css("left",0);
                                                                                                  _this_.scroll.children("li").eq(i).css("left",0).siblings().hide();
                                                                                                   });
                    this.btnItems.eq(i).addClass("selected").siblings().removeClass("selected");
                
                },    
            dirRight:function(i){
                    var _this_=this;
                    if(this.btnItems.eq(i).is(".selected")){return;}
                    this.scroll.children("li").eq(i).css({
                                                         left:-this.scrollMainWidth+"px",
                                                         display:"block"
                                                         });
                    this.scroll.animate({left:this.scrollMainWidth+"px"},this.data.speed,this.data.easing||"swing",function(){
                                                                                                   $(this).css("left",0);
                                                                                                  _this_.scroll.children("li").eq(i).css("left",0).siblings().hide();
                                                                                                   });
                    this.btnItems.eq(i).addClass("selected").siblings().removeClass("selected");
                },
            dirTop:function(i){
                    var _this_=this;
                    if(this.btnItems.eq(i).is(".selected")){return;}
                    this.scroll.children("li").eq(i).css({
                                                         top:this.scrollMainHeight+"px",
                                                         display:"block"
                                                         });
                    this.scroll.animate({top:-this.scrollMainHeight+"px"},this.data.speed,this.data.easing||"swing",function(){
                                                                                                   $(this).css("top",0);
                                                                                                  _this_.scroll.children("li").eq(i).css("top",0).siblings().hide();
                                                                                                   });
                    this.btnItems.eq(i).addClass("selected").siblings().removeClass("selected");
                },
            dirBottom:function(i){
                    var _this_=this;
                    if(this.btnItems.eq(i).is(".selected")){return;}
                    this.scroll.children("li").eq(i).css({
                                                         top:-this.scrollMainHeight+"px",
                                                         display:"block"
                                                         });
                    this.scroll.animate({top:this.scrollMainHeight+"px"},this.data.speed,this.data.easing||"swing",function(){
                                                                                                   $(this).css("top",0);
                                                                                                  _this_.scroll.children("li").eq(i).css("top",0).siblings().hide();
                                                                                                   });
                    this.btnItems.eq(i).addClass("selected").siblings().removeClass("selected");
                },
            autoPlay:function(){
                    var _this_=this;
                this.t=window.setInterval(function(){
                                                   _this_.btnRight.click();
                                                   },Number(this.data.autoPlay[1])*1000);
                }
            };
        CustomComment.init=function(CustomComments){
                var _this=this;
                CustomComments.each(function(){
                                      new _this(this);
                                      });
            };

    此插件调用方式,模仿淘宝给各个商家提供的插件,直接在dom结构中传参数调用。此插件可配合easing.js动画缓动插件传参数实现丰富的效果!

    注释:

    本人在开发过程中,难免会出现各种bug,单基本实用与主流浏览器,希望朋友们多多测试!欢迎你的各种建议!

  • 相关阅读:
    软件测试大赛决赛简讯
    期末提交作业清单
    4月12日-4月19日任务清单
    20160405
    软件系统设计文档模板
    吐槽
    致我亲爱的学生
    HBase 环境搭建
    Zookeeper 环境搭建
    hive 部署
  • 原文地址:https://www.cnblogs.com/yangliulang/p/2716457.html
Copyright © 2011-2022 走看看