Fabian: Ermitteln des von einem Text benötigten Platzes

Hi!

Gibt es eine JS-Funktion, die einen String entgegennimmt und daraus berechnet, wieviel Platz (in Pixeln) dieser auf einer Website benötigen würde?

MfG
Fabian

  1. Gibt es eine JS-Funktion, die einen String entgegennimmt und daraus berechnet, wieviel Platz (in Pixeln) dieser auf einer Website benötigen würde?

    ich war jetzt schon geneigt, einfach "nein" zu schreiben, aber auch wenn ich müde bin, versuche ich jetzt mal nett zu sein, auch wenn du eine gute vorlage für eine einfach "ja/nein"-antwort geliefert hast

    du kannst dir nur selbst etwas bauen, eine fertige funktion seitens javascript gibt es nicht und es ist auch nicht sinnvoll sowas überhaupt zu tun

    angenommen du zählst die zeichen und rechnest dann zeichenanzahl mal 12 pixel

    damit hast du mehrere probleme

    a) woher willst du die schriftgröße des benutzers wissen? bei 50 pixel schriftgröße ist eine zeichenbreite von 12 pixel etwas wenig, bei 10 pixel schrifgröße eine zeichenbreite von 12 pixel etwas übertrieben

    b) woher willst du wissen, ob der benutzer eine proportional-schrift oder monospace-schrift verwendet? du müsstest also für jedes zeichen eine andere breite veranschlagen oder auch nicht - du kannst es schlichtweg nicht wissen

    im endeffekt: eine blöde idee - die bessere lösung heisst "zeilenumbruch" oder "variable breite"

    1. Hi,

      a) woher willst du die schriftgröße des benutzers wissen? [...]
      b) woher willst du wissen, ob der benutzer eine proportional-schrift oder monospace-schrift verwendet? [...]

      c) woher willst Du wissen, welcher Font-Renderer verwendet wird (falls es überhaupt einen solchen gibt)? Vergleiche nur mal einen stinknormalen Text in z.B. Firefox mit einem Safari.

      im endeffekt: eine blöde idee

      Jau.

      die bessere lösung heisst "zeilenumbruch" oder "variable breite"

      Ähm, gut dass Du eine Lösung kennst, aber ... zu welchem Problem?

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. die bessere lösung heisst "zeilenumbruch" oder "variable breite"
        Ähm, gut dass Du eine Lösung kennst, aber ... zu welchem Problem?

        meine glaskugel hat gesagt, dass der op ein element haben möchte, welches sich der breite des textes anpasst - ggf ist die glaskugel aber defekt ;)

        1. Also eigentlich brauche ich die Funktion, um das Bild einer Sprechblase an die Größe des Textes anzupassen. Vielleicht gibt es dafür ja eine einfacherer Lösung? Zu beachten ist noch, dass die Blase nicht unbegrenzt groß werden soll, sondern ab einer bestimmten Größe das overflow:auto-Verhalten greifen soll- also Scrollbars in der Sprechblase erscheinen.

          1. Also eigentlich brauche ich die Funktion, um das Bild einer Sprechblase an die Größe des Textes anzupassen. Vielleicht gibt es dafür ja eine einfacherer Lösung? Zu beachten ist noch, dass die Blase nicht unbegrenzt groß werden soll, sondern ab einer bestimmten Größe das overflow:auto-Verhalten greifen soll- also Scrollbars in der Sprechblase erscheinen.

            wieso definierst du nicht eine fixe breite - sagen wir 25 em und eine variable höhe mit einer bestimmte maximalhöhe?

            die rundungen der sprechblase erzeugst du mit einer beliebigen "runde-ecken-technik" per css

    2. @@suit:

      angenommen du zählst die zeichen und rechnest dann zeichenanzahl mal 12 pixel

      Warum sollte man das tun??

      Man kann den fraglichen Text als Inline-Element oder gefloatet auf die Seite setzen, die Box unsichtbar machen oder außerhalb des Viewports positionieren, und die Breite der Textbox abfragen. [http://forum.de.selfhtml.org/archiv/2007/7/t157244/#m1022898 f.]

      Live long and prosper,
      Gunnar

      --
      Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
      1. Warum sollte man das tun??

        weil man sich der konsequenzen nicht bewusst ist ;)

        Man kann den fraglichen Text als Inline-Element oder gefloatet auf die Seite setzen, die Box unsichtbar machen oder außerhalb des Viewports positionieren, und die Breite der Textbox abfragen. [http://forum.de.selfhtml.org/archiv/2007/7/t157244/#m1022898 f.]

        die idee ist nicht schlecht - dennoch bevorzuge ich die variante mit dem automatischen zeilenumbruch - im klartext "wenn die zeile aus ist, umbruch" - eine box zu verkleinern und vergrößern ist eine ziemlich unpraktische lösung die in den meisten fällen überflüssig ist (wenngleich die von dir genannte methode sehr gut ist)

        1. @@suit:

          die idee ist nicht schlecht - dennoch bevorzuge ich die variante mit dem automatischen zeilenumbruch - im klartext "wenn die zeile aus ist, umbruch" -

          Ja, sicher.

          eine box zu verkleinern und vergrößern ist eine ziemlich unpraktische lösung die in den meisten fällen überflüssig ist

          An welcher Stelle im OP hattest du herausgelesen, wozu die Größe der erzeugten Textbox benötigt wird?

          (wenngleich die von dir genannte methode sehr gut ist)

          Mir ging es um die prizipielle Machbarkeit. Ob die Anwendung im konkreten Fall sinnvoll ist oder nicht, lässt sich anhand des OPs nicht einmal erahnen.

          Es sei denn, mit einer Glaskugel++, die das nicht nur zwischen den vorhandenen Zeilen liest, sondern auch neue hinzudichtet – frei nach den Gedanken des Hellsehers.

          Live long and prosper,
          Gunnar

          --
          Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
    3. Hallo,

      du kannst dir nur selbst etwas bauen, eine fertige funktion seitens javascript gibt es nicht und es ist auch nicht sinnvoll sowas überhaupt zu tun

      Aha - warum ist das nicht sinnvoll?

      angenommen du zählst die zeichen und rechnest dann zeichenanzahl mal 12 pixel (...)
      im endeffekt: eine blöde idee

      Natürlich kann ich mir eine schlechtest mögliche Umsetzung ausdenken, die die notwendigen Anforderungen gar nicht erfüllt. Aber wieso sollte ich mir blöde Ideen einfallen lassen, welche Erkenntnis gewinne ich daraus? ;) Jedenfalls sagt es nichts darüber aus, ob es sinnvoll ist, das überhaupt zu tun.

      Ehrlich gesagt verstehe ich nicht, was dein Posting beitragen soll...

      Mathias