zoukankan      html  css  js  c++  java
  • slide.js

    
    define(['jquery'], function (jquery) {
        function buildSmooth(config, motivateCallBack) {
            var timer = -1;
            var cfg = config;
            var motiCallBack = motivateCallBack;
    
            if (cfg == null || cfg.smoothSlide == null) {
                throw new Error('config > smoothSlide is not configed.');
            }
    
            if (cfg.timer != null && cfg.timer != -1) {
                timer = cfg.timer;
            }
    
            var interval;
            var smoothSlide = cfg.smoothSlide;
            if (smoothSlide.windowObj == null) {
                throw new Error('config > smoothSlide >windowObj is not configed.');
            }
    
            var winObj = jquery(smoothSlide.windowObj);
            winObj.css('position', 'relative');
            if (smoothSlide == null
                || smoothSlide.slideLayerParent == null) {
                throw new Error('config > smoothSlide > slideLayerParent is not configed.');
            }
    
            if (smoothSlide.type == null) {
                throw new Error('config > smoothSlide > type is not configed.');
            }
    
            var muChildren;
            var lnmObj;
            switch (smoothSlide.type) {
                case 'Multi':
                    if (smoothSlide.mutilMotivateObj == null) {
                        throw new Error('config > smoothSlide > mutilMotivateObj is not configed.');
                    }
    
                    var muObj = jquery(smoothSlide.mutilMotivateObj);
                    muChildren = muObj.children();
                    break;
                case 'LastNext':
                    lnmObj = smoothSlide.lNMotivateObj;
                    if (lnmObj == null) {
                        throw new Error('config > smoothSlide > lNMotivateObj is not configed.');
                    }
                    break;
                case 'Both':
                    if (smoothSlide.mutilMotivateObj == null) {
                        throw new Error('config > smoothSlide > mutilMotivateObj is not configed.');
                    }
    
                    var muObj = jquery(smoothSlide.mutilMotivateObj);
                    muChildren = muObj.children();
                    lnmObj = smoothSlide.lNMotivateObj;
                    if (lnmObj == null) {
                        throw new Error('config > smoothSlide > lNMotivateObj is not configed.');
                    }
                    break;
                default:
                    throw new Error('config > smoothSlide > type is not configed.');
                    break;
            }
    
    
    
            var parentLayer = jquery(smoothSlide.slideLayerParent);
            var firstLayer = parentLayer.children().first();
            var secondLayer=parentLayer.children().eq(1);
            var lastSecLayer = parentLayer.children().eq(parentLayer.children().size()-2);
            var lastLayer = parentLayer.children().last();
            firstLayer.clone(true).appendTo(parentLayer);
            lastLayer.clone(true).prependTo(parentLayer);
            var layerCount = parentLayer.children().size();
            if (layerCount <= 1) {
                return;
            }
    
            var ulWidth = (-winObj.width() * layerCount);
            parentLayer.css({ 'position': 'absolute', 'top': '0px', 'left': ulWidth + 'px', 'width': Math.abs(ulWidth) + 'px' });
            var index = 0;
            var prevNextFn = function () {
                if (lnmObj != null) {
                    if (lnmObj.last == null) {
                        throw new Error('config > smoothSlide > slideLayerParent > last is not configed.');
                    }
    
                    jquery(lnmObj.last).click(function () {
                        if (!parentLayer.is(':animated')) {
                            SmoothnessLayer(--index);
                        }
                        try {
                            motiCallBack($(this), index, layerCount);
                        }
                        catch (err) {
                            throw new error('Motivate call back function is not work:' + err.description);
                        }
                    });
    
                    if (lnmObj.next == null) {
                        throw new Error('config > smoothSlide > slideLayerParent > next is not configed.');
                    }
    
                    jquery(lnmObj.next).click(function () {
                        if (!parentLayer.is(':animated')) {
                            SmoothnessLayer(++index);
                        }
                        try {
                            motiCallBack($(this), index, layerCount);
                        }
                        catch (err) {
                            throw new error('Motivate call back function is not work:' + err.description);
                        }
                    });
                }
            };
    
            var muiltiFn = function () {
                if (muChildren != null) {
                    muChildren.each(function (i) {
                        jquery(this).click(function () {
                            if (!parentLayer.is(':animated')) {
                                SmoothnessLayer(i + 1);
                                try {
                                    motiCallBack($(this), index, layerCount, true);
                                }
                                catch (err) {
                                    throw new error('Motivate call back function is not work:' + err.description);
                                }
    
                                index = i + 1;
                            }
                        });
    
                    });
                }
            };
    
            switch (smoothSlide.type) {
                case "LastNext":
                    prevNextFn();
                    index = 0;
                    if (lnmObj.next != null) {
                        jquery(lnmObj.next).trigger('click');
                        if (timer != null && timer != -1) {
                            interval = setInterval(function () {
                                jquery(lnmObj.next).trigger('click');
                            }, timer);
                        }
                    }
                    break;
                case "Multi":
                    muiltiFn();
                    if (muChildren != null) {
                        muChildren.eq(0).trigger('click')
                    }
                    break;
                case "Both":
                    prevNextFn();
                    muiltiFn();
                    jquery(lnmObj.next).trigger('click');
                    if (timer != null && timer != -1) {
                        interval = setInterval(function () {
                            jquery(lnmObj.next).trigger('click');
                        }, timer);
                    }
                    break;
            }
    
            function SmoothnessLayer(currentNum) {
                var winWidth = winObj.width();
                parentLayer.animate({ left: -currentNum * winWidth }, 800, function () {
                    if (currentNum == 0) {
                        parentLayer.css('left', -winWidth * (layerCount - 2));
                        index = layerCount - 2;
                    }
                    else if (currentNum == layerCount - 1) {
                        parentLayer.css('left', -winWidth);
                        index = 1;
                    }
                });
            }
        };
    
        function buildCover(config, motivateCallBack) {
            var timer = -1;
            var cfg = config;
            var motiCallBack = motivateCallBack;
    
            if (cfg == null || cfg.smoothSlide == null) {
                throw new Error('config > smoothSlide is not configed.');
            }
    
            if (cfg.timer != null && cfg.timer != -1) {
                timer = cfg.timer;
            }
    
            var interval;
            var smoothSlide = cfg.smoothSlide;
            if (smoothSlide.windowObj == null) {
                throw new Error('config > smoothSlide >windowObj is not configed.');
            }
    
            var winObj = jquery(smoothSlide.windowObj);
            winObj.css('position', 'relative');
            if (smoothSlide == null
                || smoothSlide.slideLayerParent == null) {
                throw new Error('config > smoothSlide > slideLayerParent is not configed.');
            }
    
            if (smoothSlide.type == null) {
                throw new Error('config > smoothSlide > type is not configed.');
            }
    
            var muChildren;
            var lnmObj;
            switch (smoothSlide.type) {
                case 'Multi':
                    if (smoothSlide.mutilMotivateObj == null) {
                        throw new Error('config > smoothSlide > mutilMotivateObj is not configed.');
                    }
    
                    var muObj = jquery(smoothSlide.mutilMotivateObj);
                    muChildren = muObj.children();
                    break;
                case 'LastNext':
                    lnmObj = smoothSlide.lNMotivateObj;
                    if (lnmObj == null) {
                        throw new Error('config > smoothSlide > lNMotivateObj is not configed.');
                    }
                    break;
                case 'Both':
                    if (smoothSlide.mutilMotivateObj == null) {
                        throw new Error('config > smoothSlide > mutilMotivateObj is not configed.');
                    }
    
                    var muObj = jquery(smoothSlide.mutilMotivateObj);
                    muChildren = muObj.children();
                    lnmObj = smoothSlide.lNMotivateObj;
                    if (lnmObj == null) {
                        throw new Error('config > smoothSlide > lNMotivateObj is not configed.');
                    }
                    break;
                default:
                    throw new Error('config > smoothSlide > type is not configed.');
                    break;
            }
    
    
    
            var parentLayer = jquery(smoothSlide.slideLayerParent);
            var layerCount = parentLayer.children().size();
            if (layerCount <= 1) {
                return;
            }
    
            var index = 0;
            var prevNextFn = function () {
                if (lnmObj != null) {
                    if (lnmObj.last == null) {
                        throw new Error('config > smoothSlide > slideLayerParent > last is not configed.');
                    }
    
                    jquery(lnmObj.last).click(function () {
                        if (!parentLayer.is(':animated')) {
                            CoverLayer(--index, layerCount);
                        }
                        try {
                            motiCallBack($(this), index, layerCount);
                        }
                        catch (err) {
                            throw new error('Motivate call back function is not work:' + err.description);
                        }
                    });
    
                    if (lnmObj.next == null) {
                        throw new Error('config > smoothSlide > slideLayerParent > next is not configed.');
                    }
    
                    jquery(lnmObj.next).click(function () {
                        if (!parentLayer.is(':animated')) {
                            CoverLayer(++index, layerCount);
                        }
                        try {
                            motiCallBack($(this), index, layerCount);
                        }
                        catch (err) {
                            throw new error('Motivate call back function is not work:' + err.description);
                        }
                    });
                }
            };
    
            var muiltiFn = function () {
                if (muChildren != null) {
                    muChildren.each(function (i) {
                        jquery(this).click(function () {
                            if (!parentLayer.is(':animated')) {
                                index = i;
                                CoverLayer(i, layerCount);
                                try {
                                    motiCallBack(jquery(this), index, layerCount, true);
                                }
                                catch (err) {
                                    throw new error('Motivate call back function is not work:' + err.description);
                                }
                            }
                        });
    
                    });
                }
            };
    
            switch (smoothSlide.type) {
                case "LastNext":
                    prevNextFn();
                    index = 0;
                    if (lnmObj.next != null) {
                        if (timer != null && timer != -1) {
                            interval = setInterval(function () {
                                jquery(lnmObj.next).trigger('click');
                            }, timer);
                        }
                    }
                    break;
                case "Multi":
                    muiltiFn();
                    if (muChildren != null) {
                        muChildren.eq(0).trigger('click')
                    }
                    break;
                case "Both":
                    prevNextFn();
                    muiltiFn();
                    if (timer != null && timer != -1) {
                        interval = setInterval(function () {
                            jquery(lnmObj.next).trigger('click');
                        }, timer);
                    }
                    break;
            }
    
            function CoverLayer(currentNum, layerCount) {
                var vLayer = parentLayer.children(':visible');
                if (currentNum < 0) {
                    index = layerCount - 1;
                }
                if (currentNum >= layerCount) {
                    index = 0;
                }
                var zIndex = index + 1;
                vLayer.css({ 'z-index': 1 });
                parentLayer.children().eq(index).css({ 'z-index': 2 }).fadeIn(2000, function () {
                    if (!jquery(this).is(':animated')) {
                        vLayer.hide();
                    }
                });
    
            }
        };
    
        return {
            buildSmoothSlide: buildSmooth,
            buildCoverSlide: buildCover
        };
    });
  • 相关阅读:
    http从发出请求到接收响应的旅行
    git(二)github的使用入门及搜索技巧
    git(一) 基础
    获取基于Internet Explorer_Server的聊天窗口内容
    主机字节与网络字节的转换
    SQL Server存储过程中防止线程重入处理方式
    利用NVelocity 模版生成文本文件
    C# async await 学习笔记2
    C# async await 学习笔记1
    imx6 工具链下载地址
  • 原文地址:https://www.cnblogs.com/fang-beny/p/5097522.html
Copyright © 2011-2022 走看看