VoodiX: mehrspaltige darstellung von langen texten

hi, gibt es eine möglichkeit mittels HTML oder CSS einen längeren Text automatisch sagen wir dreispaltig darstellen zu lassen?

als letzte möglichkeit fällt mir dazu sonst nur ein den langen text aufzusplitten und auf verschiedene spalten zu verteilen, was aber übertrieben umständlich ist, vor allem wenn es dynamisch passieren soll.

php lösungen werden auch akzeptiert, auch wenn eine einfache HTML/CSS Variante bevorzugt wird :)

besten dank.

  1. Hello,

    php lösungen werden auch akzeptiert, auch wenn eine einfache HTML/CSS Variante bevorzugt wird :)

    Wo hast Du denn Schwierigkeiten beim Aufbau der PHP-Lösung?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Hallo Tom,

      php lösungen werden auch akzeptiert, auch wenn eine einfache HTML/CSS Variante bevorzugt wird :)

      Wo hast Du denn Schwierigkeiten beim Aufbau der PHP-Lösung?

      wie kann ich mit PHP ein mehrspaltiges Layout realisieren?

      Zitat aus [pref:t=80882&m=469838]:
      "Wie Du die HTML-Seiten, JS- und CSS-Dateien erzeugst, ist völlig unerheblich."

      Es wundert mich etwas, dass Du mit sowas ankommst ... ;-)

      Viele Grüße,
      Stefan

      1. hallo zusammen, das geht aber flott hier :)

        also mehrspaltiges layout lässt mit php insofern realisieren als man den langen text z.b. aus ner datenbank abholt, ihn dann von einer funktion in x gleich lange teile teilt und als array abspeichert. anzahl der teile ergibt anzahl der spalten etc.
        das schwere an diesen sachen sind die unterschiedlichen schriftarten die browserstandardmäßig benutzen und eingaben ala MMMMMMMMMMM ...

        sebastian

        1. Hello,

          das schwere an diesen sachen sind die unterschiedlichen schriftarten die browserstandardmäßig benutzen und eingaben ala MMMMMMMMMMM ...

          und unvorhergesehene Umbrüche

          Du must also erst den Rawtext teilen, dann die htmlZeichen ersetzen und dann hoffen, dass der Browser bei der Ausgabe mitspielt.

          Im Prinzip kann man durch die Hintertür auch die entstandene Spaltenhöhe messen. Aber das klappt nur mit JavaScript und manche Browser stäuben sich auch.

          //------------------------------------------------------------
          function split_text($spaltenzahl,$text)
          {
            $spalten=array();
              if (intval($spaltenzahl < 1))
            {
              $spaltenzahl=1;
            }

          $spaltennr=1;

          $text = strip_tags($text,"<br>");
            $textlen = strlen($text);
            $textpos = 0;
            $in_tag = false;

          while ($textpos < $textlen)
            {
              while ($textpos < (intval($textlen/$spaltenzahl)*$spaltennr))
              {
                if (!$in_tag)
                {
                  if ($text[$textpos]=="<")
                  {
                   $in_tag=true;
                  }
                  $spalten[$spaltennr].=$text[$textpos];
                  $textpos++;

          while (!$in_tag and ($text[$textpos]) and (strpos(" -<",$text[$textpos])===false))
                  {
                    $spalten[$spaltennr].=$text[$textpos];
                    $textpos++;
                  }
                }

          if ($in_tag)
                {
                  do
                  {
                    $spalten[$spaltennr].=$text[$textpos];

          if ($text[$textpos]==">")
                    {
                      $in_tag = false;
                    }
                    $textpos++;
                  }
                  while ($in_tag and ($textpos < $textlen));
                }
              }
              $spaltennr++;
            }

          #  for ($spaltennr=0; $spaltennr < $spaltenzahl, $spaltennr++)
          #  {
          #    $spalten[$spaltennr] = htmlentities($spalten[$spaltennr]);
          #  }

          return $spalten;
          }
          //------------------------------------------------------------

          Hier handelt es sich um einen Text, ders schon Tags enthält. Leichter ist das ganz bestimmt mit dem Rawtext.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          1. Aja die Funktion gabs schonmal im Forum (archiv) glaub ich.

            hab sie auch gleich mal getestet und sie funktioniert soweit gut. ich muss nur eben schauen inwieweit die gleiche textlänge gewährleistet wird, denn spalte 1 ist grundsätzliche länger als die 2 folgenden (bei 3 spalten)

        2. Hallo Sebastian,

          also mehrspaltiges layout lässt mit php insofern realisieren als man den langen text z.b. aus ner datenbank abholt, ihn dann von einer funktion in x gleich lange teile teilt und als array abspeichert. anzahl der teile ergibt anzahl der spalten etc.

          dann realisiere doch mal ein mehrspaltiges Layout mit PHP und ich
          realisiere es dann in *identischer* Weise mit HTML, JS und CSS ...
          was ist eigentlich so schwer daran, einfach zu verstehen, dass eine
          serverseitige Technik für die Darstellung im Client *vollkommen*
          unerheblich ist?

          Die Frage des OP zielt doch überhaupt nicht darauf ab, wie die Daten
          erzeugt werden, die an den Client geschickt werden, sondern er will
          wussen, in welcher Form diese Daten sein müssen und dabei hilft PHP
          überhaupt nicht, es kann da noch so schön Inhalte einer DB auslesen,
          beim Client wird nicht PHP ankommen ...

          Viele Grüße,
          Stefan

          PS: Langsam überlege ich mir, zu diesem Thema mal einen Anrtikel zu
              verfassen, so oft wie ich dieses "Mach es doch mit PHP" schon
              in ähnlichen Fällen gelesen habe ...

          1. Hallo Stefan, großer PHP-Liebhaber ;)

            ich denke Tom und ich sind nicht wirklich unwissend. die belehrung über php ist zwar richtig, wir haben aber auch nichts gegenteiliges behauptet :)
            es ist server-seitig, richtig. das was der client letzten endes bekommt ist kein php, sondern der übersetzte code. sei es nun html oder sonstwas.

            ich denke nur du solltest nicht so kleinlich sein. ich habe nunmal eine datenbank mit einigen längeren texten, die ich gerne mehrspaltig ausgeben lassen würde. dass du dich hinsetzen kannst und jeden aus der datenbank-anfrage generierten text in html coden kannst glaub ich dir :)
            doch was wenn du mal schläfst?

            ich habe in meinem ersten posting bewusst von 'dynamisch' geredet, da die ganze sache möglichst auf knopfdruck passieren soll.
            und da es für das ergebnis unerheblich ist ob ein html-befehl oder ein umweg-skript in php die grundlage ist, habe ich bewusst auch lösungen in anderen 'sprachen' akzeptiert :)

            gruß
            sebastian

          2. Hallo,

            also mehrspaltiges layout lässt mit php insofern realisieren als man den langen text z.b. aus ner datenbank abholt, ihn dann von einer funktion in x gleich lange teile teilt und als array abspeichert. anzahl der teile ergibt anzahl der spalten etc.

            dann realisiere doch mal ein mehrspaltiges Layout mit PHP und ich realisiere es dann in *identischer* Weise mit HTML, JS und CSS ...

            Das wird schwer möglich sein. Es stehen Texte unterschiedlicher Länge zur Verfügung, die gleichmäßig über drei Spalten verteilt werden sollen. Automatisch. Sprich, der Text beginnt in der ersten Spalte, läuft in der Spalte weiter bis zum Spaltenende und geht dann - wie beim Zeitungssatz - in der nächsten Spalte oben weiter. (Von dessen Sinnhaftigkeit einmal abgesehen.) Insgesamt sind alle Spalten mehr oder weniger gleich hoch.

            Das lässt sich mit CSS und selbst mit Tabellen nur lösen, wenn der Text, der jeweils in einer Spalte erscheinen soll, vorgruppiert ist, also etwa durch ein div-Element. Da die Texte unterschiedlich lang sind, kann nicht einfach an einer beliebigen Stelle ein div eingefügt werden. Ein und dasselbe HTML-Gerüst hilft nicht weiter. Das richtige HTML dazu mit der entsprechenden Aufsplittung kann PHP generieren.

            was ist eigentlich so schwer daran, einfach zu verstehen, dass eine serverseitige Technik für die Darstellung im Client *vollkommen* unerheblich ist?

            Serverseitig wird das HTML zusammengebaut, damit clientseitig bestimmte CSS-Regeln angreifen können. Dazu muss, wie gesagt, der Text getrennt werden und in unterschiedlichen Elementen für die jeweiligen Spalten untergebracht werden.

            Die Frage des OP zielt doch überhaupt nicht darauf ab, wie die Daten erzeugt werden, die an den Client geschickt werden,

            Offenbar doch.

            sondern er will wussen, in welcher Form diese Daten sein müssen

            Die Daten müssen wie oben gesagt entsprechend Spalte für Spalte strukturiert sein.

            und dabei hilft PHP überhaupt nicht

            Siehe oben.

            es kann da noch so schön Inhalte einer DB auslesen, beim Client wird nicht PHP ankommen ..

            Das hat auch niemand gesagt.

            Mathias

            1. Hallo,

              was ist eigentlich so schwer daran, einfach zu verstehen, dass eine serverseitige Technik für die Darstellung im Client *vollkommen* unerheblich ist?

              Serverseitig wird das HTML zusammengebaut, damit clientseitig bestimmte CSS-Regeln angreifen können. Dazu muss, wie gesagt, der Text getrennt werden und in unterschiedlichen Elementen für die jeweiligen Spalten untergebracht werden.

              sehr schön, dann baue doch mal serverseitig das passende HTML zu-
              sammen, welches berücksichtigt, dass die Höhe des Anzeigebereichs
              im Browser bei mir Wert XYZ und bei meinem Nachbar 2xXYZ beträgt.
              Ich bin gespannt ;-)

              Ich lasse mich sogar zu der Behauptung hinreissen, dass ein wirklich
              sinnvolles mehrspaltiges Layout bei längeren Texten nur mit der Hilfe
              von JavaScript - ähnlich dem Beispiel der IHT-Website - möglich ist.
              Es ist wenig sinnvoll, wenn die einzelnen Spalten länger als die An-
              zeigeflächenhöhe sind, bei jeder Spalte runter und dann, für die je-
              weils nächste Spalte, wieder hochscrollen kann es ja auch nicht sein.

              Natürlich darf da jeder gern anderer Meinung sein, aber wenn ich
              etwas mehrspaltig am Bildschirm lesen will, dann sollte die Höhe
              der Spalte maximal die Höhe des Anzeigebereiches im Browser haben
              und dieser Wert ist, definitiv, mit PHP nicht ermittelbar.

              Viele Grüße,
              Stefan

              1. Hallo,

                Serverseitig wird das HTML zusammengebaut, damit clientseitig bestimmte CSS-Regeln angreifen können. Dazu muss, wie gesagt, der Text getrennt werden und in unterschiedlichen Elementen für die jeweiligen Spalten untergebracht werden.

                sehr schön, dann baue doch mal serverseitig das passende HTML zusammen, welches berücksichtigt, dass die Höhe des Anzeigebereichs im Browser bei mir Wert XYZ und bei meinem Nachbar 2xXYZ beträgt. Ich bin gespannt ;-)

                Mir ist klar, dass diese Anforderung auf diesem Weg nicht erfüllt werden kann. Aber meiner Wahrnehmung nach auch nicht zufriedenstellend auf andere Weise. Das ist sowieso nur die Spitze des Eisbergs.

                Ich lasse mich sogar zu der Behauptung hinreissen, dass ein wirklich sinnvolles mehrspaltiges Layout bei längeren Texten nur mit der Hilfe von JavaScript - ähnlich dem Beispiel der IHT-Website - möglich ist.

                Auf was du mit der IHT-Seite hinweisen wolltest, ist mir erst jetzt klargeworden, da die Webseite eine offenbar unsinnige Browserweiche hat. Der Clou daran ist eben, dass dort der Text überhaupt nicht aufgeteilt wird, sondern in jede Spalte einmal komplett geschrieben wird, woraufhin die Spalten so positioniert werden, dass nur die jeweiligen Ausschnitte zu sehen sind (top:-4186px usw.).

                Ich verstehe aber nicht, was daran der entscheidende Vorzug ist. Diese Lösung reagiert auf den einen Faktor Anzeigehöhe, was eine serverseitige Lösung, die sich darüber keine Gedanken macht und die kein »Blättern« erlaubt, logischerweise nicht kann. Dafür geht sie von einer festen Breite aus. Dafür muss sie es zwangsläufig unterbinden, dass der Benutzer über den Browser die Schriftgröße und verwandte Einstellungen verändern kann (und bietet notdürftig eine JavaScript-Skalierung an, bei welcher die Proportionen nicht berücksichtigt werden). Dafür muss sie die Anzeige pixelgenau abschätzen können, somit ist das Layout sehr anfällig gegenüber abweichenden Konfigurationen. Dafür ist das gesamte Konstrukt nicht linearisierbar, weil der Text dreifach im Dokumentbaum steht (besonders spaßig beim Lesen über Screenreader). Wenn man also schon von Seiten der Usability und der Flexibilität argumentiert, dann hat eine JavaScript-Lösung dieser Art letztlich keine entscheidend besseren Karten. Sicherlich ist die IHT-Umsetzung nicht die bestmögliche Implementation des Konzepts, aber die Nachteile sind eben größtenteils konzeptionelle.

                Es ist wenig sinnvoll, wenn die einzelnen Spalten länger als die Anzeigeflächenhöhe sind, bei jeder Spalte runter und dann, für die jeweils nächste Spalte, wieder hochscrollen kann es ja auch nicht sein.

                Das verstehe ich durchaus, ich sehe nur keine brauchbare Alternative, wie es besser gelöst werden könnte, außer eben der besagten Trickserei mit Nebenwirkungen. Verglichen mit der in diesem Punkt defizitären serverseitigen Lösung sticht jene JavaScript-Lösung, die gerade einmal auf die zur Verfügung stehende Höhe reagiert (bzw. reagieren kann), eben nicht durch allgemeine Flexibilität hervor.

                Natürlich darf da jeder gern anderer Meinung sein, aber wenn ich etwas mehrspaltig am Bildschirm lesen will, dann sollte die Höhe der Spalte maximal die Höhe des Anzeigebereiches im Browser haben

                Das ist wie gesagt nicht der einzige zu berücksichtigende Umstand, wenngleich ein wichtiger. Aber vor dem Hintergrund der Probleme, die bei der Lösung dieses Teilproblems auftreten, bleibt es letztlich unmöglich, eine in jedem Fall lesbare und flexible Raumaufteilung zu erzielen. Damit wären wir wieder einmal bei der Erkenntnis, dass ein solches Spaltenlayout im Web ziemlicher Käse ist.

                Mathias

                1. Hallo,

                  Damit wären wir wieder einmal bei der Erkenntnis, dass ein solches Spaltenlayout im Web ziemlicher Käse ist.

                  kurz und knapp: FULL ACK [1]

                  Viele Grüße,
                  Stefan

                  [1] Diese Aussage gilt für längere Fließtexte, der Spaltensatz von
                      vielen kleinen Textbereichen ist sicherlich auch ok, nur eben
                      bei längeren Texten ist es Unfug.

  2. Hallo,

    hi, gibt es eine möglichkeit mittels HTML oder CSS einen längeren Text automatisch sagen wir dreispaltig darstellen zu lassen?

    derzeit nicht.

    http://www.iht.com/articles/518887.html könnte Dich interessieren.

    als letzte möglichkeit fällt mir dazu sonst nur ein den langen text aufzusplitten und auf verschiedene spalten zu verteilen, was aber übertrieben umständlich ist, vor allem wenn es dynamisch passieren soll.

    Falls Du damit eine HTML-Lösung meinst, davon rate ich Dir dringend
    ab, es dürfte sehr unschön sein, wenn man für jede Spalte hoch und
    runter scrollen muß, nur weil die Spalten zu lang geraten sind.

    php lösungen werden auch akzeptiert, auch wenn eine einfache HTML/CSS Variante bevorzugt wird :)

    Was hat eine serverseitige Technologie mit einer Lösung zu tun,
    die clientseitig erfolgen muß. Wie Du die HTML-Seiten, JS- und
    CSS-Dateien erzeugst, ist völlig unerheblich.

    Viele Grüße,
    Stefan