tobeit: Mit CSS pre für alle Browser umbrechen und trotzdem W3C validier

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

  1. 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

    1. 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.

      1. 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

        1. $_SERVER['HTTP_USER_AGENT'];

          nachtrag - das ist natürlich die php variante, andere scriptsprachen können das aber auch ;)

          1. 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

            --
            Die deutschen Interessen werden am Liechtenstein verteidigt.
            Veranstaltungsdatenbank Vdb 0.2
            1. ... undzwar mit der gleichen zweifelhaften Relevanz, da diese Angabe manipulierbar ist.

              siehe hier:
              https://forum.selfhtml.org/?t=169467&m=1106869

              1. 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

                --
                Die deutschen Interessen werden am Liechtenstein verteidigt.
                Veranstaltungsdatenbank Vdb 0.2
                1. 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

                  1. 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

                    --
                    Die deutschen Interessen werden am Liechtenstein verteidigt.
                    Veranstaltungsdatenbank Vdb 0.2
                    1. 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

                      1. 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

                        --
                        Die deutschen Interessen werden am Liechtenstein verteidigt.
                        Veranstaltungsdatenbank Vdb 0.2
                        1. 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

        2. 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

          --

          _ - jenseits vom delirium - _
          [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
          Nichts ist unmöglich? Doch!
          Heute schon gegökt?
          1. 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

      2. 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

        --
        Die deutschen Interessen werden am Liechtenstein verteidigt.
        Veranstaltungsdatenbank Vdb 0.2
    2. @@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

      --
      Flughafen in Tempelhof
      findet jeder Hempel doof.
  2. 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

  3. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.