(langer) Text in zwei Teile aufteilen (für zwei spalten)

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

  • (langer) Text in zwei Teile aufteilen (für zwei spalten)

    hi

    ich habe grad ne denkblockade. und zwar haben ich einen längeren text, der in zwei mehr oder weniger gleichgrosse teile aufgeteilt werden soll.
    und zwar so, dass ich dann in zwei spalten (zwei DIVs) reinsetzen kann. die formatierung ist dann mit Courier New, also so oder so mit einer fixen laufweite.


    jetzt habe ich irgendwie gedacht, mittels explode() die sätze aufzuteilen, so dass jeder satz ein element im array ist, und ich so die hälte ermitteln könnte. aber hab ich dann schnell verworfen da man ja auch mal "und wer weiss, vielleicht kommt es ja noch..." oder auch mal "der 3. platz wurde" etc machen kann, und dann würde das ganze nicht mehr stimmen.



    hat jemand bereits ein fertices code schnippsel, oder einen tipp wie ich das etwas "realistischer" lösen könne?

    also schön wäre es, wenn die zweite spalte auch mit einem neuen satz anfangen könnte, und nicht einfach mitten im satz einen sprung macht.

    eben, fertiges script braucht ihr nicht zu machen, nur einfach auf die sprünge helfen was für funktionen ich wie einsetzen könnte.

  • #2
    Es dürfte schwer sein, zwischen nem Satzende und z.B. dem 3. Platz zu unterscheiden.

    ich verschieb mal nach BS. Mache aber nicht all zu viele Hoffnungen.

    Kommentar


    • #3
      ob das sinnvoll ist? die spalten kennt man von zeitungen, auf dem monitor allerdings zweimal scrollen zu müssen ist evtl. unintuitiv.

      Kommentar


      • #4
        nun, okey, das mit dem "3. Platz" könnte ich weglassen.


        und soo lange texte sind es auch nicht, dass man scrollen muss.

        der text wird wenn in beiden DIVs aufgeteilt wohl kaum mehr als 400px gross sein. ist eben nur so, dass wenn man den text einzel macht, mit einer breite von 600px wirkt das optisch nicht mehr schön, sprich zu lange zeilen, zu viel "augen-sprung-distanz-beim-zeilenwechsel".
        wenn man den text in zwei spalten à 275px aufteilt ist es viel angenehmer zu lesen.

        zu sehen hier http://uh.wohnsonntag.ch/
        bei button 1 (eine spalte) und button 2 (zwei spalten). dort hat es zwar beim zwei spalten design die zweite spalte auf englisch, aber die wird es doch nicht brauchen.
        man sieht auch, rein optisch wirkt das mit zwei spalten schöner.



        ich habe mir das so gedacht:
        die länge des strings auslesen, und mitte ermitteln.
        dann mit strpos und dem offset parameter den nächsten punkt zu ermitteln, und den abstand "mitte zu nächstem punkt" zu speichern.
        dann den ganzen string temporät zu "drehen" (aus "hallo" ein "ollah"), und dann wieder "mitte zu nächsten punkt" zu rechnen, wobei das ja korrekter wäre mit "mitte zu vorherigem punkt".
        und dann dort wo es näher ist zu schneiden.

        dies umzusetzen wäre noch einfach zu machen, und mach mich jetzt auch dann mal dran, vielleicht hat jemand aber noch ne bessere lösung

        Kommentar


        • #5
          Vielleicht kannst du nach "kleiner Buchstabe - Punkt - Leerzeichen - großer Buchstabe" suchen? Bestimmt noch nicht perfekt, aber besser als nur nach Punkten.
          ich glaube

          Kommentar


          • #6
            Wenn du das so umsetzt, zerstörst du auch die Struktur des Textes, denn das Verschieben des Satzanfangs in die nächste Spalte wirkt auf den Leser so, als hätte der Autor an dieser Stelle einen neuen Absatz angefangen.
            Deshalbe (und nicht nur weil der Platz knapp ist) beginnt in Zeitungen auch nicht jede Spalte mit einem neuen Satz.

            Das "Spalten-Textfluss-Problem" kann man im Web eigentlich nicht zufriedenstellend lösen, denn die Browser bieten keinerlei Unterstützung dafür (CSS3?).
            Eine Lösung wäre, den vorerst unsichtbaren Textcontainer nach dem Rendern mit Javascript zu behandeln. Ist der Text zu lang, hat er den Container "zu groß" gemacht, dann erzeugt man eine Kopie des Containers mitsamt Inhalt als zweite Spalte, trimmt den Overflow der ersten Spalte auf die gewünschte Größe und scrollt die zweite Spalte um genau diese Größe. So wirkt es, als wäre die zweite Spalte die Fortsetzung der ersten.
            Das Spiel wiederholt man natürlich mit jeder neu erzeugten Spalte ... und zum Schluß macht man alle Spalten sichtbar.

            Edit: Oder so.
            Zuletzt geändert von onemorenerd; 17.03.2007, 19:02.

            Kommentar


            • #7
              Firefox hat ein entsprechende CSS-Attribut, funktioniert allerdings halt dann nur da

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar

              Lädt...
              X