基于jquery创建的一个图片、视频缓冲的效果样式插件
2023-06-13 09:14:35 时间
(function($){
$.fn.scrollWait=function(options){
varops=$.extend({},$.fn.scrollWait.defaults,options);
varopts=$.meta?$.extend({},ops,$(this).data()):ops;
/**
*显示位置
*/
varwin=$(window);
varwinheight=win.height();
varwinwidth=win.width();
vardsize=opts.size;
vartop=opts.top;
varleft=opts.left;
vardtop=!top&&top!=""&&typeoftop!="undefined"&&top!=0
?(winheight-dsize)/2
:top;
vardleft=!left&&left!=""&&typeofleft!="undefined"
&&left!=0?(winwidth-dsize)/2:left;
//原点数量
varnum=opts.num;
//原点直径
varR=dsize/num*opts.areaWeight;
//半径
varr=1/2*R;
//外侧圆直径
varouterR=1/2*dsize;
//内侧圆直径
varinnerR=outerR-R;
//遍历添加原点对象
for(vari=0;i<num;i++){
$("body").append($("<divclass=\"innerCircle\"id=\"innerCircle"
+i+"\"></div>"));
}
//其实坐标0,0
vari=0;
varinnerArray=newArray(num);
/**
*计算内圆上个点的中心坐标
*/
for(varj=0;j<innerArray.length;j++){
varx,y;
varang=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]=newArray(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(vari=0;i<num;i++){
$("#innerCircle"+i).css({
"top":innerArray[i][0]+"px",
"left":innerArray[i][1]+"px"
});
}
//查找当前暂停的圆的位置
varval=$("#current").val();
if(val==undefined||val==""){
$("body").append($("<inputtype=\"hidden\"id=\"current\">"));
k=0;
}else{
k=val;
}
varo=newObject();
vartimer;
//开始旋转
o.start=function(){
varfirst;
varg=$("#grade").val();
if(g==undefined||g==""){
$("body").append($("<inputtype=\"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);
returnthis;
}
//暂停
o.stop=function(){
clearInterval(timer);
returnthis;
}
//结束
o.end=function(){
clearInterval(timer);
//移除所有元素
$(".innerCircle,.innerCircle-change,#current,#grade").remove();
}
returno;
}
$.fn.scrollWait.defaults={
size:80,
top:null,
left:null,
//数量
num:8,
speed:200,
//圆点占整个面积的比重
areaWeight:5/4
};
})(jQuery);
调用方法:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title>MyHtml.html</title>
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<metahttp-equiv="description"content="thisismypage">
<metahttp-equiv="content-type"content="text/html;charset=UTF-8">
<linkrel="stylesheet"type="text/css"
href="scroll-wait-jquery-plugin.css">
</head>
<scripttype="text/javascript"src="jquery-1.7.js"></script>
<scripttype="text/javascript"src="scroll-wait-jquery-plugin.js"></script>
<scripttype="text/javascript">
$(document).ready(function(){
varw=$("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;
}
相关文章
- jQuery动画,案例
- 使用 jQuery 插件 CitySelect 实现省市联动效果
- 延迟加载图片的 jQuery 插件:Lazy Load
- jQuery Google Charts—-一个封装google chart api的jquery插件详解编程语言
- jquery基础详解编程语言
- jQuery回到顶部插件jQuery GoUp详解编程语言
- jQuery ready事件的4种写法
- jquery插件开发方法小结
- jValidate基于jQuery的表单验证插件
- 基于jquery的获取mouse坐标插件的实现代码
- jQuery的写法不同导致的兼容性问题的解决方法
- jQuery创建插件的代码分析
- jqPlot基于jquery的画图插件
- 分享20多个很棒的jQuery文件上传插件或教程
- 这些年、我收集的JQuery代码小结
- 分享8款优秀的jQuery加载动画和进度条插件
- jQuery插件开发基础简单介绍
- JQuery中关于jquery.js与jquery.min.js的比较探讨
- Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
- 浅析jQuery中常用的元素查找方法总结
- jquery验证表单中的单选与多选实例
- jQuery插件selectToSelect使用方法
- jquery数据验证插件(自制,简单,练手)实例代码
- Jquery使用FirefoxFireBug插件调试Ajax步骤讲解
- jquery插件jquery倒计时插件分享
- 为开发者准备的10款最好的jQuery日历插件
- Jquery图片延迟加载插件jquery.lazyload.js的使用方法
- 使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
- jquery实现导航固定顶部的效果仿蘑菇街
- jQuery和CSS的文本特效插件集锦
- 分享2个jQuery插件--jquery.fileupload与artdialog
- 限制上传文件大小和格式的jQuery插件实例
- jQuery实现带滚动线条导航效果的方法
- jQuery控制TR显示隐藏的三种常用方法
- 分享一个自己动手写的jQuery分页插件