CSS-Hack unklare Beschreibung
Tatra
- css
Hallo,
in Selfhtml steht
Attribut-Selektor:
p[id] {
eigenschaft:wert;
}
Selektiert ein Element (hier <p>), welches ein id-Attribut mit beliebigem Attributwert aufweist - und damit alle hier angeführten Beispiele. Gleichbedeutend zur Angabe der #ID ist dies im Grunde überflüssig, erfüllt aber den Zweck, alle Internet Explorer für Windows bis Version 6 und Netscape 4 auszuschließen.
Heißt dies, dass z.B.
div[irgendeinName] {
eigenschaft:wert;
}
a l l e n div-Elementen die genannte Eigenschaft/Wert zuordnet außer in den o.g. Browserversionen.
Und heißt dies ebenfalls, dass
#irgendeinName .... nicht definiert werden muss?
Hi,
Attribut-Selektor:
p[id] {
eigenschaft:wert;
}
Selektiert ein Element (hier <p>), welches ein id-Attribut mit beliebigem Attributwert aufweist - und damit alle hier angeführten Beispiele. Gleichbedeutend zur Angabe der #ID ist dies im Grunde überflüssig, erfüllt aber den Zweck, alle Internet Explorer für Windows bis Version 6 und Netscape 4 auszuschließen.
>
> Heißt dies, dass z.B.
>
> div[irgendeinName] {
> eigenschaft:wert;
> }
> a l l e n div-Elementen die genannte Eigenschaft/Wert zuordnet außer in den o.g. Browserversionen.
Allen div-Elementen, die ein gesetztes Attribut mit dem Bezeichner irgendeinName haben.
> Und heißt dies ebenfalls, dass
> #irgendeinName .... nicht definiert werden muss?
Nicht „muss“ definiert werden.
Ob du eine Regel mit dem Selektor #irgendeinName in dein CSS aufnehmen willst, um ein Element mit der ID "irgendeinName" direkt zu formatieren, musst du selber wissen.
Da du "irgendeinName" hier an zwei Stellen in ganz unterschiedlicher Bedeutung verwendest: Ist dir der Unterschied klar?
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hallo!
Da du "irgendeinName" hier an zwei Stellen in ganz unterschiedlicher Bedeutung verwendest: Ist dir der Unterschied klar?
Leider nicht!
Hi,
Da du "irgendeinName" hier an zwei Stellen in ganz unterschiedlicher Bedeutung verwendest: Ist dir der Unterschied klar?
Leider nicht!
ist er es nach meiner Antwort? Wenn nicht: Wie hast Du es bisher verstanden?
Cheatah
Hallo!
ist er es nach meiner Antwort? Wenn nicht: Wie hast Du es bisher verstanden?
Nachdem ich Eure beiden Antworten verinnerlicht hatte, wurde es klar.
Aber jetzt noch gleich etwas anderes.
Im IE 7 und IE 9 habe ich eine ungewollte Textverschiebung nach unten.
Im IE8 ist es OK.
Mit der Ursache habe ich mich noch nicht beschäftigt und will Euch auch noch nicht damit belasten.
Bei der Suche nach der Ursache bin ich allerdings gestoßen auf die Aussage "der IE8 hat sich gegenüber dem IE7 dem CSS-Standard angenähert".
Hat sich demnach der IE9 wieder davon entfernt?
Oder ist schon ein Fehler bekannt, der im IE7 und IE9 auftritt und im IE8 nicht?
Gruß
Tatra
@@Tatra:
nuqneH
Oder ist schon ein Fehler bekannt, der im IE7 und IE9 auftritt und im IE8 nicht?
Der Fehler, der bei vielen Fragenden auftritt (nämlich zu wenig Informationen zu liefern), ist bekannt.
Und da er öfter auftritt, wurden die Tips für Fragende in die Charta geschrieben.
Qapla'
nuqneH
Oder ist schon ein Fehler bekannt, der im IE7 und IE9 auftritt und im IE8 nicht?
Der Fehler, der bei vielen Fragenden auftritt (nämlich zu wenig Informationen zu liefern), ist bekannt.
Und da er öfter auftritt, wurden die Tips für Fragende in die Charta geschrieben.
Deshalb hatte ich ja geschrieben, dass ich noch keine konkrete Antwort erwarte auf mein Problem und
Oder ist schon ein Fehler bekannt, der im IE7 und IE9 auftritt und im IE8 nicht?
(e i n Fehler und nicht mein Fehler).
Es kann doch sein, dass bekannt ist, dass ein bestimmter Fehler, der mit IE8 behoben wurde in IE9 wieder eingebaut wurde.
Dann bräuchten weder ich noch Ihr weiter nach der Fehlerursache bei mir suchen.
Tatra
nuqneH
Oder ist schon ein Fehler bekannt, der im IE7 und IE9 auftritt und im IE8 nicht?
Der Fehler, der bei vielen Fragenden auftritt (nämlich zu wenig Informationen zu liefern), ist bekannt.
Und da er öfter auftritt, wurden die Tips für Fragende in die Charta geschrieben.
Deshalb hatte ich ja geschrieben, dass ich noch keine konkrete Antwort erwarte auf mein Problem und
"Mann geht in die Werkstatt und sagt: wenn ich mit dem Auto fahre kommen da so komische Geräusche, wenn meine Frau damit fährt sagt sie, dass sie nichts hört - warum?"
Oder ist schon ein Fehler bekannt, der im IE7 und IE9 auftritt und im IE8 nicht?
(e i n Fehler und nicht mein Fehler).
Wer sagt dass es ein und nicht dein Fehler ist? Bisher hast du 0 (in worten Null) Informationen gebracht die irgendwelche Rückschlüsse auf einen Fehler zulassen.
Es kann doch sein, dass bekannt ist, dass ein bestimmter Fehler, der mit IE8 behoben wurde in IE9 wieder eingebaut wurde.
Das ist unwahrscheinlich.
Dann bräuchten weder ich noch Ihr weiter nach der Fehlerursache bei mir suchen.
Frei nacht dem Motto: bevor ich vor meiner Tür kehre, versuche ich erst mal jemandem anderem die Hauswand zu beschmieren.
....
Dann bräuchten weder ich noch Ihr weiter nach der Fehlerursache bei mir suchen.
Frei nacht dem Motto: bevor ich vor meiner Tür kehre, versuche ich erst mal jemandem anderem die Hauswand zu beschmieren.
Unsachlich! Und Tschüs!
Narri, narro!
Im IE 7 und IE 9 habe ich eine ungewollte Textverschiebung nach unten.
Im IE8 ist es OK.
... ist schon ein Fehler bekannt, der im IE7 und IE9 auftritt und im IE8 nicht?
Ich habe einen ähnlichen Effekt, den ich allerdings bisher ignoriert hatte.
Wenn ich aber obiges lese, könnte es die selbe Ursache haben.
Ich habe mehrere fieldset-Blöcke untereinander.
In FF und Opera sind alle Rahmen darum gleich breit.
Im IE 8 wie in FF und Opera (OK), im IE7 und IE9 sind die Rahmen unterschiedlich breit.
Vielleicht hilft Dir/Euch das auf die Sprünge.
Siggi
Hi,
Im IE 8 wie in FF und Opera (OK), im IE7 und IE9 sind die Rahmen unterschiedlich breit.
welche CSS-Angaben hast Du bezüglich dieses Rahmens gemacht?
Cheatah
Hi,
Im IE 8 wie in FF und Opera (OK), im IE7 und IE9 sind die Rahmen unterschiedlich breit.
welche CSS-Angaben hast Du bezüglich dieses Rahmens gemacht?
Keinerlei border-Angaben - habe zum Test sogar alle herausgenommen, die ich z.B. einem img verpasst hatte.
Hi,
für mich wird das immer verworrener!
Hier das HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<style type="text/css">
<!--
#right {
margin-left: 100px;
}
*:first-child+html #right {
margin-left: 0;
position: absolute; left: 100px;
}
-->
</style>
</head>
<body class="test">
<div id="right">
<fieldset>
<legend>
1111111111111
</legend>
1111111111111111 111111111111<br />1111111111
</fieldset>
<br>
<fieldset>
<legend>
2222222222222
</legend>
2222222222222222 2222222222 2222222222 2222222222<br />
1111111111111111 1111111111111111
</fieldset>
</div>
</body>
</html>
Offensichtlich liegt es an dem Hack
*:first-child+html #right { .....
Aber diesen Hack brauche ich wegen einem anderen Fehler im IE.
Und dann die Frage 1:
Warum wirkt der Hack auch im IE9?
Dann habe ich die DOCTYPE-Zeile weggelassen und dann hat es korrekt funktioniert -
warum?
Was muss ich im obigen Beispiel angeben?
Ich habe jetztin Selfhtml die Erläuterung der DOCTYPE-Definition nachgelesen.
Da werde ich allerdings nicht schlau, warum der Fehler damit zusammenhängt.
Heißt strict etwa auch, dass keine "Hacks" erlaubt sind?
Kennt Ihr eine umfangreichere (deutsche) Beschreibung, wann man welche Doctype-Angaben machen muss?
Hallo,
Dann habe ich die DOCTYPE-Zeile weggelassen und dann hat es korrekt funktioniert -
warum?
weil du den IE dann in den sogenannten Quirks Mode versetzt, in dem er sich nicht unbedingt an die Spezifikationen hält (soweit er das überhaupt tut), sondern im Wesentlichen versucht zu erraten, was der Autor gemeint haben könnte. Das *kann* richtig sein; sie Gefahr einer Fehlinterpretation ist aber groß. Deshalb ist von diesem Quirks Mode grundsätzlich abzuraten.
Was muss ich im obigen Beispiel angeben?
Es ist ganz klar nicht XHTML, die Option fällt also schon weg - auch wenn du die br-Elemente gelegentlich im XML-Stil schließt, was in HTML falsch ist. Falsch ist übrigens auch das Auskommentieren von style-Angaben mit HTML-Kommentaren. Strenggenommen lautet dein erster Selektor im Stylesheet nämlich "<!-- #right".
Das Dokument erfüllt die Regeln von HTML 4.01 Strict, kann also so gekennzeichnet werden.
Was in Strict valide ist, ist natürlich in Transitional erst recht valide.
Kennt Ihr eine umfangreichere (deutsche) Beschreibung, wann man welche Doctype-Angaben machen muss?
Nein, warum auch? Im DOCTYPE sollst du den einfach (X)HTML-Dialekt angeben, den du auch tatsächlich verwendest.
So long,
Martin
Hallo,
Kennt Ihr eine umfangreichere (deutsche) Beschreibung, wann man welche Doctype-Angaben machen muss?
Nein, warum auch? Im DOCTYPE sollst du den einfach (X)HTML-Dialekt angeben, den du auch tatsächlich verwendest.
Welchen Dialekt ich verwende, weiß der Himmel!
Vermutlich ein Gemisch.
Wenn ich irgendwo u.a. in Selfhtml etwas finde, sehe ich im allgemeinen, ab welcher Version der einzelne Browser dies interpretiert,
nicht aber welchem HTML-Dialekt dies entspricht. Wo finde ich denn diese Information ohne in der Original-W3C-Dokumentation zu suchen?
@@Siggi:
nuqneH
Welchen Dialekt ich verwende, weiß der Himmel!
Vermutlich ein Gemisch.
[…] nicht aber welchem HTML-Dialekt dies entspricht. Wo finde ich denn diese Information ohne in der Original-W3C-Dokumentation zu suchen?
Du zäumst das Pferd von hinten auf.
Du solltest nicht irgendein „Gemisch“ schreiben und dann einen DOCTYPE dafür suchen, sondern dich erst für eine Variante (<http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=HTML 4.01 vs. XHTML 1.x> vs. HTML5; <http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=Strict vs. Transitional>) entscheiden und dann deinen Quellcode nach den jeweils geltenden Regeln verfassen.
Ob du dich an die geltenden Regeln gehalten hast, sagt dir der Validator. Oder der hier.
Qapla'
Du solltest nicht irgendein „Gemisch“ schreiben und dann einen DOCTYPE dafür suchen, sondern dich erst für eine Variante (<http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=HTML 4.01 vs. XHTML 1.x> vs. HTML5; <http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=Strict vs. Transitional>) entscheiden und dann deinen Quellcode nach den jeweils geltenden Regeln verfassen.
Aber wo finde ich in übersichtlicher Form und in Deutsch die zu einem bestimmten Dialekt gehörigen Regeln?
Hi,
Du solltest nicht irgendein „Gemisch“ schreiben und dann einen DOCTYPE dafür suchen, sondern dich erst für eine Variante (<http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=HTML 4.01 vs. XHTML 1.x> vs. HTML5; <http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=Strict vs. Transitional>) entscheiden und dann deinen Quellcode nach den jeweils geltenden Regeln verfassen.
Aber wo finde ich in übersichtlicher Form und in Deutsch die zu einem bestimmten Dialekt gehörigen Regeln?
http://de.selfhtml.org/html/allgemein/
http://de.selfhtml.org/html/xhtml/unterschiede.htm
Weitere Hinweise findest du ggf. bei der Beschreibung einzelner Elemente und Attribute; in zusammengefasster Form auch in den Übersichten unter http://de.selfhtml.org/html/referenz/
MfG ChrisB
erst einmal Danke für Euere Mühe - aber:
Aber wo finde ich in übersichtlicher Form und in Deutsch die zu einem bestimmten Dialekt gehörigen Regeln?
Hier erkenne ich nicht, ob es für HTML 4, 4.01 ,... oder HTML 5 gilt.
Hier sind die Unterschiede von HTML und Xhtml dargestellt aber nicht zwischen den einzelnen "Dialekten" von HTML.
Weitere Hinweise findest du ggf. bei der Beschreibung einzelner Elemente und Attribute; in zusammengefasster Form auch in den Übersichten unter http://de.selfhtml.org/html/referenz/
Hier steht z.B. bei "fieldset":
'Erlaubt in den Varianten Strict, Transitional, Frameset',
nicht aber ob dies HTML3 oder 4 oder 4.01 oder 5 ist.
Ich glaube, dass die o.g. Dokumente sehr hilfreich sind für Geübte, nicht aber für Fast-Anfänger.
Für letzteren wäre ein Dokument hilfreich der Art
HTML Version 4.01 - Strict (und danebengestellt Transitional).
Hi,
Weitere Hinweise findest du ggf. bei der Beschreibung einzelner Elemente und Attribute; in zusammengefasster Form auch in den Übersichten unter http://de.selfhtml.org/html/referenz/
Hier steht z.B. bei "fieldset":
'Erlaubt in den Varianten Strict, Transitional, Frameset',
nicht aber ob dies HTML3 oder 4 oder 4.01 oder 5 ist.
Dann klickst du an der Stelle mal bei „siehe Beschreibung“, und schaust dir die dort angebrachten Icons an. (Ja, über HTML5 steht an der Stelle in SELFHTML meist noch nichts. Über die Unterschiede, die hinsichtlich HTML5 gelten, muss man sich dann mal anderweitig informieren, wenn man es schon für relevant hält.)
Ich glaube, dass die o.g. Dokumente sehr hilfreich sind für Geübte, nicht aber für Fast-Anfänger.
Für letzteren wäre ein Dokument hilfreich der Art
HTML Version 4.01 - Strict (und danebengestellt Transitional).
Das mag sein - aber auch in der Hinsicht musst du dich vielleicht mal ein bisschen selber informieren.
differences html strict transitional@google führt bspw. zu http://24ways.org/2005/transitional-vs-strict-markup oder http://www.evotech.net/blog/2007/06/xhtml-html-strict-transitional-deprecated/
Und ansonsten würde ich vorschlagen, beim Erstellen eines neues Dokumentes, *nachdem* du dich für einen Standard und dessen Modus entschieden hast, alle Elemente und Attribute noch mal mit Bedacht und Überlegung frisch in ein leeres Dokument reinzuschreiben; nicht Copy&Paste aus irgendwelchen „hab ich schon immer so gemacht“-Vorlagen, sondern mal in SELFHTML die einführenden Kapitel zu HTML als „Anleitung“ zum Aufbau eines neuen Grundgerüstes zu nehmen, und dieses nach und nach um verschiedene Arten von Daten(!) und denen entsprechendem, möglichst sinnvollem(!) Markup zu ergänzen - und dabei jeden Schritt mit dem Validator auf Konformität zum von dir gewählten und per Doctype-Angabe festgelegten Standard zu überpüfen.
MfG ChrisB
@@Der Martin:
nuqneH
Falsch ist übrigens auch das Auskommentieren von style-Angaben mit HTML-Kommentaren.
Nein, nicht falsch. Allerdings völlig überflüssig.
Strenggenommen lautet dein erster Selektor im Stylesheet nämlich "<!-- #right".
Nein, das tut er nicht. Suche in Grammatik und Tokenizer [CSS21 §G] nach "CDO" und "CDC"!
Qapla'
Hallo,
Falsch ist übrigens auch das Auskommentieren von style-Angaben mit HTML-Kommentaren.
Nein, nicht falsch. Allerdings völlig überflüssig.
überflüssig ist klar; ich hielt es bisher für falsch, denn ...
Strenggenommen lautet dein erster Selektor im Stylesheet nämlich "<!-- #right".
Nein, das tut er nicht. Suche in Grammatik und Tokenizer [CSS21 §G] nach "CDO" und "CDC"!
Ah, danke für den Hinweis. Dann ist es also nicht der Gutmütigkeit der Browser zu verdanken, wenn's trotzdem funktioniert, sondern "des g'hört so".
Ich plädiere trotzdem fürs Weglassen des HTML-Kommentars.
Ciao,
Martin
@@Der Martin:
nuqneH
Ah, danke für den Hinweis. Dann ist es also nicht der Gutmütigkeit der Browser zu verdanken, wenn's trotzdem funktioniert, sondern "des g'hört so".
Ja. Anders sieht der Fall IIRC bei JavaScript aus, da ist es Gutmütigkeit. Ich erinnere mich das von molily so gehört zu haben, kann’s aber grad im Archiv nicht finden. Dafür habe ich das hier gefunden. VBG.
Ich plädiere trotzdem fürs Weglassen des HTML-Kommentars.
+1
Qapla'
Hallo,
Dafür habe ich das hier gefunden. VBG.
och je, das ist ja schon eine Ewigkeit her. Das hat mein Gedächtnis natürlich längst als "für die Praxis nicht relevant" aussortiert und gelöscht. ;-)
Ciao,
Martin
Es ist ganz klar nicht XHTML, die Option fällt also schon weg - auch wenn du die br-Elemente gelegentlich im XML-Stil schließt, was in HTML falsch ist.
Es ist aus SGML-Sicht nicht notwendigerweise falsch. Viel schlimmer, es hat eine andere Bedeutung, welche nicht dieselbe wie bei XHTML ist und in den meisten Fällen auch nicht das, was der Autor wünscht. Deshalb sollte man es bei HTML 4 möglichst vermeiden.
Die Browser schlucken hingegen beides und interpretieren <br /> gemäß XHTML-bzw. HTML5-Regeln. Lediglich der Validator hat einen SGML-Parser, sodass ihm solche Abweichungen aufstoßen.
Mathias
Hallo,
Es ist ganz klar nicht XHTML, die Option fällt also schon weg - auch wenn du die br-Elemente gelegentlich im XML-Stil schließt, was in HTML falsch ist.
Es ist aus SGML-Sicht nicht notwendigerweise falsch. Viel schlimmer, es hat eine andere Bedeutung, ...
ja, genau - und das meinte ich hier mit "falsch".
Dass die üblichen Tagsoup-Parser das trotzdem im Sinne des Autors interpretieren, ist eine andere Geschichte.
Ciao,
Martin
Hi,
Heißt dies, dass z.B.
div[irgendeinName] {
a l l e n div-Elementen die genannte Eigenschaft/Wert zuordnet außer in den o.g. Browserversionen.
nein. Nur denjenigen <div>-Elementen, die über ein irgendeinName-Attribut verfügen. Der Wert dieses Attributs ist egal, es muss lediglich vorhanden sein.
Und heißt dies ebenfalls, dass
#irgendeinName .... nicht definiert werden muss?
#irgendeinName lässt auf ein Element mit id="irgendeinName" schließen. Dies hat nichts mit dem Hack zu tun.
Cheatah