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


Posted in Javascript onAugust 28, 2012
(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; 
}
 
Javascript 相关文章推荐
javascript实现的鼠标链接提示效果生成器代码
Jun 28 Javascript
JavaScript CSS菜单功能 改进版
Dec 20 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
Jul 11 Javascript
JS 精确统计网站访问量的实例代码
Jul 05 Javascript
JS delegate与live浅析
Dec 21 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
Javascript基础教程之数据类型 (数值 Number)
Jan 18 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
JavaScript实现经纬度转换成地址功能
Mar 28 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
Vue 莹石摄像头直播视频实例代码
Aug 31 Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 Javascript
javascript 判断中文字符长度的函数代码
Aug 27 #Javascript
Jquery 数据选择插件Pickerbox使用介绍
Aug 24 #Javascript
javascript数字格式化通用类 accounting.js使用
Aug 24 #Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
Aug 24 #Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 #Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
Aug 24 #Javascript
jquery动画1.加载指示器
Aug 24 #Javascript
You might like
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
php之可变变量的实例详解
2017/09/12 PHP
jquery随意添加移除html的实现代码
2011/06/21 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
python开发游戏的前期准备
2019/05/05 Python
Django的Modelforms用法简介
2019/07/27 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
Python实现爬取并分析电商评论
2020/06/19 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
会计专业自我鉴定范文
2013/10/06 职场文书
求职简历推荐信范文
2013/12/02 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
人力资源职位说明书
2014/07/29 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
幼儿园辞职书
2015/02/26 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
创业计划书之美容店
2019/09/16 职场文书