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);

最後上效果圖

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章