• [jQuery] 网页背景切换的插件


    思路:

      1. 通过jq改变元素的css,来实现背景的切换

    功能:

      1. 背景切换

    相关知识点

      1. $.fn是指jQuery的命名空间,加上fn的方法及属性,会对jQuery实例有效。

      2. extend(dest,src1,src2,src3...);

        2.1 它的含义是将src1,src2,src3...合并到dest中,返回值为合并后的dest.如果说后面的参数如果和前面的参数存在相同的名称,那么后面的会覆盖前面的参数值。

        2.2 上述的extend方法原型中的dest参数是可以省略的,如果省略了,则该方法就只能有一个src参数,而且是将该src合并到调用extend方法的对象中去

      即:

        jQuery.fn.extend(object); 给jQuery对象添加方法。

        jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。

    代码

      

    (function($) {
    
        $.fn.bgSlide = function(options){
    
            // 默认参数
            var defaults = {
                bgs: [],//储存背景
                model: 'default', //可选项 custom
                max: 13,//切换的个数
                bg: 0,//当前的位置
                times: 5000,//切换时间
                speed: 'fast', // 可换为 mormal  , slow
                opacity: 0.4,//透明度
                abs: this, //默认参数请勿修改,除非你已知他的用处
                arr: [],//请勿修改,缓存区
                url: ''
            };
    
            // 获得参数
            var ops = $.extend(defaults, options);
    
            if (ops.model == 'custom') {
                ops.max = ops.bgs.length
            }
    
            // 插件的方法
            var method = {
    
                // 获得随机切换的背景的索引
                rand: function () {
                    ops.bg = parseInt(Math.random() * ops.max);
                    return ops.bg;
                },
    
                // 切换时间
                time: function () {
                    setInterval(function () {
                        method.isChangeBg();
                    }, ops.times)
                },
    
    
                // 判断当前图片是否已经切换过
                contains: function (arr, obj) {
                    var i = arr.length;
                    while (i--) {
                        if (arr[i] === obj) {
                            return true;
                        }
                    }
                    return false;
                },
    
                //  切换背景中
                isChangeBg: function () {
                    //获得新的索引
                    method.rand();
    
                    if (ops.model == 'default') {
    
                        //判断是否完成一个周期
                        if (ops.arr.length == ops.max) {
                            ops.arr = [];
                        }
    
                        // 判断图片是否切换过
                        if (method.contains(ops.arr, ops.bg)) {
                            method.isChangeBg()
                        } else {
                            // 将未切换的索引添加到缓存区
                            ops.arr.push(ops.bg);
                            // 改变背景
                            method.changeBg();
                        }
                    } else if (ops.model == 'custom') {
    
                        //判断是否完成一个周期
                        if (ops.arr.length == ops.max) {
                            ops.arr = [];
                        }
    
                        // 判断图片是否切换过
                        if (method.contains(ops.arr, ops.bg)) {
                            method.isChangeBg()
                        } else {
                            // 将未切换的索引添加到缓存区
                            ops.arr.push(ops.bg);
                            // 改变背景
                            method.changeBg();
                        }
                    }
                    //console.log(this)
                },
    
                // 改变背景
                changeBg: function () {
                    switch (ops.model) {
                        // 读取默认图片路径
                        case 'default':
                            ops.url = 'url("./staic/images/index/bg' + ops.bg + '.jpg")';
                            break;
                        
                        // 读取自定义图片路径
                        case 'custom':
                            ops.url = 'url("' + ops.bgs[ops.bg] + '")';
                            break;
                    }
    
                    // 修改css
                    $(ops.abs).fadeTo(ops.speed, ops.opacity, function () {
                        $(ops.abs).css({
                            'background-image': ops.url,
                            'background-size': '100%',
                            'background-position': 'fixed',
                            'background-repeat': 'no-repeat',
                            '-webkit-transition': 'background-image 0.5s',
                            '-moz-transition': 'background-image 0.5s',
                            '-ms-transition': 'background-image 0.5s',
                            '-o-transition': 'background-image 0.5s',
                            'transition': 'background-image 0.5s'
                        }).delay(ops.speed).fadeTo(ops.speed, 1);
                    });
                }
            };
    
    
            method.isChangeBg();
            method.time();
    
    
        }
    
    
    })(jQuery);
    

      

      

    Demo

  • 相关阅读:
    JAVA_OA管理系统(三):Spring参数注入
    JAVA_OA管理系统(二):SpringMVC笔记基础篇01注入方法
    java_OA管理系统(一):Servlet总结案例仿网络聊天室
    探秘Java中String、StringBuilder以及StringBuffer
    详解Java中的注解
    详解Java中的注解
    JSP中文乱码问题(get,post篇)
    JSP中文乱码问题(get,post篇)
    98%的人没解出的德国面试逻辑题(离散数学篇)!?
    哈希函数
  • 原文地址:https://www.cnblogs.com/SoYang/p/11397527.html
Copyright © 2020-2023  润新知