mehrspaltige darstellung von langen texten
VoodiX
- html
0 Tom0 Stefan Einspender
0 Stefan Einspender
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.
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
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
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
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
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)
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 ...
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
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
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
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
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.
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