(function($) { $.fn.scrollWait = function(options) { var ops = $.extend({}, $.fn.scrollWait.defaults, options); var opts = $.meta ? $.extend({}, ops, $( this).data()) : ops; /** * Show location */ 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; // Number of origins var num = opts.num; // Diameter of origin var R = dsize / num * opts.areaWeight; // Radius var r = 1 / 2 * R; // Outer circle diameter var outerR = 1 / 2 * dsize; //Inner circle diameter var innerR = outerR - R; //Traverse and add origin object for (var i = 0; i < num; i ) { $('body' ).append($("
i "">
")); } // The actual coordinate is 0, 0 var i = 0; var innerArray = new Array(num); /** * Calculate the center coordinates of the point on the inner circle */ 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 ; } /** * Draw a circle */ $( ".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" }); } // Find the position of the currently paused circle var val = $("#current").val(); if (val == undefined || val == "") { $("body").append($("")); k = 0; } else { k = val; } var o = new Object(); var timer; // Start rotating o.start = function() { var first; var g = $("#grade").val(); if (g == undefined || g == "") { $("body") .append($("")); 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 ; } // Overwrite value $("#current").val(k); }, opts.speed); return this; } // Pause o.stop = function() { clearInterval(timer); return this; } // End o.end = function() { clearInterval(timer); // Remove all elements $(".innerCircle,.innerCircle-change, #current,#grade").remove(); } return o; } $.fn.scrollWait.defaults = { size : 80, top : null, left : null, // Quantity num: 8, speed: 200, // Proportion of dots to the entire area areaWeight: 5 / 4 }; })(jQuery);