基于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 中对象的继承〔转贴〕
Jan 22 Javascript
JavaScript 面向对象的之私有成员和公开成员
May 04 Javascript
js实现汉字排序的方法
Jul 23 Javascript
ClearTimeout消除闪动实例代码
Feb 29 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
Sep 05 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 Javascript
JS实现音量控制拖动
Jan 15 Javascript
JavaScript实现省市区三级联动
Feb 13 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 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+dbfile开发小型留言本
2006/10/09 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
深入了解Python数据类型之列表
2016/06/24 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Django缓存系统实现过程解析
2019/08/02 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
安全员岗位职责
2013/11/11 职场文书
酒店执行总经理岗位职责
2013/12/15 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
经典商业广告词
2014/03/13 职场文书
学生会竞聘书范文
2014/03/31 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书