基于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 onkeydown事件入门实例(键盘某个按键被按下)
Oct 17 Javascript
javascript模拟php函数in_array
Apr 27 Javascript
JavaScript中的Math.LN2属性用法详解
Jun 12 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
Mar 01 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
Sep 02 Javascript
微信小程序中使用wxss加载图片并实现动画效果
Aug 13 Javascript
你知道JavaScript Symbol类型怎么用吗
Jan 08 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
详解Webpack4多页应用打包方案
Jul 16 Javascript
js获取图片的base64编码并压缩
Dec 05 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图片处理函数获取类型及扩展名实例
2014/11/19 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python中的元组介绍
2019/01/28 Python
python取余运算符知识点详解
2019/06/27 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
Python sublime安装及配置过程详解
2020/06/29 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
大学毕业生求职自荐信
2014/02/20 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
化学教育专业求职信
2014/07/08 职场文书
关于长城的导游词
2015/01/30 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python