[JS] Ein einzelnes Div abdunkeln

Ich habe vor einiger Zeit mit dem abdunkeln von Seitenelementen herumexperimentiert und bin dabei auf verschiedene Schwierigkeiten gestoßen (insbesondere natürlich im IE). Was dabei letztendlich rausgekommen ist, ist eine Funktion, die die Arbeit normalerweise übernehmen sollte, vielleicht kann sie ja jemand gebrauchen.Benötigte Funktionen:

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//This function is from DHTML Calendar (http://www.dynarch.com/projects/calendar/)
function createElement(type, parent) {
	var el = null;
	if (document.createElementNS) {
 
		// use the XHTML namespace; IE won't normally get here unless
		// _they_ "fix" the DOM2 implementation.
		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
	} else {
		el = document.createElement(type);
	}
	if (typeof parent != "undefined") {
		document.getElementById(parent).appendChild(el);
	}
	return el;
};
 
function destroyElement(element, parent) {
   obj = document.getElementById(element);
   document.getElementById(parent).removeChild(obj);
}

Eigentliche Abdunklungsfunktion:

?View Code JAVASCRIPT
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
// Parameters:
//	sElementID: ID of the element you want to shade
//	bShow: Shade or brighten the element, true = shade, false = brighten
//	sStyleSheet: You can insert the class of your own stylesheet, otherwise a standard style is used. You don´t have
//		to set sStyleSheet when you want to remove the shade.
//	example: shadeElement('testdiv', true, 'superClassName');
function shadeElement(sElementID, bShow, sStyleSheet) {
 
	if (document.getElementById(sElementID).style.position == "relative") {
		if (bShow == true) {
			if (document.getElementById(sElementID + "_lightbox")) {
				var lightbox = document.getElementById(sElementID + "_lightbox");
			}
			else {
				var lightbox = createElement("div", sElementID);
				lightbox.id = sElementID + "_lightbox";
				lightbox.innerHTML = " ";
			}
 
			if (typeof sStyleSheet != "undefined") {
				lightbox.className = sStyleSheet;
			}
			else {
				lightbox.style.position = "absolute";
				lightbox.style.top = 0;
				lightbox.style.bottom = 0;
				lightbox.style.left = 0;
				lightbox.style.right = 0;
				lightbox.style.backgroundColor = "#000";
				lightbox.style.opacity = 0.8;
				lightbox.style.zIndex = 2000;
				lightbox.style.display = "block";
                                /* Some workarounds for IE */
                                lightbox.style.filter = "alpha(opacity = 80)"; //Different opacity usage in IE
				lightbox.style.width = "100%";
				lightbox.style.height = document.getElementById(sElementID).offsetHeight;
				document.getElementById(sElementID).style.zoom = 1; //Force "hasLayout" for containing div in IE
			}
		}
		else {
			if (document.getElementById(sElementID + "_lightbox")) {
				destroyElement(sElementID + "_lightbox", sElementID);
			}
		}
	}
	else {
		alert("Please make sure your containing div's position is relative.");
	}
}
Sonntag, Dezember 21st, 2008 Programmierung

2 Kommentare to [JS] Ein einzelnes Div abdunkeln

  • oliver sagt:

    hallo,
    könntest du vielleicht ein beispiel posten, bzw, wie ich das script aufrufe?

    vielen dank

    oliver

  • Stex sagt:

    Moin,

    naja, im Prinzip so wie es im Kommentar darüber steht:

    Wenn du das Element verdunkeln möchtest:
    shadeElement(‘id_deines_divs’, true);

    Wenn du es wieder sichtbar machen möchtest:
    shadeElement(‘id_deines_divs’, false);

    Wenn du die Funktion ohne className aufrufst, erstellt sie selbst ein Standard-Style-Attribut, ansonsten vergibt sie einfach den Klassennamen.

  • Kommentar verfassen

    Back to Top ↑