Ich habe irgendwo gelesen, dass sich dieses <img>
Element wie beides verhält. Wenn ja, könnte jemand dies bitte anhand von Beispielen erklären?
Ich habe irgendwo gelesen, dass sich dieses <img>
Element wie beides verhält. Wenn ja, könnte jemand dies bitte anhand von Beispielen erklären?
Antworten:
Es ist wahr, sie sind beide - oder genauer gesagt, sie sind "Inline-Block" -Elemente. Dies bedeutet, dass sie wie Text inline fließen, aber auch eine Breite und Höhe wie Blockelemente haben.
In CSS können Sie ein Element auf festlegen display: inline-block
, damit es das Verhalten von Bildern * repliziert.
Bilder und Objekte werden auch als "ersetzte" Elemente bezeichnet, da sie an sich keinen Inhalt haben, wird das Element im Wesentlichen durch Binärdaten ersetzt.
* Beachten Sie, dass Browser technisch verwenden display: inline
(wie in den Entwicklertools zu sehen), Bilder jedoch besonders behandeln. Sie folgen immer noch allen Merkmalen von inline-block
.
img
Elemente keine, inline-block
sondern tatsächliche inline
Elemente. Sie können dies in einem modernen Browser überprüfen, indem Sie mit der rechten Maustaste auf ein Bild klicken, auf "Element überprüfen" klicken und dann den berechneten Stil anzeigen, der angezeigt wird display: inline
. Innerhalb des Tags findet kein Blockkontext statt, daher ist es nicht korrekt, ihn aufzurufen inline-block
. Weitere Informationen zu ersetzten Inline-Elementen finden Sie in der Antwort von Quentin und in diesem MDN-Artikel .
img
Elemente inline sind. Die Google Chrome-Entwicklungstools zeigen img
Elemente als inline an. Dieser Beitrag ist der einzige Ort, den ich bisher gefunden habe, der besagt, dass sie inline-block
stattdessen sind. Interessanterweise habe ich keine Autorität gefunden, die besagt, dass dies auch der inline
Fall ist. Ist die Behandlung des Tags möglicherweise abhängig von der Implementierung?
display:inline-block
.
Ein img
Element ist ein ersetztes Inline-Element .
Es verhält sich wie ein Inline-Element (weil es so ist), aber einige Verallgemeinerungen über Inline-Elemente gelten nicht für img
Elemente.
z.B
Verallgemeinerung: "Breite gilt nicht für Inline-Elemente"
Was die Spezifikation tatsächlich sagt : "Gilt für: alle Elemente außer nicht ersetzten Inline-Elementen, Tabellenzeilen und Zeilengruppen"
Da ein Bild ein ersetztes Inline-Element ist, gilt es.
Stellen Sie sie sich für fast alle Zwecke als Inline-Element mit einer festgelegten Breite vor. Grundsätzlich können Sie frei bestimmen, wie Bilder mit CSS angezeigt werden sollen. Im Allgemeinen habe ich einige Bildklassen wie folgt festgelegt:
img.center {display:block;margin:0 auto;}
img.left {float:left;margin-right:10px;}
img.right {float:right;margin-left:10px;}
img.border {border:1px solid #333;}
Wann immer Sie ein Bild einfügen, nimmt es nur die Breite an, die das Bild ursprünglich hat. Sie können jedes andere HTML-Element daneben hinzufügen, und Sie werden sehen, dass es dies zulässt. Das macht das Bild zu einem "Inline" -Element.
Es ist wahr, sie sind beide - oder genauer gesagt, sie sind "Inline-Block" -Elemente. Dies bedeutet, dass sie wie Text inline fließen, aber auch eine Breite und Höhe wie Blockelemente haben.