Maximaler z-index?
Jörg Peschke
- css
Hallo,
Gibt es einen Maximumwert, den ein Z-Index haben kann?
Intutitiv würde ich den maximal möglichen Integer-Wert des Browsers annehmen, unter den von mir getesteten Browsern (IE, Netscape, Mozilla) gehen auch offenbar "beliebig" (im Sinne von "im Integer-Bereich") hohe Werte aber es könnte ja sein, dass es bestimmte Browser gibt, die eine Höchstgrenze definieren.
Gruss,
Jörg
Hi,
Gibt es einen Maximumwert, den ein Z-Index haben kann?
http://forum.de.selfhtml.org/archiv/2004/11/t93472/
cu,
Andreas
Danke! Den Thread muss ich beim Suchen wohl überlesen haben...*Augen-Z-Index-mal-höher-schraub*
Gruesse,
Joerg
Hi,
Danke! Den Thread muss ich beim Suchen wohl überlesen haben...*Augen-Z-Index-mal-höher-schraub*
Willst Du, daß die Augen vor den Lidern liegen? ;-)
cu,
Andreas
Willst Du, daß die Augen vor den Lidern liegen? ;-)
Die Augenlider sind in Flash gemacht, die liegen eh immer im Vordergund ;)
Hallo ich habs zwar noch nicht durchlaufen lassen,
aber vieleicht bringt das ja jemanden weiter.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<script type="text/javascript">
var myCount = 1;
var myValue = 100;
var myId = 2;
function changeIndex(cont){
myId = cont;
myChange = parseInt(myValue*myCount);
myCount++;
(myId ==2)?myId =1:myId =2;
tmpStr = "cont" + myId;
document.getElementById(tmpStr).style.zIndex = myChange + "";
window.status = document.getElementById(tmpStr).style.zIndex;
tmpStr = "changeIndex("+myId+")";
window.setTimeout(tmpStr,1000);
}
</script>
<style type="text/css">
#cont1 {
position:absolute;
left:0px;top:0px;
width:136px;height:136px;
background-Color:#FFFF00;
}
#cont2 {
z-index:200;
position:absolute;
left:30px;top:30px;
width:136px;height:136px;
background-Color:#00FFFF;
}
</style>
<body onLoad="changeIndex()">
<div id="cont1" style="z-index:100;">Container 1</div>
<div id="cont2" style="z-index:200;">Container 2</div>
</body>
</html>
Bernd
Hallo,
Hallo ich habs zwar noch nicht durchlaufen lassen,
aber vieleicht bringt das ja jemanden weiter.
Ich habe es ein wenig beschleunigt und in schritten von 1Mill.1 hochgezählt, der IE 6 meldete einen Fehler mit "Außerhab des Bereicht" bei 2147002147. Also ab das mit kleineren Schritten und immer nur 1 addiert so komme ich auf 2147483647 (2.147.483.647) genauer gesagt beim wechsel von 47 auf 48.
Firefox (0.9.3) meldet keinen Fehler aber er zählt dann rückwärts mit "-" Vorzeichen genau von derselben Zahal (also er beginnt mit -2147483648 beim Rückwärtszählen). Netscape 7.2 ebenso.
Opera 7.54 stoppt (auch) bei -2147483648
Interessantes Experiement!
Grüße
Thomas
Hallo Thomas,
Ich habe es ein wenig beschleunigt und in schritten von 1Mill.1 hochgezählt, der IE 6 meldete einen Fehler mit "Außerhab des Bereicht" bei 2147002147. Also ab das mit kleineren Schritten und immer nur 1 addiert so komme ich auf 2147483647 (2.147.483.647) genauer gesagt beim wechsel von 47 auf 48.
Firefox (0.9.3) meldet keinen Fehler aber er zählt dann rückwärts mit "-" Vorzeichen genau von derselben Zahal (also er beginnt mit -2147483648 beim Rückwärtszählen). Netscape 7.2 ebenso.
Opera 7.54 stoppt (auch) bei -2147483648
stoppt, heißt das gleiches Verhalten wie IE?
Interessantes Experiement!
Überall eine vorzeichenbehaftete 32-Bit-Integer. Nur der Überlauf wird unterschiedlich gehandhabt, wobei ich mehr Verständnis für das Verhalten des IE aufbringe als das der anderen Geckos (in diesem Spezialfall).
Der zulässige Bereich sollte für die Anwendungen der nächsten paar Jahre durchaus ausreichen, oder bist Du anderer Meinung?
Freundliche Grüsse,
Vinzenz
Hallo,
Opera 7.54 stoppt (auch) bei -2147483648
stoppt, heißt das gleiches Verhalten wie IE?
Nein, zumindest in der JavaScripkonsole von Opera gibt es keine Fehlermeldung und die letze Zahl in der Statuszeile ist die -2.xxx.
Der zulässige Bereich sollte für die Anwendungen der nächsten paar Jahre durchaus ausreichen, oder bist Du anderer Meinung?
Also wenn ich mir recht überlege, vielleicht reicht es aus ;-)
Grüße
Thomas
Moin!
Ich habe es ein wenig beschleunigt und in schritten von 1Mill.1 hochgezählt, der IE 6 meldete einen Fehler mit "Außerhab des Bereicht" bei 2147002147. Also ab das mit kleineren Schritten und immer nur 1 addiert so komme ich auf 2147483647 (2.147.483.647) genauer gesagt beim wechsel von 47 auf 48.
Firefox (0.9.3) meldet keinen Fehler aber er zählt dann rückwärts mit "-" Vorzeichen genau von derselben Zahal (also er beginnt mit -2147483648 beim Rückwärtszählen). Netscape 7.2 ebenso.
Opera 7.54 stoppt (auch) bei -2147483648Interessantes Experiement!
Und hinsichtlich des erlaubten Wertebereichs für den CSS-z-index irrelevant. Denn das einzige, was du da gefunden hast, sind die Grenzen von Javascript für Integer-Variablen.
Noch haben wir alle 32-Bit-Rechner. Was ist aber mit den kommenden 64-Bit-Rechnern? Das sollte ganz grundsätzlich die Integer-Rechenbereiche erheblich erweitern (2^63 = 9.223.372.036.854.775.808). Und außerdem zwingt ja niemand die Browser, den z-index aus dem CSS-File als Integer zu speichern, er mu0 ja nur als Integer interpretiert werden. Ein Browser sollte wohl in der Lage sein, die Angabe als String zu speichern und dann aufgrund von Längenvergleichen und im Zweifel durch Zahlenvergleiche bei gleich langen Strings eine Entscheidung über das "Vorneanzeigen" zu treffen.
- Sven Rautenberg
hi,
Und außerdem zwingt ja niemand die Browser, den z-index aus dem CSS-File als Integer zu speichern, er mu0 ja nur als Integer interpretiert werden. Ein Browser sollte wohl in der Lage sein, die Angabe als String zu speichern und dann aufgrund von Längenvergleichen und im Zweifel durch Zahlenvergleiche bei gleich langen Strings eine Entscheidung über das "Vorneanzeigen" zu treffen.
mal ehrlich, wenn du einen browser programmieren würdest - würdest du wirklich derart vorgehen ...?
gruß,
wahsaga
Moin!
Und außerdem zwingt ja niemand die Browser, den z-index aus dem CSS-File als Integer zu speichern, er mu0 ja nur als Integer interpretiert werden. Ein Browser sollte wohl in der Lage sein, die Angabe als String zu speichern und dann aufgrund von Längenvergleichen und im Zweifel durch Zahlenvergleiche bei gleich langen Strings eine Entscheidung über das "Vorneanzeigen" zu treffen.
mal ehrlich, wenn du einen browser programmieren würdest - würdest du wirklich derart vorgehen ...?
Wenn es darum geht, beliebig lange Ganzzahlen, bei denen es wertmäßig sowohl auf die erste als auch auf die letzte Stelle exakt ankommt, zu verarbeiten, dann ist die Stringdarstellung dieser Zahlen, abgesehen von der Möglichkeit der BCD-Notation, eigentlich das simpelste, was es gibt. Insbesondere beim z-index, bei dem man ja nicht mit den Zahlen rechnen muß, sondern sie lediglich zu vergleichen hat.
Also auf deine Frage: Ja, warum sollte man das anders machen? Und wie - was schlägst du vor?
- Sven Rautenberg
Hallo,
Insbesondere beim z-index, bei dem man ja nicht mit den Zahlen rechnen muß, sondern sie lediglich zu vergleichen hat.
Das ist nicht korrekt.
Also auf deine Frage: Ja, warum sollte man das anders machen?
Weil der Browser bei z-index nicht mit einem String sonder mit einem Interger zu rechenen hat.
http://www.w3.org/TR/CSS21/visuren.html#z-index
Grüße
Thomas
Moin!
Insbesondere beim z-index, bei dem man ja nicht mit den Zahlen rechnen muß, sondern sie lediglich zu vergleichen hat.
Das ist nicht korrekt.
Sondern? Wird ein Browser jemals in die Lage kommen, zwei z-index-Angaben zu addieren oder zu multiplizieren? Wohl eher nicht, weil CSS keine derartigen Operationen zuläßt (jedenfalls noch nicht).
Also auf deine Frage: Ja, warum sollte man das anders machen?
Weil der Browser bei z-index nicht mit einem String sonder mit einem Interger zu rechenen hat.
http://www.w3.org/TR/CSS21/visuren.html#z-index
"ein Integer" ist per Definition aber lediglich eine Ganzzahl, über deren Länge ist nichts ausgesagt. Und wenn es darum geht, beliebig lange Zahlen bis in die letzte Stelle genau zu speichern (denn der Unterschied zwischen z-index:100 und z-index:101 ist derselbe, wie zwischen z-index:1000000000000000000000 und z-index:1000000000000000000001 und muß folglich auch beachtet werden), dann kann man das natürlich in beliebig langen Binärzahlen tun, wenn man damit binäre Rechenoperationen vorhat, aber einfacher ist IMHO das Speichern als String. Weil das CSS ja ohnehin als String vorliegt.
PS: Wenn das mit dem Speichern als String so abwegig ist, warum wird das denn u.A. auch vom PHP-Modul bcmath benutzt? :)
- Sven Rautenberg
Hallo Sven,
PS: Wenn das mit dem Speichern als String so abwegig ist, warum wird das
denn u.A. auch vom PHP-Modul bcmath benutzt? :)
Es wird von vielen mathmatischen Erweiterungen benutzt, die mit beliebig
langen Zahlen rechnen :-)
Grüße,
CK
Hallo,
Insbesondere beim z-index, bei dem man ja nicht mit den Zahlen rechnen muß, sondern sie lediglich zu vergleichen hat.
Das ist nicht korrekt.
Sondern?
Falsch.
Wird ein Browser jemals in die Lage kommen, zwei z-index-Angaben zu addieren oder zu multiplizieren? Wohl eher nicht, weil CSS keine derartigen Operationen zuläßt (jedenfalls noch nicht).
Implizit müssen sie das schon jetzt machen.
In positionierten Bereichen müssen die Browser diese Angaben bereits jetzt addieren bzw. subtrahieren: z.B. in dem Beispiel von http://de.selfhtml.org/css/eigenschaften/positionierung.htm#position
müssen die Browser die Verschachtelung berücksichtigen.
Da könne sie nicht box4 und 5 nicht einfach in selben Kontext wie box1 u. 2. positionieren.
Also auf deine Frage: Ja, warum sollte man das anders machen?
Weil der Browser bei z-index nicht mit einem String sonder mit einem Interger zu rechenen hat.
http://www.w3.org/TR/CSS21/visuren.html#z-index"ein Integer" ist per Definition aber lediglich eine Ganzzahl, über deren Länge ist nichts ausgesagt.
Mindestens eine Zahl zwischen 0 und 9 muss es schon sein. Das _ist_ schon eine Aussage über Länge.
"An <integer> consists of one or more digits "0" to "9". "
Und wenn es darum geht, beliebig lange Zahlen bis in die letzte Stelle genau zu speichern [...] aber einfacher ist IMHO das Speichern als String. Weil das CSS ja ohnehin als String vorliegt.
PS: Wenn das mit dem Speichern als String so abwegig ist, [...]
Ist es, vergleiche bitte :
http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#q15 mit http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#strings
warum wird das denn u.A. auch vom PHP-Modul bcmath benutzt? :)
Möchtest du eine Antwort auf Wienerisch?: "I sog dir das ane: a Apfel is ka Banane".
Seit wann wird PHP vom Browser ausgeführt?
Grüße
Thomas
Hallo,
Interessantes Experiement!
Und hinsichtlich des erlaubten Wertebereichs für den CSS-z-index irrelevant.
Korrekt.
Und nicht desto trotz interessant, wenn man DHTML einsetzt.
Und außerdem zwingt ja niemand die Browser, den z-index aus dem CSS-File als Integer zu speichern, er mu0 ja nur als Integer interpretiert werden.
Korrekt.
Es funktioniert auch mit:
z-index:1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; und höher
Ein Browser sollte wohl in der Lage sein, die Angabe als String zu speichern und dann aufgrund von Längenvergleichen und im Zweifel durch Zahlenvergleiche bei gleich langen Strings eine Entscheidung über das "Vorneanzeigen" zu treffen.
Das macht mit sicherheit kein Browser.
Grüße
Thomas