我正在尝试找到一个可以将元素从指定透明度淡化为指定透明度的函数。例如,从 0 到 0.7,但我能找到的一切都从 0 到 1 或 1 到 0 逐渐消失。我找不到任何可以让您指定从什么到什么的东西。我对我发现的函数进行逆向工程的尝试也失败了,因为我发现的每个示例都非常神秘。
我也想在没有任何框架的情况下做到这一点。
谢谢!!
我正在尝试找到一个可以将元素从指定透明度淡化为指定透明度的函数。例如,从 0 到 0.7,但我能找到的一切都从 0 到 1 或 1 到 0 逐渐消失。我找不到任何可以让您指定从什么到什么的东西。我对我发现的函数进行逆向工程的尝试也失败了,因为我发现的每个示例都非常神秘。
我也想在没有任何框架的情况下做到这一点。
谢谢!!
它没有特别的技巧,您只需在超时/间隔内重复将不透明度样式设置为 0 或 1 以外的值。
这是一个精简的淡入淡出功能,您可以将其用作起点。
<script type="text/javascript">
function fade(element, o0, o1, t) {
// IE compatibility. Detect lack of native 'opacity' support, and ensure element
// has layout for IE6-7.
//
var canopaque= 'opacity' in element.style;
if (!canopaque && 'currentStyle' in element && element.currentStyle.hasLayout===false)
element.style.zoom= '1';
function setOpacity(o) {
if (canopaque)
element.style.opacity= ''+o;
else
element.style.filter= 'alpha(opacity='+Math.round(o*100)+')';
}
var t0= new Date().getTime();
setOpacity(o0);
var interval= setInterval(function() {
var dt= (new Date().getTime()-t0)/t;
if (dt>=1) {
dt= 1;
clearInterval(interval);
}
setOpacity(o1*dt+o0*(1-dt));
}, 25);
}
</script>
<p id="foo"> hello. </p>
<button onclick="fade(document.getElementById('foo'), 0.7, 0, 2000);">fade 0.7 to 0</button>
使用此示例中的代码:
<html>
<head>
<title> </title>
<script>
var nereidFadeObjects = new Object();
var nereidFadeTimers = new Object();
var opacitiz=0;
//Функция предназначена для нумерации тегов
window.onload=function() {
var e=document.getElementsByTagName('*')
for (var i=0,l=e.length;i<l;i++) e[i].sourceIndex=i
}
//Вызов nereidFade() для разных браузеров при наведение и отводе курсора мышкой
//@param object определяет из какого тега был вызов
//@param num -- 1 - навели курсов мышкой, 0 - отвели курсор мышки
function KrossBrows(object,num) {
if (num==1)
if (!document.all) nereidFade(object, 1,30,0.1);
else nereidFade(object, 100,30,10);
else
if (!document.all) nereidFade(object, 0.3,50,0.05);
else nereidFade(object, 30,50,5);
}
//Отвечает за прозрачнность
//@param object определяет из какого тега был вызов
//@param destOp конечная позиция для выполнения прозрачности
//@param rate время которое потребуется на вызов функции
//@param delta шаг для прозрачности
function nereidFade(object, destOp, rate, delta){
if (!document.all) opacitiz=object.style.opacity;
else opacitiz=object.filters.alpha.opacity;
clearTimeout(nereidFadeTimers[object.sourceIndex]);
diff = destOp-opacitiz;
direction = 1;
if (opacitiz > destOp) direction = -1;
delta=Math.min(direction*diff,delta);
if (!document.all) object.style.opacity=parseFloat(object.style.opacity)+(direction*delta);
else object.filters.alpha.opacity+=direction*delta;
if (opacitiz != destOp){
nereidFadeObjects[object.sourceIndex]=object;
nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
}
}
</script>
</head>
<body>
<IMG onmouseover="KrossBrows(this,1)" style="FILTER: alpha(opacity=30);opacity:0.3" onmouseout="KrossBrows(this,0)" height=31 alt="" src="ace.gif" width=88 vspace=2 border=0></A>
<IMG onmouseover="KrossBrows(this,1)" style="FILTER: alpha(opacity=30);opacity:0.3" onmouseout="KrossBrows(this,0)" height=31 alt="" src="ace.gif" width=88 vspace=2 border=0></A>
</body>
</html>