輪播圖js

// 匿名函數自執行
(function() {
    function Carsouel(json) {
        // 外層的盒子
        this.$dom = $("#"+json.id);
        // ul
        this.$ul = null;
        // ul下面全部的li
        this.$ullis = null;
        // 左側按鈕
        this.$left = null;
        // 右側按鈕
        this.$right = null;
        this.$ol = null;
        this.$ollis = null;
        // 添加一個控制變量
        this.idx = 0;
        // 動畫時間
        this.animateTime = json.animateTime;
        // 盒子寬高
        this.width = json.width;
        this.height = json.height;
        // 圖片數組屬性
        this.imgArr = json.images;
        // 圖片數組長度
        this.imgArrLength = json.images.length;
        // 初始化
        this.init();
        // 事件監聽
        this.bindEvent();
    }

    Carsouel.prototype.init = function() {
        this.$ul = $("<ul></ul>");
        for(var i=0; i<this.imgArr.length; i++) {
            this.$ul.append($("<li><img src='"+this.imgArr[i]+"'></li>"));
        }
        this.$dom.append(this.$ul);
        // 拿到ul下的全部li
        this.$ullis = this.$ul.find("li");
        // 最外層盒子的css
        this.$dom.css({
            "position":"relative",
            "width": this.width,
            "height": this.height,
            "margin": "0 auto",
            "border": "1px solid gray",
            "overflow": "hidden"
        });
        // ul的css
        var _this = this;
        this.$ul.css({
            "position":"absolute",
            "width": _this.width,
            "height": _this.height
        });
        // ul的li的css
        this.$ullis.css({
            "position":"absolute",
            "left":_this.width
        });
        // 單獨設置默認第一張圖片
        this.$ullis.eq(0).css({
            "left": 0
        });
        // 初始化左右按鈕
        this.$left = $("<a class='left'><</a>");
        this.$right = $("<a class='right'>></a>");
        this.$dom.append(this.$left);
        this.$dom.append(this.$right);
        // 初始化下面ol
        this.$ol = $("<ol class='circle'></ol>");
        for(var i=0; i<this.imgArr.length; i++) {
            this.$ol.append($("<li></li>"));
        }
        this.$dom.append(this.$ol);
        // 拿到ol下的全部li
        this.$ollis = this.$ol.find("li");
        this.$ol.css({
            "position":"absolute",
            "bottom": 10,
            "left": 400,
            "list-style":"none" 
        });
        // ol的li的css
        this.$ollis.css({
            "float": "left",
            "width": 50,
            "height": 50,
            "margin-left":10 
        });
        this.$ollis.eq(0).addClass("active");
    }
    Carsouel.prototype.bindEvent = function() {
        var _this = this;
        // 左側按鈕
        this.$left.click(function() {
            _this.$ullis.eq(_this.idx).animate({"left":_this.width},_this.animateTime);
            _this.idx++;
            if (_this.idx > _this.imgArrLength-1) {
                _this.idx = 0;
            }
            _this.$ullis.eq(_this.idx).css({
                "left":-_this.width
            }).animate({"left":0},_this.animateTime);
        });
        // 右側按鈕 本身完成

        // 下面的ol的li事件綁定
        this.$ollis.click(function() {
            // 點擊哪一個 顯示哪張圖片
            var old = _this.idx;
            var num = $(this).index();
            _this.idx = num;
            if (num==old) {
                return;
            }
            console.log(num,old);
            _this.$ullis.eq(old).css({
                "left": 0
            }).animate({"left":-_this.width},_this.animateTime);
            _this.$ullis.eq(num).css({
                "left": _this.width
            }).animate({"left":0},_this.animateTime);
            // 對應樣式
            _this.$ollis.eq(num).addClass("active").siblings().removeClass("active");
        })

    }
    window.Carsouel = Carsouel;
})();
相關文章
相關標籤/搜索