基于jquery創(chuàng)建的一個圖片、視頻緩沖的效果樣式插件
更新時間:2012年08月28日 23:48:58 作者:
利用css和jquery創(chuàng)建一個動畫效果的緩沖樣式插件,插件可以開始、暫停、結(jié)束
復(fù)制代碼 代碼如下:
(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;
// 原點數(shù)量
var num = opts.num;
// 原點直徑
var R = dsize / num * opts.areaWeight;
// 半徑
var r = 1 / 2 * R;
// 外側(cè)圓直徑
var outerR = 1 / 2 * dsize;
// 內(nèi)側(cè)圓直徑
var innerR = outerR - R;
// 遍歷添加原點對象
for (var i = 0; i < num; i++) {
$('body').append($("<div class=\"innerCircle\" id=\"innerCircle"
+ i + "\"></div>"));
}
// 其實坐標(biāo)0,0
var i = 0;
var innerArray = new Array(num);
/**
* 計算內(nèi)圓上個點的中心坐標(biāo)
*/
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"
});
}
// 查找當(dāng)前暫停的圓的位置
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;
// 開始旋轉(zhuǎn)
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;
}
// 結(jié)束
o.end = function() {
clearInterval(timer);
// 移除所有元素
$(".innerCircle,.innerCircle-change,#current,#grade").remove();
}
return o;
}
$.fn.scrollWait.defaults = {
size : 80,
top : null,
left : null,
// 數(shù)量
num : 8,
speed : 200,
// 圓點占整個面積的比重
areaWeight : 5 / 4
};
})(jQuery);
調(diào)用方法:
復(fù)制代碼 代碼如下:
<!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:
復(fù)制代碼 代碼如下:
.innerCircle {
position: absolute;
background: #FFFF00;
opacity: 0.8;
}
.innerCircle-change {
background: #333;
position: absolute;
}
您可能感興趣的文章:
- jQuery動畫animate方法使用介紹
- jquery animate 動畫效果使用說明
- JQuery動畫animate的stop方法使用詳解
- jQuery動畫效果animate和scrollTop結(jié)合使用實例
- 分享8款優(yōu)秀的 jQuery 加載動畫和進度條插件
- jQuery實現(xiàn)橫向帶緩沖的水平運動效果(附demo源碼下載)
- Jquery網(wǎng)頁內(nèi)滑動緩沖導(dǎo)航的實現(xiàn)代碼
- jquery多行滾動/向左或向上滾動/響應(yīng)鼠標(biāo)實現(xiàn)思路及代碼
- jquery實現(xiàn)的帶縮略圖的焦點圖片切換(自動播放/響應(yīng)鼠標(biāo)動作)
- jQuery實現(xiàn)響應(yīng)鼠標(biāo)滾動的動感菜單效果
- jQuery實現(xiàn)響應(yīng)鼠標(biāo)事件的圖片透明效果【附demo源碼下載】
- jQuery實現(xiàn)的鼠標(biāo)響應(yīng)緩沖動畫效果示例
相關(guān)文章
jquery showModelDialog的使用方法示例詳解
這篇文章主要介紹了window.showModalDialog的使用方法,大家要以參考使用2013-11-11基于jQuery實現(xiàn)仿51job城市選擇功能實例代碼
這篇文章主要介紹了基于jQuery實現(xiàn)仿51job城市選擇功能實例代碼的相關(guān)資料,需要的朋友可以參考下2016-03-03jQuery實現(xiàn)獲取table表格第一列值的方法
這篇文章主要介紹了jQuery實現(xiàn)獲取table表格第一列值的方法,涉及jQuery針對table表格元素的遍歷與讀取相關(guān)技巧,需要的朋友可以參考下2016-03-03jQuery Attributes(屬性)的使用(一、屬性篇)
本系列文章主要講述jQuery框架的屬性(Attributes)使用方法,文章分為:屬性篇、類篇、Html代碼篇&文本篇、值篇共4篇文章。2009-12-12