基于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 相关文章推荐
JS操作Cookies的小例子
Oct 15 Javascript
jquery如何获取复选框的值
Dec 12 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
Apr 15 Javascript
js实现拖拽效果
Feb 12 Javascript
Bootstrap基本样式学习笔记之表格(2)
Dec 07 Javascript
js中let和var定义变量的区别
Feb 08 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
jQuery操作事件完整实例分析
Jan 10 jQuery
vue实现户籍管理系统
May 29 Javascript
JavaScript图片旋转效果实现方法详解
Jun 28 Javascript
ES6中的Javascript解构的实现
Oct 30 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获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
PHP写日志的实现方法
2014/11/05 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
python使用scrapy解析js示例
2014/01/23 Python
Python的函数的一些高阶特性
2015/04/27 Python
Python可变参数函数用法实例
2015/07/07 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python模拟百度登录实例详解
2016/01/20 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
python3下载抖音视频的完整代码
2019/06/05 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
django有哪些好处和优点
2020/09/01 Python
python实现三壶谜题的示例详解
2020/11/02 Python
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
竞选班委演讲稿
2014/04/28 职场文书
村级个人对照检查材料
2014/08/22 职场文书
顶岗实习协议书
2015/01/29 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript