JS插件开发之-简易轮播图

JS插件开发之-简易轮播图

HTML代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="css/index.css">
    <script src="js/jquery-1.11.3.js"></script>
    <script src="js/tab.js"></script>
</head>
<body>
    <div class="tab js-tab">
        <div class="content-wrap">
            <div class="content-item current">
                <img src="images/class_img1.png" alt="">
            </div>
            <div class="content-item">
                <img src="images/class_img2.png" alt="">
            </div>
            <div class="content-item">
                <img src="images/class_img3.png" alt="">
            </div>
            <div class="content-item">
                <img src="images/class_img4.png" alt="">
            </div>
        </div>
        <ul class="tab-nav clearfix">
            <li class="active"></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    <script>
        var tab1 = new Tab($(".js-tab"));
    </script>
</body>
</html>
css代码
body,ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div{margin:0;padding:0;border:0;} 
body{background: #323232;font-size: 12px;font-family: "微软雅黑";padding: 100px}
ul,ol{list-style-type:none;} 
i{font-style: normal;}
a{text-decoration:none;cursor: pointer;} 
.clearfix:after{display: block;clear: both;content: "";visibility: hidden;height: 0;}
.clearfix{zoom:1;} 
.fl{float: left;}
.fr{float: right;}

.tab{width: 228px;height: 160px;position: relative;}
.tab .tab-nav{position: absolute;bottom: 5px;left: 0;right: 0;margin: auto;width: 64px}
.tab .tab-nav li{float: left;margin:0 3px;background: #767676;border-radius: 50%;width: 10px;height: 10px;}
.tab .tab-nav li.active{background: white}

.tab .content-wrap{height: 160px}
.tab .content-wrap .content-item{display: none;position: absolute;height: 160px}

.tab .content-wrap .current{display: block}
js代码
!(function (win, $) {
    var Tab = function(tab){
        var self = this;
        this.tab = tab;
        //默认配置参数
        this.config = {
            "triggerType": "click",  //触发类型
            "effect": "fade",        //切换效果
            "invoke": 1,             //默认显示第几个
            "auto": 2000            //是否自动切换
        };

        this.tabItems = $("ul.tab-nav li");     //按钮
        this.contentItems = $(".content-item"); //图片的盒子

        var config = this.config;
        if (config.triggerType === "click"){
            this.tabItems.on(config.triggerType,function(){
                self.invoke($(this));
            })
        } else if (config.triggerType === "mouseover"){
            this.tabItems.on(config.triggerType, function () {
                self.invoke($(this));
            })
        }

        //自动轮播
        if(config.auto){
            this.timer = null;
            //计数器
            this.loop = 0;
            this.autoPlay();

            this.tab.hover(function(){
                win.clearInterval(self.timer);
            },function(){
                self.autoPlay();
            })
        };
        //设置默认显示第几个
        if(config.invoke > 1){
            this.invoke(this.tabItems.eq(config.invoke-1));
        }
    };

    Tab.prototype = {

        invoke:function(currentTab){
            var index = currentTab.index();
            currentTab.addClass("active").siblings().removeClass("active");

            var effect = this.config.effect;
            var conItems = this.contentItems;

            if(effect === "default"){
                conItems.eq(index).addClass("current").siblings().removeClass("current");
            } else if (effect === "fade"){
                conItems.eq(index).fadeIn().siblings().fadeOut();
            }
            //注意,如果自动切换,记得把当前loop值设置成当前tab的index
            if(this.config.auto){
                this.loop = index;
            }
            
        },

        //自动轮播
        autoPlay:function(){
            var self = this;
            var tabItems = this.tabItems;//临时保存tab列表
            var tabLength = tabItems.length;//tab的个数
            var config = this.config;

            this.timer = win.setInterval(function(){
                self.loop++;
                if (self.loop >= tabLength){
                    self.loop = 0;
                };
                tabItems.eq(self.loop).trigger(config.triggerType);
            },config.auto);

        }

    }

    win.Tab = Tab;
    
})(window, jQuery);
最后上效果图

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值