• jquery创建一个图片、视频缓冲的效果样式插件


    利用css和jquery创建一个动画效果的缓冲样式插件,插件可以开始、暂停、结束.

    (function($) {
        $.fn.scrollWait = function(options) {
            var ops = $.extend({}, $.fn.scrollWait.defaults, options);
            var opts = $.meta ? $.extend({}, ops, $(this).data()) : ops;
            /**
             * 显示位置
             */
            var win = $(window);
            var winheight = win.height();
            var winwidth = win.width();
            var dsize = opts.size;
            var top = opts.top;
            var left = opts.left;
            var dtop = !top && top != "" && typeof top != "undefined" && top != 0
                    ? (winheight - dsize) / 2
                    : top;
            var dleft = !left && left != "" && typeof left != "undefined"
                    && left != 0 ? (winwidth - dsize) / 2 : left;
            // 原点数量
            var num = opts.num;
            // 原点直径
            var R = dsize / num * opts.areaWeight;
            // 半径
            var r = 1 / 2 * R;
            // 外侧圆直径
            var outerR = 1 / 2 * dsize;
            // 内侧圆直径
            var innerR = outerR - R;
            // 遍历添加原点对象
            for (var i = 0; i < num; i++) {
                $('body').append($("<div class=\"innerCircle\" id=\"innerCircle"
                        + i + "\"></div>"));
            }
            // 其实坐标0,0
            var i = 0;
            var innerArray = new Array(num);
            /**
             * 计算内圆上个点的中心坐标
             */
            for (var j = 0; j < innerArray.length; j++) {
                var x, y;
                var ang = i * 360 / num;
                if (0 <= ang && ang <= 90) {
                    x = outerR * Math.sin(ang / 180 * Math.PI) + outerR;
                    y = outerR - outerR * Math.cos(ang / 180 * Math.PI);
                }
                if (90 < ang && ang <= 180) {
                    x = outerR * Math.cos((ang - 90) / 180 * Math.PI) + outerR;
                    y = outerR * Math.sin((ang - 90) / 180 * Math.PI) + outerR;
                }
                if (180 < ang && ang <= 270) {
                    x = outerR - outerR * Math.sin((ang - 180) / 180 * Math.PI);
                    y = outerR * Math.cos((ang - 180) / 180 * Math.PI) + outerR;
                }
                if (270 < ang && ang <= 360) {
                    x = outerR - outerR * Math.cos((ang - 270) / 180 * Math.PI);
                    y = outerR - outerR * Math.sin((ang - 270) / 180 * Math.PI);
                }
                innerArray[j] = new Array(dtop + y - r, dleft + x - r);
                i++;
            }
            /**
             * 画圆
             */
            $(".innerCircle").each(function() {
                $(this).css({
                    'width' : R + "px",
                    'height' : R + "px",
                    'border-top-left-radius' : r + "px",
                    'border-top-right-radius' : r + "px",
                    'border-bottom-left-radius' : r + "px",
                    'border-bottom-right-radius' : r + "px"
                });
            });
            for (var i = 0; i < num; i++) {
                $("#innerCircle" + i).css({
                    'top' : innerArray[i][0] + "px",
                    'left' : innerArray[i][1] + "px"
                });
            }
            // 查找当前暂停的圆的位置
            var val = $("#current").val();
            if (val == undefined || val == "") {
                $("body").append($("<input type=\"hidden\" id=\"current\">"));
                k = 0;
            } else {
                k = val;
            }
            var o = new Object();
            var timer;
            // 开始旋转
            o.start = function() {
                var first;
                var g = $("#grade").val();
                if (g == undefined || g == "") {
                    $("body").append($("<input type=\"hidden\" id=\"grade\">"));
                    first = 1;
                } else {
                    first = g;
                }
                timer = setInterval(function() {
                    if (first % 2 == 1) {
                        $("#innerCircle" + k).removeClass("innerCircle")
                                .addClass("innerCircle-change");
                    }
                    if (first % 2 == 0) {
                        $("#innerCircle" + k).removeClass("innerCircle-change")
                                .addClass("innerCircle");
                    }
                    if (k == (num - 1)) {
                        k = 0;
                        console.log(first);
                        first++;
                        $("#grade").val(first);
                    } else {
                        k++;
                    }
                    // 覆盖值
                    $("#current").val(k);
                }, opts.speed);
                return this;
            }
            // 暂停
            o.stop = function() {
                clearInterval(timer);
                return this;
            }
            // 结束
            o.end = function() {
                clearInterval(timer);
                // 移除所有元素
                $(".innerCircle,.innerCircle-change,#current,#grade").remove();
            }
            return o;
        }
        $.fn.scrollWait.defaults = {
            size : 80,
            top : null,
            left : null,
            // 数量
            num : 8,
            speed : 200,
            // 圆点占整个面积的比重
            areaWeight : 5 / 4
        };
    
    })(jQuery);

    调用方法:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <title>MyHtml.html</title>
    
            <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
            <meta http-equiv="description" content="this is my page">
            <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
            <link rel="stylesheet" type="text/css"
                href="scroll-wait-jquery-plugin.css">
    
        </head>
        <script type="text/javascript" src="jquery-1.7.js"></script>
        <script type="text/javascript" src="scroll-wait-jquery-plugin.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
            var w=$("body").scrollWait();
            w.start();
            
            setTimeout(function() {w.stop();},1000);
                setTimeout(function() {w.start();},2000);
                setTimeout(function() {w.stop();},3000);
                setTimeout(function() {w.start();},4000);
                setTimeout(function() {w.stop();},5000);
                setTimeout(function() {w.start();},6000);
                setTimeout(function() {w.end();},7000);
            });
        </script>
        <body>
    
    
        </body>
    </html>

    css:

    .innerCircle {
    	position: absolute;
    	background: #FFFF00;
    	opacity: 0.8;
    }
    
    .innerCircle-change {
    	background: #333;
    	position: absolute;
    }
    

      

    demo:

    (怎么提供在线的demo观看?)

  • 相关阅读:
    C# 多线程总结 异常处理 线程取消 锁(lock)
    C# sync/async 同步/异步
    C# Parallel 多线程并发
    C# Task TaskFactory 异步线程/异步任务
    C# ThreadPool 线程池
    Nginx基础配置
    Nginx配置通用语法
    Nginx进程间的关系
    Nginx命令行控制
    Flask框架02(路由)
  • 原文地址:https://www.cnblogs.com/tatame/p/2660410.html
Copyright © 2020-2023  润新知