MudGuard: (Javascript) IE: currentStyle-Werte in Pixeln

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

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  1. 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

    1. 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

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. 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

        1. 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

          1. 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

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. 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

        2. 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

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. 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

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. 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

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. 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

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. 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

      2. Hi,

        Nur verrät er mir eben nicht, so daß ich mir nicht ausrechnen kann, wieviel Pixel padding 1em bedeutet.

        Eben.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!