Supportnet / Forum / Webseiten/HTML
xhtml 1.0 strict: kein border im img-tag erlaubt?
Frage
Hi Leute
wenn ich den w3c-validator-Text richtig übersetze ist in Verbindung mit dem doctype zu "xhtml1.0 strict" im "img-tag" keine Angabe zu "border" erlaubt:
[quote]
Line 41, column 67: there is no attribute "border"
<img src="patronin-nikos.jpg" width="200" height="298" border="1" alt="Patronin auf "Nikos"" />
You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead). [/quote]
Ist das so richtig ?
Wie gibt man dann korrekterweise einem Bild einen Rahmen? Muss ich das via css und class-Zuweisung erledigen?
Gruss Heiko
Antwort 1 von derpfleger
OK, hab selbst rausbekommen, wie es geht.
Wen es interessiert:
Das doctype:
das image-Tag wie es nicht funktioniert hat:
was auch nicht funktioniert hat:
Die border-Angaben mittels definierter class-Zuweisung aus der css-Datei zu machen.
wie es funktioniert hat:
Also einfach die ohnehin vorhandene style-Angaben im img-Tag durch Angaben zu border noch zu ergänzen, ganz einfach.
Vielen Dank fürs zuhören :-)
Gruss Heiko
Wen es interessiert:
Das doctype:
Zitat:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/Strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/Strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
das image-Tag wie es nicht funktioniert hat:
Zitat:
<img src="bild.jpg" width="200" height="298" alt="Alternativtext" border="1" style="float:right; margin:20px;" />
<img src="bild.jpg" width="200" height="298" alt="Alternativtext" border="1" style="float:right; margin:20px;" />
was auch nicht funktioniert hat:
Die border-Angaben mittels definierter class-Zuweisung aus der css-Datei zu machen.
wie es funktioniert hat:
Zitat:
<img src="bild.jpg" width="200" height="298" alt="Alternativtext" style="float:right; margin:20px; border:1px solid #000000;" />
<img src="bild.jpg" width="200" height="298" alt="Alternativtext" style="float:right; margin:20px; border:1px solid #000000;" />
Also einfach die ohnehin vorhandene style-Angaben im img-Tag durch Angaben zu border noch zu ergänzen, ganz einfach.
Vielen Dank fürs zuhören :-)
Gruss Heiko
Antwort 2 von rfb
http://de.selfhtml.org/html/referenz/attribute.htm - da findest du für alle Tags erklärt, welche Attribute in den Varianten Strict, Transitional und Frameset erlaubt sind.
Generell: (fast) keine Layoutattribute in Strict, dafür gibts CSS!
Generell: (fast) keine Layoutattribute in Strict, dafür gibts CSS!
Antwort 3 von derpfleger
@rfb:
OK, aber warum funktioniert das nicht als mit class="" eingebundenes stylesheet, sondern nur als innerhalb des img-tag untergebrachtes stylesheet? Oder habe ich da was falsch gemacht?
Gruss Heiko
Zitat:
Generell: (fast) keine Layoutattribute in Strict, dafür gibts CSS!
Generell: (fast) keine Layoutattribute in Strict, dafür gibts CSS!
OK, aber warum funktioniert das nicht als mit class="" eingebundenes stylesheet, sondern nur als innerhalb des img-tag untergebrachtes stylesheet? Oder habe ich da was falsch gemacht?
Gruss Heiko
Antwort 4 von TheHappyJoker
klar funktioniert das mit class. musst nur drauf achten, wie du es einbindest.
wenn du etwas mit class definierst, muss in der globalen stylesheet der classname mit einen punkt . davor angegeben werden. aber du kannst zentral in der stylesheet den img-tag definieren (den natürlich ohne punkt, weil es img ja schon gibt).
ein beispiel:
<gruß thj>
wenn du etwas mit class definierst, muss in der globalen stylesheet der classname mit einen punkt . davor angegeben werden. aber du kannst zentral in der stylesheet den img-tag definieren (den natürlich ohne punkt, weil es img ja schon gibt).
ein beispiel:
<html>
<head>
<style type="text/css">
<!--
img { border: 0px }
.border { border: 10px }
-->
</style>
</head>
<body>
<img src="bild.jpg">
<img src=bild.jpg" class="border">
</body>
</html><gruß thj>
Antwort 5 von derpfleger
@thj
Ich denke, es hat daran gelegen, dass ich im img-tag dann versehentlich sowohl die class-Angabe als auch ein weiteres style gleichzeitig stehen hatte. Das beisst sich dann wohl.
Danke und Gruss Heiko
Ich denke, es hat daran gelegen, dass ich im img-tag dann versehentlich sowohl die class-Angabe als auch ein weiteres style gleichzeitig stehen hatte. Das beisst sich dann wohl.
Danke und Gruss Heiko
Antwort 6 von rfb
Zitat:
class-Angabe als auch ein weiteres style gleichzeitig stehen hatte. Das beisst sich dann wohl.
eigentlich nicht, du kannst ne ganze Reihe von CSS-Angaben einbinden (z.B. mehrere Klassen + direkte style-Angaben), wenn sie sich widersprechen, gibts eine bestimmte Rangfolge, was letztendlich gilt. Sehr gut erklärt ist das hier http://www.css4you.de/wscss/css06.htmlclass-Angabe als auch ein weiteres style gleichzeitig stehen hatte. Das beisst sich dann wohl.
Antwort 7 von TheHappyJoker
rfb hat recht. und wie du in meinen beispiel sehen kannst sind dort border sowohl über img als auch über die border-class bestimmt. das müsste sich ja auch "beißen" (0 oder 10 pixel).
funktioniert aber trotzdem ohne probleme.
naja, der netscape 4 kommt damit nicht so zurecht, aber erstens surft keiner mehr damit und zweitens beherscht der ja css1 nicht komplett.
<gruß thj>
funktioniert aber trotzdem ohne probleme.
naja, der netscape 4 kommt damit nicht so zurecht, aber erstens surft keiner mehr damit und zweitens beherscht der ja css1 nicht komplett.
<gruß thj>
Antwort 8 von rfb
der Netscape4 kreigt bei mir aus vielen Gründen erst gar kein Stylesheet:
versteht er nicht, kann er also auch nicht falsch interpretieren.
Theoretisch könnte man zudem (mindestens eine Zeile davor) ein weiteres Stylesheet mittels
<style type="text/css" media="all">
<!--
@import "style.css";
-->
</style>versteht er nicht, kann er also auch nicht falsch interpretieren.
Theoretisch könnte man zudem (mindestens eine Zeile davor) ein weiteres Stylesheet mittels
<link rel="stylesheet" type="text/css" href="n4style.css"> einbinden und dann für die anderen Browser im "richtigen" alles überschreiben.
