Ankündigung

Einklappen
Keine Ankündigung bisher.

Größe des Inhaltes eines Textfeldes ermitteln

Einklappen

Neue Werbung 2019

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

  • Größe des Inhaltes eines Textfeldes ermitteln

    Hallo zusammen,

    wenn man Text in ein Textfeld oder in ein DIV schreibt dann werden ja automatische Zeilenumbrüche eingefügt, wenn man eine Zeile länger ist als das Textfeld oder das DIV breit ist.
    Dadurch ergeben sich mehrere Zeilen.
    Gibt es eine Möglichkeit, die Anzahl der Textzeilen, die sich aus einer bestimmten Zeilenbreite, Schriftart und Textinhalt ergeben, zu ermitteln?

    Viele Grüße
    Karli

  • #2
    In PHP?
    Nein.

    In Javascript gibt es da einige Versuche dies einigermassen sicher zu ermitteln, einfach ist es nicht.

    Aber - wozu braucht man das?

    Kommentar


    • #3
      Danke Protestix für die Antwort. Ich habe ein DIV mit einer bestimmten festen Höhe. Dort drin gibt es oben einen Text und unten einen Text. In der Mitte ist ein Bild mit fester Höhe. Je nachdem, was in den Texten oben und unten genau drin steht, können diese durch die Zeilenumbrüche mal eine, mal zwei oder auch mal drei Zeilen haben. Damit ändert sich der Platz zwischen dem oberen und unteren Text, so dass das Bild in Größe und Position verändert werden müsste.
      Die Schriftart ist vorher schon festgelegt. Dachte (bzw hoffte), dass man im php-Script schon irgendwo berechnen könnte, wo die Umbrüche sein würden, so dass man weiß wie viele Zeilen der Text hat.

      Kommentar


      • #4
        Das Thema Darstellung und Layout hat mit PHP nichts zu tun. Dafür ist CSS zuständig.

        Kommentar


        • #5
          Tipp:
          Beschäftige dich mal mit flexbox, damit ist die Umsetzung ein Kinderspiel.


          Probier mal folgendes aus:
          PHP-Code:
          <?php
          $multiplier 
          mt_rand(1,10);
          $text 'Beispiel Text lorem ipsum Beispiel Text lorem ipsum Beispiel Text lorem ';
          $html_out str_repeat($text$multiplier);
          ?>

          <!DOCTYPE html>
          <html lang="de">
          <head>
              <title>Flexbox</title>
              <meta charset="utf-8">
              <style>
              .container {
                  display: flex;
                  flex-direction: column;
                  justify-content: space-between;
                  width: 600px;
                  height: 600px;
                  border: 1px solid black;
              }
              .container img {
                  align-self: center;
              }
              </style>
          </head>
          <body>
              <main>
                  <div class="container">
                      <p>
                          <?= $html_out?>
                      </p>
                      <img src="http://lorempixel.com/400/200/sports/" alt="sport image" width="400" height="200">
                      <p>
                          lorem ipsum
                      </p>
                  </div>
              </main>
          </body>
          </html>
          Bei jedem Aufruf (Taste F5) wird die Anzahl der Zeilen zufällig neu gesetzt. Das Bild bleibt dabei immer mittig.

          Kommentar


          • #6
            Was? So einfach geht das? Und dafür habe ich mir so nen Kopf gemacht. Obwohl es ja im Prinzip sehr einfach aussieht, muss ich sagen, das wäre ICH niemals drauf gekommen. Schade, dass ich dir nur EINEN Like geben kann, sonst würde ich ganz oft drauf klicken. Vielen Dank Protestix!!!!

            Kommentar


            • #7
              Zitat von Karli1969 Beitrag anzeigen
              Obwohl es ja im Prinzip sehr einfach aussieht, muss ich sagen, das wäre ICH niemals drauf gekommen.
              Das liegt dann wohl daran das du dich nicht mit dem Thema Webdesign richtig beschäftigt hast.
              Die HTML-Elemente sollte man möglichst auswendig können und die wichtigsten Attribute dazu auch. CSS sollte man verstanden haben und wissen wo* man nachlesen kann.
              Danach erst kann man sich mit einer Programmiersprache dazu beschäftigen, vorher wird das alles in Schiffbruch enden.

              *dafür gibt es mehrere gute Quellen im Netz.

              Kommentar

              Lädt...
              X