开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2305|回复: 3
收起左侧

[JS相关教程] 基于jquery创建的一个图片、视频缓冲的效果样式插件

[复制链接]
结帖率:100% (6/6)
发表于 2012-9-4 17:39:36 | 显示全部楼层 |阅读模式   福建省泉州市
利用css和jquery创建一个动画效果的缓冲样式插件,插件可以开始、暂停、结束

代码如下:

(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[0] + "px",
'left' : innerArray[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;
}


结帖率:92% (11/12)
发表于 2012-9-4 19:47:49 | 显示全部楼层   山东省济宁市
这是java ?
回复 支持 反对

使用道具 举报

发表于 2012-9-4 20:07:36 | 显示全部楼层   广东省江门市
新手来学习下
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 14 天

发表于 2013-4-8 11:28:05 | 显示全部楼层   陕西省西安市
慢慢分析  来看看什么效果!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表