"Client size" eines Objekts?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • "Client size" eines Objekts?

    Hallo zusammen,

    weiß jemand, wie man die Größe eines Elements ohne "border" und "padding", also praktisch die Größe, bzw den Bereich eines Elements, in dem sich ein anderes befinden kann, mit Javascript und der Hilfe von Prototype möglichst einfach herausfinden kann?

    Wäre sehr dankbar für Tips )

    Click
    Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

    Denk' mal drüber nach!

  • #2
    Suchst du getHeight und getWidth?

    Kommentar


    • #3
      getHeight und getWidth, bzw getDimensions geben die komplette Größe eines Elements zurück ( mit padding und border ).



      Online Beispiel
      Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

      Denk' mal drüber nach!

      Kommentar


      • #4
        Der Tip ist einfach... hör auf frameworks zu benutzen ohne zu wissen was da gemacht wird
        Du beantwortest deine Frage ja schon beinahe selbst.
        offsetWidth (beim Safari) und clientWidth bzw. offsetHeight und clientHeight geben dir die Breite, bzw. die Höhe des Elements zurück.
        Um die Breite oder die Höhe ohne Border und ohne padding zu bekommen musst du einfach style.borderBottomWidth, style.borderLeftWidth, etc. und style.paddingLeft, style.paddingRight, etc. abrechnen. Wenn der Rückgabewert == "" oder == null ist nimmst ersetzst du das einfach mit 0

        Kommentar


        • #5
          Mhm.. ist schon klar das man aufs Ergebins kommt, wenn man alles manuell abrechnet, ist aber sehr aufwendig. Deshalb dachte ich, dass es möglicherweise eine schnellere oder bessere Funktion gibt, die in einem Framework implementiert ist, und wo man sich nicht mehr um Browserabhängigkeiten scheren muss.

          Abgesehen davon benutze ich bei meinem Beispiel prototype ja nicht nur wegen den getHeight und getWidth. Und du hast recht, ich weiß nicht wie exakt alles bei Prototype funktioniert. Liest du dir etwa immer den Quellcode von dem Framework durch und verstehst ihn komplett, bevor du es nutzt?
          Ich nicht

          Was wird denn bei Prototype so gemacht, ohne dass ich es wusste? (Bei dem Beispiel)

          Ich denke nicht das prototype großartig andre sachen macht als ich machen würd, bis darauf, dass es in eine nette Funktion verpackt wird, aber ich kann mir ja nachher mal die Definition von "getDimensions" angucken..
          Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

          Denk' mal drüber nach!

          Kommentar


          • #6
            Ja, ich schaue mir (ausser die Standardbibliotheken z.B. bei C/C++, Java oder PHP) eigentlich, wenn möglich alles immer an, denn das hilft dir nicht nur zu verstehen was gemacht wird sondern du lernst dabei auch gerade noch es unter Umständen besser zu machen.
            Diese Funktion ist nicht gerade sehr kompliziert, aber, was du da z.B. lernen könntest ist, dass Elemente, welche versteckt sind (z.B. display:none) keine Breite oder Höhe zurückgeben mit clientHeight oder clientWidth. Du musst sie erst vorübergehend sichtbar machen die Grösse auslesen und danach wieder verschwinden lassen.

            Bei Prototype gibt es keine Implentation für einen Fall wie deinen. Du kommst also nicht darum herum dir eine Funktion zu schreiben, die das selbst berechnet, wie oben beschrieben.

            Um Browserabhängigkeiten musst du dich, wenn du mit Javascript arbeitest leider immer wieder kümmern insbesondere der IE hält sich kaum an w3c.

            Du hast recht, beim 1. Mal ist es aufwendig, aber es nützt dir auch und du kannst alles, was du mal gemacht hast auch später wieder verwenden.

            Kommentar

            Lädt...
            X