-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopacity.js
More file actions
70 lines (53 loc) · 3.53 KB
/
opacity.js
File metadata and controls
70 lines (53 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
wwww.tigir.com - 06.07.2006
Source: http://www.tigir.com/js/opacity.js
Áèáëèîòåêà opacity.js ê ñòàòüå "CSS ïðîçðà÷íîñòü (css opacity, javascript opacity)" - http://www.tigir.com/opacity.htm
setElementOpacity - óñòàíîâêà ïðîçðà÷íîñòè
getOpacityProperty - ïðîâåðêà, åñòü ëè âîçìîæíîñòü ìåíÿòü ïðîçðà÷íîñòü
fadeOpacity - ïëàâíîå èçìåíåíèå ïðîçðà÷íîñòè
*/
/* Ôóíêöèÿ êðîññáðàóçåðíîé óñòàíîâêè ïðîçðà÷íîñòè
Ïðèìåð: setElementOpacity(document.body, 0.5); //ñäåëàòü äîêóìåíò ïðîçðà÷íûì íà ïîëîâèíó
*/
function setElementOpacity(oElem, nOpacity)
{
var p = getOpacityProperty();
(setElementOpacity = p=="filter"?new Function('oElem', 'nOpacity', 'nOpacity *= 100; var oAlpha = oElem.filters["DXImageTransform.Microsoft.alpha"] || oElem.filters.alpha; if (oAlpha) oAlpha.opacity = nOpacity; else oElem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";'):p?new Function('oElem', 'nOpacity', 'oElem.style.'+p+' = nOpacity;'):new Function)(oElem, nOpacity);
}
// Ôóíêöèÿ getOpacityProperty() âîçâðàùàåò ñâîéñòâî êîòîðîå èñïîëüçóåòñÿ äëÿ ñìåíû ïðîçðà÷íîñòè èëè undefined, è ìîæåò èñïîëüçîâàòüñÿ äëÿ ïðîâåðêè âîçìîæíîñòè èçìåíåíèÿ ïðîçðà÷íîñòè
function getOpacityProperty()
{
var p;
if (typeof document.body.style.opacity == 'string') p = 'opacity';
else if (typeof document.body.style.MozOpacity == 'string') p = 'MozOpacity';
else if (typeof document.body.style.KhtmlOpacity == 'string') p = 'KhtmlOpacity';
else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) p = 'filter';
return (getOpacityProperty = new Function("return '"+p+"';"))();
}
/* Ôóíêöèè äëÿ ïëàâíîãî èçìåíåíèÿ ïðîçðà÷íîñòè:
1) fadeOpacity.addRule('opacityRule1', 1, 0.5, 30); //âíà÷àëå ñîçäàåì ïðàâèëî, çàäàåì èìÿ ïðàâèëà, íà÷àëüíóþ ïðîçðà÷íîñòü è êîíå÷íóþ, íåîáÿçàòåëüíûé ïàðàìåòð çàäåðæêè, âëèéÿþùèé íà ñêîðîñòü ñìåíû ïðîçðà÷íîñòè
2) fadeOpacity('elemID', 'opacityRule1'); // âûïîëíèòü ïëàâíóþ ñìåíó ïðîçðà÷íîñòè ýëåìåíòà ñ id ðàâíûì elemID, ïî ïðàâèëó opacityRule1
3) fadeOpacity.back('elemID'); //âåðíóòüñÿ â èñõîäíîå ñîòîÿíèå ïðîçðà÷íîñòè
*/
function fadeOpacity(sElemId, sRuleName, bBackward)
{
var elem = document.getElementById(sElemId);
if (!elem || !getOpacityProperty() || !fadeOpacity.aRules[sRuleName]) return;
var rule = fadeOpacity.aRules[sRuleName];
var nOpacity = rule.nStartOpacity;
if (fadeOpacity.aProc[sElemId]) {clearInterval(fadeOpacity.aProc[sElemId].tId); nOpacity = fadeOpacity.aProc[sElemId].nOpacity;}
if ((nOpacity==rule.nStartOpacity && bBackward) || (nOpacity==rule.nFinishOpacity && !bBackward)) return;
fadeOpacity.aProc[sElemId] = {'nOpacity':nOpacity, 'tId':setInterval('fadeOpacity.run("'+sElemId+'")', fadeOpacity.aRules[sRuleName].nDalay), 'sRuleName':sRuleName, 'bBackward':Boolean(bBackward)};
}
fadeOpacity.addRule = function(sRuleName, nStartOpacity, nFinishOpacity, nDalay){fadeOpacity.aRules[sRuleName]={'nStartOpacity':nStartOpacity, 'nFinishOpacity':nFinishOpacity, 'nDalay':(nDalay || 30),'nDSign':(nFinishOpacity-nStartOpacity > 0?1:-1)};};
fadeOpacity.back = function(sElemId){fadeOpacity(sElemId,fadeOpacity.aProc[sElemId].sRuleName,true);};
fadeOpacity.run = function(sElemId)
{
var proc = fadeOpacity.aProc[sElemId];
var rule = fadeOpacity.aRules[proc.sRuleName];
proc.nOpacity = Math.round(( proc.nOpacity + .1*rule.nDSign*(proc.bBackward?-1:1) )*10)/10;
setElementOpacity(document.getElementById(sElemId), proc.nOpacity);
if (proc.nOpacity==rule.nStartOpacity || proc.nOpacity==rule.nFinishOpacity) clearInterval(fadeOpacity.aProc[sElemId].tId);
}
fadeOpacity.aProc = {};
fadeOpacity.aRules = {};