给自己,这周一个任务,完成一个组件化的图片轮播效果

1,只依赖与内部js    只需要传配置信息。

2,图片框架可以,根据图片宽高自动计算图片宽高,且这个功能可以开关,传入具体宽高也可以。

3.不依赖于任何库,全面兼容  ie6+  goole  firfox.

4.图片延迟加载。

5.图片其实位置可以自设

6.左右箭头,下部文字提示可以,如模块一样卸载和加上。

7.图片是否自动播放开关。

8.图片是否循环播放,开关。

9,可以作为插件简单易用且结构样式易改造。

10.性能调优。

11图片信息添加和减少都以配置形式,快速反应需求变更。

12.为图片轮播时提供回调函数:分图片加载出前,和加载完成后,以对象数组形式,可以为单个图片轮播提供函数回调。

现在只写了一点点惭愧呀  后续慢慢完善:

html  页面:

<!DOCTYPE html>
<html>
<head>
    <title>ruby图片轮播插件</title>
</head>
<body>

</body>
<script type="text/javascript" src="rubypic.js"></script>
<script>
    var runPlugin = new rubySlide();
</script>
</html>
View Code

主要js:

/**
 * Created with JetBrains WebStorm.
 * User: Administrator
 * Date: 14-3-23
 * Time: 下午4:46
 * To change this template use File | Settings | File Templates.
 */
(function(w){
    //************************分模块加载 start************************//
    var moudle = {};
    function isFunction(obj) {
        return Object.prototype.toString.call(obj) === "[object Function]" ;
    }

    var define = function(name , fun){
        if(moudle[name]){
            throw new Error('moudle '+ name + 'has aleady been defined!');
        }else{
            moudle[name] = fun;
        }
    };

    var require = function(name){
        if(moudle[name] && isFunction(moudle[name])){
            return moudle[name]();
        }else{
            throw new Error('moudle ' + name +'is not defined');
        }

    };
    //************************分模块加载 end************************//
    /**
     * 常用的工具函数
     */
    define('Plugin/Tools',function(){
        var tools ={
            $ : function(id){
                return document.getElementById(id);
            },
            $$ : function(child , parent){
                return parent.getElementsByTagName(child);
            },
            extend : function(toObj , fromObj){
                for( var key in fromObj){
                    toObj[key] = fromObj[key];
                }
            }

        };
        return tools;
    });
    /**
     * 插件结构
     */

    /**
     * 插件入口
     * @param obj  插件的配置信息
     * @param contentId  插件展示的父亲id
     */
    w.rubySlide = function(obj , contentId){
        var pluginTools = require('Plugin/Tools');

        var config = {
            imgArr : [],//  图片信息内容默认为空 每一张图片信息包括 rul:地址  desc:简介
            startIndex : 0,//默认从第一种开始
            width : false,//g规定的宽度
            height : false,//规定的高度
            loop : true,//是否循环播放
            prev : true, //向左向右,上一张下一张
            direction : 1,//1 表示向左右, 2 表示上下
            autodisplay : true,//是否自动播放,false 则表示不自动播放
            displayCurentNum : true,//是否显示 轮播到第几张图片的数字
            nextCallBack : '',//运行下一张图片时候回调函数
            startCallBack : '',//开始运行初始化时候回调函数
            displayTime : 2000,//图片轮播速度
            pauseTime : 2500,// 图片轮播停顿时间
            prevCss : 'prev-css',//上一张下一张图片的样式
            descCss : 'desc-css',//图片描述样式
            numCss : 'imgnum-css',//第几张图片样式选择
            imgDesc : true  //图片文字介绍
        };

        if(obj){ //将配置信息载入
            pluginTools.extend(config , obj);
        }

        console.log(config);


    };

})(window);
View Code
ruby前端观察
原文地址:https://www.cnblogs.com/rubyxie/p/3612714.html