Opera und CSS - zwei Welten prallen aufeinander ...
MudGuard
- css
0 Gunnar Bittersmann2 molily0 Detlef G.0 Thomas J.S.0 MudGuard
0 Struppi
Hi,
folgendes CSS:
p { border:1px solid black; padding:0.5em; }
.zusammen { white-space:pre; }
und folgendes HTML:
<p>
<span class="zusammen">bla bla bla bla bla </span>
<span class="zusammen">blubb blubb blubb blubb blubb </span>
<span class="zusammen">laber laber laber laber laber </span>
<span class="zusammen">bla bla bla bla bla </span>
<span class="zusammen">blubb blubb blubb blubb blubb </span>
<span class="zusammen">laber laber laber laber laber </span>
<span class="zusammen">bla bla bla bla bla </span>
<span class="zusammen">blubb blubb blubb blubb blubb </span>
<span class="zusammen">laber laber laber laber laber </span>
</p>
erzeugt im Gecko die erwartete Ausgabe:
der Zeilenumbruch im Absatz erfolgt gruppenweise.
Im IE (der ja Probleme mit white-space:pre hat) wird wortweise umgebrochen (das ist zwar nicht so schön, weil die Gruppen zerlegt werden, aber noch einigermaßen akzeptabel).
Aber was Opera produziert, spottet jeder Beschreibung.
Obwohl für p kein white-space:pre gesetzt ist, weigert sich Opera (7.53), überhaupt umzubrechen - der Absatz ist einzeilig, der Text läuft rechts aus dem Rahmen raus.
Dabei ist doch whitespace vorhanden zwischen den einzelnen spans, es könnte also umgebrochen werden.
Auch ein explizit angegebenes white-space:normal für p ändert im Opera nichts.
Irgendwie scheint der Mistbrowser das white-space:pre ans _Eltern_element zu vererben ...
Ist das in anderen (neueren?) Opera-Versionen auch so?
Testseite: http://temp.andreas-waechter.de/testseite.html
cu,
Andreas
Irgendwie scheint der Mistbrowser das white-space:pre ans _Eltern_element zu vererben ...
Andreas,
Hab keinen Opera zum Testen da, aber hält ihn vielleicht
span.zusammen { white-space:pre; }
^^^^
davon ab?
Gruß,
Gunnar
Hi,
Irgendwie scheint der Mistbrowser das white-space:pre ans _Eltern_element zu vererben ...
Hab keinen Opera zum Testen da, aber hält ihn vielleicht
span.zusammen { white-space:pre; }
^^^^
davon ab?
Nö - für p ist ja kein white-space:pre gesetzt. Also muß bei Überschreitung der Breite zwischen den spans umgebrochen werden. So wie es die Geckos ja auch machen.
cu,
Andreas
Hab keinen Opera zum Testen da, aber hält ihn vielleicht
span.zusammen { white-space:pre; }
^^^^
davon ab?Nö - für p ist ja kein white-space:pre gesetzt.
Ja, schon klar. Aber vielleicht begeht Opera den Fehler ja nicht, wenn nicht nur die Klasse, sondern explizit das Element genannt wird.
Die Wege der Bugs sind unergründlich... War nur ’ne Idee.
Gunnar
Hallo,
Ja, schon klar. Aber vielleicht begeht Opera den Fehler ja nicht, wenn nicht nur die Klasse, sondern explizit das Element genannt wird.
Doch das tut er.
Grüße
Thomas
Hallo,
<span class="zusammen">bla bla bla bla bla </span>
Wenn man das Leerzeichen vor den schließenden span-Tags entfernt, funktioniert es übrigens.
Melde den Bug bitte trotzdem, bei Opera 8 existiert er noch.
Mathias
Hallo Mathias
Melde den Bug bitte trotzdem, bei Opera 8 existiert er noch.
Bug?
Eine beliebige Anzahl Leerzeichen, Zeilenumbrüche oder Tabs im Text wie auch
innerhalb von und zwischen Inlineelementen werden jeweils zu einem
Leerzeichen zusammengefasst.
Da ist der Opera auch in diesem Beispiel konsequent.
Das Leerzeichen innerhalb der Spans darf er nicht weglassen (wegen pre),
also ignoriert er die Leerzeichen bzw. Zeilenwechsel dazwischen.
Mir ist bisher nicht aufgefallen, wo in den Specs, das Verhalten für diesen
Fall eindeutig anders gefordert wäre.
Auf Wiederlesen
Detlef
Hallo,
Bug?
Ja, doch.
Eine beliebige Anzahl Leerzeichen, Zeilenumbrüche oder Tabs im Text wie auch
innerhalb von und zwischen Inlineelementen werden jeweils zu einem
Leerzeichen zusammengefasst.
Korrekt.
Da ist der Opera auch in diesem Beispiel konsequent.
Nein.
Das Leerzeichen innerhalb der Spans darf er nicht weglassen (wegen pre),
Korrekt.
also ignoriert er die Leerzeichen bzw. Zeilenwechsel dazwischen.
Falsches Verhalten.
Mir ist bisher nicht aufgefallen, wo in den Specs, das Verhalten für diesen
Fall eindeutig anders gefordert wäre.
Die spez. sagt:
SGML (see [ISO8879], section 7.6.1) specifies that a line break immediately following a start tag must be ignored, as must a line break immediately before an end tag. This applies to all HTML elements without exception.
D.h. Z.B.:
... </span> das Leerzeichen zwischen dem letzten Punkt und </span> muss ignoriert werden.
So weit so gut.
A line break is defined to be a carriage return (
), a line feed (
), or a carriage return/line feed pair. All line breaks constitute white space.
---
Line breaks are also white space characters.
---
For all HTML elements except PRE, sequences of white space separate "words" (we use the term "word" here to mean "sequences of non-white space characters"). When formatting text, user agents should identify these words and lay them out according to the conventions of the particular written language (script) and target medium.
...
In particular, user agents should collapse input white space sequences when producing output inter-word space. This can and should be done even in the absence of language information
------
Und das macht Opera falsch. Denn er ignoriert hier nicht nur Zeilenumbrüche sondern auch "normale" leerzeichen.
Versuche mal folgendes (zwischen dem 3. und 4. <span> gibt eine Menge Leerzeichen) und beobachte das Verhalten beim bloßen text um bei den <span>s.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>testseite</title>
<style type="text/css">
p { border:1px solid black; padding:0.5em; }
.zusammen { white-space:pre; }
</style>
</head>
<body>
<p>
<span class="zusammen">bla bla bla bla bla </span> ¡ <span class="zusammen">blubb blubb blubb blubb blubb </span>
<span class="zusammen">bla bla bla bla bla </span> <span class="zusammen">blubb blubb blubb blubb blubb </span>
<span class="zusammen">laber laber laber laber laber </span>
<span class="zusammen">bla bla bla bla bla </span>
<span class="zusammen">blubb blubb blubb blubb blubb </span>
<span class="zusammen">laber laber laber laber laber </span>
<span class="zusammen">bla bla bla bla bla </span>
<span class="zusammen">blubb blubb blubb blubb blubb </span>
<span class="zusammen">laber laber laber laber laber </span>
In
particular,
user
agents
should
collapse
input
white
space
sequences
when
producing
output
inter-word
space.
</p>
</body>
</html>
Grüße
Thomas
Hi,
Die spez. sagt:
SGML (see [ISO8879], section 7.6.1) specifies that a line break immediately following a start tag must be ignored, as must a line break immediately before an end tag. This applies to all HTML elements without exception.
D.h. Z.B.:
... </span> das Leerzeichen zwischen dem letzten Punkt und </span> muss ignoriert werden.
Nein, muß es nicht. Denn es handelt sich um ein Leerzeichen, nicht um einen Linebreak.
(A line break is defined to be a carriage return (
), a line feed (
), or a carriage return/line feed pair.)
For all HTML elements except PRE, sequences of white space separate "words" (we use the term "word" here to mean "sequences of non-white space characters").
blubb</b> </span> bla</p>
Hier handelt es sich nicht um eine Sequenz von Whitespace, sondern um 2 - denn dazwischen steht non-white-space (das ende-tag des span).
Und das macht Opera falsch. Denn er ignoriert hier nicht nur Zeilenumbrüche sondern auch "normale" leerzeichen.
Sehe ich auch so.
cu,
Andreas
Hallo,
D.h. Z.B.:
... </span> das Leerzeichen zwischen dem letzten Punkt und </span> muss ignoriert werden.Nein, muß es nicht.
Hmm, ja, muss nicht ist (zwar) richtig, aber http://www.w3.org/TR/html401/struct/text.html#h-9.1. (letzter Absatz mit dem Bsp. (bezieht sich auf die Autoren))
Grüße
Thomas
Aber was Opera produziert, spottet jeder Beschreibung.
Obwohl für p kein white-space:pre gesetzt ist, weigert sich Opera (7.53), überhaupt umzubrechen - der Absatz ist einzeilig, der Text läuft rechts aus dem Rahmen raus.
Ich hab hier 7.11 und wenn ich das richitg sehe macht er genau das was du willst.
Struppi.
Hallo.
Ich hab hier 7.11 und wenn ich das richitg sehe macht er genau das was du willst.
Ich verwende die 7.54 und die zeigt genau den Bug, der von MudGuard hier beschrieben wurde
Gruß, Ashura
Hi,
Aber was Opera produziert, spottet jeder Beschreibung.
Obwohl für p kein white-space:pre gesetzt ist, weigert sich Opera (7.53), überhaupt umzubrechen - der Absatz ist einzeilig, der Text läuft rechts aus dem Rahmen raus.
Ich hab hier 7.11 und wenn ich das richitg sehe macht er genau das was du willst.
D.h. daß der Opera immer schlechter wird ...
cu,
Andreas