Struppi: Fade-Effekt bei Mouseover... wie und wo merken?

Beitrag lesen

Der Stack Overflow bzw. zu tiefe Rekursion kommt auch erst dann, wenn man eben hektisch hovert.

Probier das mal, ich hoffe ich hab's genug getestet

var fade = new function() {  
	var node;  
	var opacity = 0;  
	var is_fade_in = true;  
	var do_next;  
	var aktiv = false;  
  
	function fade_func() {  
		node.style.filter = 'Alpha(opacity=' + opacity + ')';  
		node.style.opacity = opacity / 100;  
		opacity += is_fade_in ? 1 : -1;  
		window.status = opacity + '/'+ is_fade_in + '/' + do_next + '/' + aktiv;  
  
		if((is_fade_in && opacity > 100) || (!is_fade_in && opacity < 0)){  
			if(do_next) {  
				if(is_fade_in && do_next < 0 ||  
				!is_fade_in && do_next > 0) {  
					is_fade_in = !is_fade_in;  
					do_next = 0;  
					window.setTimeout(fade_func, 1000);  
				}  
			} else {  
				aktiv = false;  
			}  
			  
		} else {  
			aktiv = true;  
			window.setTimeout(fade_func, 10);  
		}  
	};  
	  
	this.init = function(action, fade_node) {  
		action  =  document.getElementById(action);  
		node =  document.getElementById(fade_node);  
		if(!action || !node) return;  
		  
		action.onmouseover = function() {  
			if(!aktiv) {  
				is_fade_in = true;  
				fade_func();  
			} else {  
				do_next = is_fade_in ? 0 : 1; // fade_in  
			}  
		};  
		action.onmouseout = function() {  
			if(!aktiv) {  
				is_fade_in = false;  
				fade_func();  
			} else {  
				do_next = !is_fade_in ? 0 : -1; // fade_out  
			}  
		};  
	};  
};  
fade.init('foo', 'fadein');  

Struppi.