Laut xhtml-Standart muss das img in irgend einem Block
stehen.
Laut dem Sinn von HTML haben die Tags aber auch eine logische Bedeutung, und die erschließt sich mir nicht, wenn Du ein Image in eine logische Gruppe einstellst, obwohl da keine Gruppe ist. In so einem Fall ist ein Textabsatz oft die sinnvollere Lösung (also ).
Genaus so muss der alt tag gesetzt sein.
Es gibt keinen alt-Tag, nur ein alt-Attribut. Und ja, das muss natürlich gesetzt sein. Aber der Inhalt dieses Attributs muss natürlich so sinnvoll sein, dass jemand, der das Image nicht dargestellt bekommt, damit auch was anfangen kann! Es geht ja bei HTML nicht darum, stur irgendwelche Vorschriften zu befolgen, die haben ja auch alle einen tieferen Sinn. Und das alt-Attribut mit Unsinn zu füllen, mag zwar syntaktisch richtig sein, ist aber eben Unfug.
Der Inhalt ist egal,
hauptsache da ist einer.
Du hast den Sinn von HTML nicht verstanden. Genauso sagst ein „30“-Schild vor einer Schule auch mehr aus als „Fahr hier maximal 30!“. Du sollst da außerdem bremsbereit sein, auf Kinder aufpassen und mit dem Fehlverhalten anderer Verkehrsteilnehmer rechnen.
Ansonsten wäre das ganze nicht xhtml konform.
Das heißt, Du machst alles regelkonform, weißt aber eigentlich gar nicht wofür Du das machst? Hier könnte man argumentieren, dass die Browser auch fast alles darstellen, was nicht regelkonform ist (was natürlich kein gutes Argument ist!).
Du befolgst zwar die Regeln, was gut ist, aber Du weißt eigentlich gar nicht, warum Du das tust (was nicht gut ist).
Laut Firebug ist das div tag tatsächlich dafür
verantwortlich.
Nein, das Tag selbst ist nicht dafür verantwortlich, nur irgendwelche CSS-Eigenschaften, die für dieses div gesetzt sind.
Ohne div tag(nicht xhtml konform) ist nichts dafür
verantwortich.
Änderst Du das div in ein p ist vermutlich das p verantwortlich. Aber auch nur aufgrund seiner CSS-Eigenschaften.
Denn HTML ist ja gar nicht für das Aussehen der Website verantwortlich, sondern ausschließlich CSS.
Also musst Du natürlich nicht das Tag entfernen (was, wie Du richtig festgestellt hast, ein Fehler wäre), sondern die verantwortliche Eigenschaft abändern.
Nach dem letzten Element kommen einfach noch ein paar Pixel.
Da kommt ja auch noch ein Zeilenumbruch (= Whitespace).
Wenn ich den Block weglasse und das Bild alleine mache ergibt
das keine Änderung.
Wenn ich das in einen p tag setze ebenfalls keine
Veränderung.
Du versuchst, Veränderungen am Aussehen durch das Ändern der logischen Struktur zu erreichen - das kann ja auch nicht klappen.
Du willst einen Fehler am Aussehen ändern, also musst Du auch am Aussehen was machen - also in CSS. HTML ist dafür nicht verantwortlich.
Fazit: Es ist gut, dass Du regelkonform arbeitest, aber Du solltest auch versuchen zu verstehen, warum Du das machst. Und Du solltest lernen, zu verstehen, was HTML eigentlich ist, was CSS ist und wie alles miteinander harmoniert. Dann wird sicher einiges klarer!
Noch Fragen? Fragen!
Liebe Grüße,
-Efchen