Mit CSS pre für alle Browser umbrechen und trotzdem W3C validier
tobeit
- css
Hallo zusammen,
nun mich beschäftigt etwas schon eine Weile - mir ist es ein hohes Ziel bei der Programmierung meiner Webseite http://www.tobeit.net mich an Standards zu halten. Mittlerweile ist es mir gelungen die W3C Markup Validation zu bestehen, doch die CSS Validation bereitet mir noch Kummer. Und zwar habe ich meine Textlichen Inhalte, die ich aus XML-Dateien auslese, in pre-Container gepackt, die ich wie folgt CSS formatiere damit die Zeilen umgebrochen werden.
pre
{
white-space: pre-wrap; /* CSS3 */
white-space: -moz-pre-wrap; /* Gecko */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7+ */
word-wrap: break-word; /* IE 5.5+ */
}
An den Kommentaren seht Ihr, warum dieser "Gewaltakt" sein muss. Nun meine Frage kennt jemand Alternativen, die W3C konform gehen??
Schon mal vielen Dank und Grüße
tobeit
das wird so (auch wenn es nicht valide ist) ohnehin nicht funktionieren, da dir jede nachfolgende zeile die vorhergehenden überschreibt
eine browserweiche wäre zb recht interessant in der generierst du dann ein stylesheet welches diese browserspezifischen eigeneheiten hinzufügt
das wird so (auch wenn es nicht valide ist) ohnehin nicht funktionieren, da dir jede nachfolgende zeile die vorhergehenden überschreibt
Dem ist aber nicht der Fall, es ist schon mit dieser Formatierung im Einsatz, Du kannst Dich auf meiner Seite davon überzeugen.
eine browserweiche wäre zb recht interessant in der generierst du dann ein stylesheet welches diese browserspezifischen eigeneheiten hinzufügt
Browserweiche, sprich den Browser ermitteln, den der User einsetzt und entsprechend das CSS-"Setting" wählen?! Das klingt für mich nach dem Einsatz von JS und davon möchte ich eigentlich absehen.
Das klingt für mich nach dem Einsatz von JS und davon möchte ich eigentlich absehen.
du kannst serverseitig den useragent prüfen - ist sehr simpel
$_SERVER['HTTP_USER_AGENT']; sollte helfen
$_SERVER['HTTP_USER_AGENT'];
nachtrag - das ist natürlich die php variante, andere scriptsprachen können das aber auch ;)
Hallo
$_SERVER['HTTP_USER_AGENT'];
nachtrag - das ist natürlich die php variante, andere scriptsprachen können das aber auch ;)
... undzwar mit der gleichen zweifelhaften Relevanz, da diese Angabe manipulierbar ist.
Tschö, Auge
... undzwar mit der gleichen zweifelhaften Relevanz, da diese Angabe manipulierbar ist.
siehe hier:
https://forum.selfhtml.org/?t=169467&m=1106869
Hallo
... undzwar mit der gleichen zweifelhaften Relevanz, da diese Angabe manipulierbar ist.
siehe hier:
https://forum.selfhtml.org/?t=169467&m=1106869
Ja und dann? Welches CSS setzt du dem Browser vor, für den du den Typ nicht ermitteln konntest, weil der UA-String auf nichts hinweist und dies auch beide Prüfungen (JS/Serverskript) aussagen? Da wäre doch die CSS-Weiche, die sich direkt auf die Fähigkeiten der Browser bezieht, die wesentlich bessere Wahl.
Tschö, Auge
Ja und dann? Welches CSS setzt du dem Browser vor, für den du den Typ nicht ermitteln konntest, weil der UA-String auf nichts hinweist und dies auch beide Prüfungen (JS/Serverskript) aussagen? Da wäre doch die CSS-Weiche, die sich direkt auf die Fähigkeiten der Browser bezieht, die wesentlich bessere Wahl.
einen css bug auszunutzen um ein verhalten zu provozieren welches sich ggf bei einem update des browser ändert halte ich nicht für sonderlich schlau - natürlich ist das eine gute möglichkeit, aber etwas kurzsichtig
dafür eigenen sich conditional comments besser, diese haben aber den nachteil dass sie nur vom internet exploder unterstützt werden
Hallo
einen css bug auszunutzen um ein verhalten zu provozieren welches sich ggf bei einem update des browser ändert halte ich nicht für sonderlich schlau - natürlich ist das eine gute möglichkeit, aber etwas kurzsichtig
Warum soll sich das Verhalten eines Bugs, der z.B. den IE5 betrifft, irgendeine Auswirkung auf z.B. den IE7 haben?
dafür eigenen sich conditional comments besser, ...
Wenn es um den IE geht, bitte.
... diese haben aber den nachteil dass sie nur vom internet exploder unterstützt werden
eben.
Tschö, Auge
Warum soll sich das Verhalten eines Bugs, der z.B. den IE5 betrifft, irgendeine Auswirkung auf z.B. den IE7 haben?
es gibt oft bugs die nicht nur ein system betreffen - oft haben völlig verschiedene bugs die selbe auswirkung oder der selbe bug in verschiedenen systeme hat unterschiedliche auswirkungen bzw interpretationsformen
ein css hack ist das bewusste ausnutzen von browserfehlern, ein fehler der in der regel durch eine fehlerkorrektur abgefangen wird - was ist, wenn die fehlerkorrektur eines anderen browsers auch versucht diesen expliziten fehler den du ausnutzt, zu korrigieren und du dadurch unerwartete fehler verursachst?
ungültige css regeln sollten ignoriert werden, bist du aber sicher dass das immer 100%ig so ist?
ich rede hier nicht von simplen css hacks wie den star html hack oder underscore hack - es gibt eine ganze reihe enorm komplexer hacks die teilweise sehr schwer zu durchschauen sind, fehler sind dann nicht mehr zu finden, da man dieses gewünschte verhalten durch fehler oder fehlerhaften code erzeugt und diesen nunmal nicht validieren kann
Hallo
es gibt oft bugs die nicht nur ein system betreffen - oft haben völlig verschiedene bugs die selbe auswirkung oder der selbe bug in verschiedenen systeme hat unterschiedliche auswirkungen bzw interpretationsformen
ja
ein css hack ist das bewusste ausnutzen von browserfehlern, ...
ja
ich rede hier nicht von simplen css hacks wie den star html hack oder underscore hack - es gibt eine ganze reihe enorm komplexer hacks die teilweise sehr schwer zu durchschauen sind, ...
Das stimmt, aber um die renitentesten Browser zu finden reichen nunmal *HTML-Hack etc., also die simplen Hacks, aus. Wobei klar ist, dass, ab einer gewissen Häufigkeit von Anpassungen, im Falle von IE die Conditional Comments die bessere Wahl sind.
Tschö, Auge
Das stimmt, aber um die renitentesten Browser zu finden reichen nunmal *HTML-Hack etc.
natürlich - aber im falle des OP will er ja nicht die den meschugge Explorer etwas separates vorsetzen sondern eine ganzen reihe verschiedener browser andere styles zukommen lassen - ansonsten bin ich ganz deiner meinung
Hallo suit!
$_SERVER['HTTP_USER_AGENT'];
Und was machst Du, wenn »husseldiguggel« oder »Bundestrojaner 1.3« dabei rauskommt? ;)
Viele Grüße aus Frankfurt/Main,
Patrick
Und was machst Du, wenn »husseldiguggel« oder »Bundestrojaner 1.3« dabei rauskommt? ;)
dann ist der benutzer selbst schuld und weiss schon, warum er das tut ;)
aus diesem grund sind kombinationen aus javascript und serverseitiger abfrage meistens gut geeignet um fehler durch manipulierte header zu minimieren
javascript erzeugt wie auch immer ein <img src="browsertest.php" alt="browsertest" />
wenn bild geladen wird, erhält browsertest.php die info "ja, user hat javascript" und kann entsprechend darauf reagieren (mit javascript den user agent testen)
wenn das "bild" browsertest.php nicht geladen wird, kann mans immer noch serverseitig versuchen
sollte beide ermittelten ergebnisse (js und php) übereinstimmen kann man mit ziemlicher sicherheit sagen, welcher browser richtig ist
Hallo
eine browserweiche wäre zb recht interessant in der generierst du dann ein stylesheet welches diese browserspezifischen eigeneheiten hinzufügt
Browserweiche, sprich den Browser ermitteln, den der User einsetzt und entsprechend das CSS-"Setting" wählen?! Das klingt für mich nach dem Einsatz von JS und davon möchte ich eigentlich absehen.
Nein, das meint, über die unterschiedlich ausgeprägte Fähigkeit, mit Selektoren umzugehen und mit Bugs in der Interpretation von CSS-Code gezielt bestimmte Browser anzusprechen, um ihnen ihnen genehme Angaben unterzujubeln bzw. ungenehme Angaben vorzuenthalten.
Siehe dazu z.B.: SELFHTML: CSS-Browserweichen zum Ausschließen älterer Browser
Tschö, Auge
@@suit:
das wird so (auch wenn es nicht valide ist) ohnehin nicht funktionieren, da dir jede nachfolgende zeile die vorhergehenden überschreibt
Ein Browser sollte die für ihn ungültigen Deklarationen ignorieren; und so bekommt jeder Browser, was er will.
Live long and prosper,
Gunnar
Bevor Du dir darüber Gedanken machst, solltest du vielleicht erst mal den horizontalen Scrollbalken abschaffen. Nicht alle Bildschirme sind gross.
Und das Design... Na ja das sage ich nichts, hast ja schliesslich nicht nach einer Meinung gefragt.
Paul
Hi,
Und zwar habe ich meine Textlichen Inhalte, die ich aus XML-Dateien auslese, in pre-Container gepackt,
Bevor Du weiter an den Symptomen rumzuspielen versuchst:
Es wäre doch wesentlich sinnvoller, das Übel an der Wurzel zu packen.
Beim Lesen der XML-Dateien sollte es doch möglich sein, den Inhalt in sinnvolleres HTML zu packen als in pre.
Du hast ja php zur Verfügung, also ersetze damit das Markup entsprechend (Minimallösung wäre p mit br, besser einzelne p, je nach XML-Struktur auch mit hx ...)
cu,
Andreas