(Javascript) IE: currentStyle-Werte in Pixeln
MudGuard
- css
0 Gernot Back0 Cybaer0 MudGuard0 Thomas Meinike0 Cybaer
Hi,
gibt es im IE (andere Browser sind für diesen Fall irrelevant) eine Möglichkeit, die Werte aus currentStyle in Pixeln zu bekommen, auch wenn im Stylesheet andere Einheiten verwendet wurden?
theContent=document.getElementById("content");
alert(theContent.currentStyle.paddingTop); //liefert 1em
Auch der Versuch, zusätzlich noch die Schriftgröße zu holen (um dann selber umzurechnen, war nicht wirklich von Erfolg gekrönt:
alert(theContent.currentStyle.paddingTop); //liefert 100.1%
Für eine bestimmte Berechnung bräuchte ich aber den Pixelwert für das Padding.
Es sollen aber die Einheiten im CSS nicht geändert werden wegen der Skalierbarkeit.
cu,
Andreas
Hallo MudGuard,
Für eine bestimmte Berechnung bräuchte ich aber den Pixelwert für das Padding.
Wenn es Kindelemente in dem Element mit dem Padding gibt, könntest du dir das aus deren offsetTop und ~Left errechnen.
Gruß Gernot
hi,
Wenn es Kindelemente in dem Element mit dem Padding gibt, könntest du dir das aus deren offsetTop und ~Left errechnen.
na ja, das kindelement selber kann ja ebenfalls ein padding haben, oder sogar margin - was dann?
gruß,
wahsaga
Hallo wahsaga,
Wenn es Kindelemente in dem Element mit dem Padding gibt, könntest du dir das aus deren offsetTop und ~Left errechnen.
na ja, das kindelement selber kann ja ebenfalls ein padding haben, oder sogar margin - was dann?
Ich glaube nicht, dass das einen Einfluss auf den Wert hätte, aber bevor ich jetzt auch noch einen Test mache, warte ich lieber auf Mudguards Ergebnis, der ist da sowieso flinker.
Gruß Gernot
Hallo nochmal,
Wenn es Kindelemente in dem Element mit dem Padding gibt, könntest du dir das aus deren offsetTop und ~Left errechnen.
Ich glaube nicht, dass das einen Einfluss auf den Wert hätte, aber bevor ich jetzt auch noch einen Test mache, warte ich lieber auf Mudguards Ergebnis, der ist da sowieso flinker.
scheint tatsächlich problematisch, ich lese da gerade:
"Beachten Sie:
Im Internet Explorer 5.0 wird in einem untergeordneten Element eine bestehende Padding-Angabe des übergeordneten Elementes nicht berücksichtigt, sofern sich kein Element vor dem abgefragten Element befindet."
Gruß Gernot
Hi,
Im Internet Explorer 5.0 wird in einem untergeordneten Element eine bestehende Padding-Angabe des übergeordneten Elementes nicht berücksichtigt, sofern sich kein Element vor dem abgefragten Element befindet."
Dann darf man halt nicht das firstChild benutzen ;-)
Sprich: 2 leere Span einfügen und den Offset des 2. benutzen.
(probier ich heut abend aus, jetzt gibt's wichtigeres zu tun)
cu,
Andreas
Hallo Andreas,
Dann darf man halt nicht das firstChild benutzen ;-)
Sprich: 2 leere Span einfügen und den Offset des 2. benutzen.
Du bist auch vor nichts fies! Machst dem Element erst zwei Kinder, nur um sie zum Auslesen zu missbrauchen und nimmst sie ihm nachher wieder weg.
(probier ich heut abend aus, jetzt gibt's wichtigeres zu tun)
Die Zeit bevorzugen die meisten fürs Kindermachen.
Gruß Gernot
hi,
Ich glaube nicht, dass das einen Einfluss auf den Wert hätte
stimmt, padding war natürlich quatsch - aber margin m.E. nicht.
gruß,
wahsaga
Hi,
Für eine bestimmte Berechnung bräuchte ich aber den Pixelwert für das Padding.
Wenn es Kindelemente in dem Element mit dem Padding gibt, könntest du dir das aus deren offsetTop und ~Left errechnen.
Werd ich mir mal angucken - es kann zwar vorkommen, daß es kein Kindelement gibt, aber dieser Umstand ließe sich ja beheben, indem ich ein Element einfüge, den offset auslese und das Element wieder entferne.
cu,
Andreas
Hi,
gibt es im IE (andere Browser sind für diesen Fall irrelevant) eine Möglichkeit, die Werte aus currentStyle in Pixeln zu bekommen, auch wenn im Stylesheet andere Einheiten verwendet wurden?
Wenn es die gäbe, könnte man ja wunderbar die Einheiten umrechnen. So sinnvoll dies wäre, so oft ich mir das bislang gewünscht habe: IMHO leider nein.
Gruß, Cybaer
Hi,
gibt es im IE (andere Browser sind für diesen Fall irrelevant) eine Möglichkeit, die Werte aus currentStyle in Pixeln zu bekommen, auch wenn im Stylesheet andere Einheiten verwendet wurden?
Wenn es die gäbe, könnte man ja wunderbar die Einheiten umrechnen. So sinnvoll dies wäre, so oft ich mir das bislang gewünscht habe: IMHO leider nein.
Die Möglichkeit em in px umzurechnen ist genau dann möglich, wenn die fontsize bekannt ist.
Und der Browser berechnet sich ja eine konkrete Schriftgröße, die er dann benutzt.
Nur verrät er mir eben nicht, so daß ich mir nicht ausrechnen kann, wieviel Pixel padding 1em bedeutet.
Der Browser berechnet es ja auch, er muß ja wissen, wieviele Pixel vom Rand entfernt der Inhalt beginnen muß.
cu,
Andreas
Hallo,
Die Möglichkeit em in px umzurechnen ist genau dann möglich, wenn die fontsize bekannt ist.
Und der Browser berechnet sich ja eine konkrete Schriftgröße, die er dann benutzt.Nur verrät er mir eben nicht, so daß ich mir nicht ausrechnen kann, wieviel Pixel padding 1em bedeutet.
Vielleicht hilft dieser (evtl. etwas naiv gedachter Ansatz) Umrechnungsversuch weiter:
...
<script type="text/javascript">
<!--
function Test()
{
var bodyobj,oldmar,oldpad,newp,anzahl,em_px,pr_px;
if(document.body && document.body.currentStyle)
{
bodyobj=document.body;
oldmar=bodyobj.currentStyle["marginTop"];
oldpad=bodyobj.currentStyle["paddingTop"];
bodyobj.style.marginTop="0px";
bodyobj.style.paddingTop="0px";
newp=document.createElement("p");
bodyobj.insertBefore(newp,bodyobj.firstChild);
anzahl=10; // hier auch mal andere Werte testen
newp.style.marginTop=anzahl+"em";
em_px=newp.offsetTop/anzahl;
newp.style.marginTop=anzahl+"%";
pr_px=newp.offsetTop/anzahl;
bodyobj.removeChild(newp);
bodyobj.style.marginTop=oldmar;
bodyobj.style.paddingTop=oldpad;
alert("1em = "+em_px+"px\n1% = "+pr_px+"px");
}
}
//-->
</script>
</head>
<body onload="Test()">
</body>
...
MfG, Thomas
Hi,
Nur verrät er mir eben nicht, so daß ich mir nicht ausrechnen kann, wieviel Pixel padding 1em bedeutet.
Eben.
Gruß, Cybaer