Was genau ist der Unterschied zwischen dem inline
und inline-block
Werten von CSS display
?
Was genau ist der Unterschied zwischen dem inline
und inline-block
Werten von CSS display
?
Antworten:
Stellen Sie sich ein <span>
Element in a vor <div>
. Wenn Sie dem <span>
Element beispielsweise eine Höhe von 100 Pixel und einen roten Rand geben, sieht es mit so aus
Anzeige: Inline
Anzeige: Inline-Block
Bildschirmsperre
Code: http://jsfiddle.net/Mta2b/
Elemente mit display:inline-block
sind wie display:inline
Elemente, können jedoch eine Breite und eine haben Höhe haben . Das bedeutet, dass Sie ein Inline-Block-Element als Block verwenden können, während Sie es in Text oder anderen Elementen fließen lassen.
Unterschied der unterstützten Stile als Zusammenfassung:
margin-left
, margin-right
, padding-left
,padding-right
margin
, padding
, height
,width
p
, div
eine gesamte Breite Leitung erhalten (ein Zeilenumbruch zwingen) , aber bezüglich Breite / Höhe und alle horizontalen / vertikalen padding / Ränder. Inline-Block-Elemente haben das gleiche Verhalten wie Block, jedoch ohne ganzen Zeilenumbruch (andere Elemente können daneben platziert werden)
display: inline;
ist ein Anzeigemodus, der in einem Satz verwendet werden soll. Wenn Sie beispielsweise einen Absatz haben und ein einzelnes Wort hervorheben möchten, tun Sie Folgendes:
<p>
Pellentesque habitant morbi <em>tristique</em> senectus
et netus et malesuada fames ac turpis egestas.
</p>
Das <em>
Element hat display: inline;
standardmäßig ein, da dieses Tag immer in einem Satz verwendet wird. Das <p>
Element hat einedisplay: block;
standardmäßig ein, da es weder ein Satz noch ein Satz ist, sondern ein Satzblock.
Ein Element mit display: inline;
kann keinheight
oder ein width
oder ein vertikales Element haben margin
. Ein Element mit display: block;
kann eine haben width
, height
und margin
.
Wenn Sie height
dem <em>
Element ein hinzufügen möchten , müssen Sie dieses Element auf festlegen display: inline-block;
. Jetzt können Sie height
dem Element und jedem anderen Blockstil (dem block
Teil von inline-block
) ein hinzufügen , aber es wird in einem Satz (dem inline
Teil von inline-block
) platziert.
display
Werte tun können / nicht .
Eine Sache, die in den Antworten nicht erwähnt wird, ist, dass Inline-Elemente zwischen Zeilen brechen können, während Inline-Block dies nicht kann (und offensichtlich blockiert)! Inline-Elemente können also nützlich sein, um Textsätze und Blöcke darin zu formatieren. Da sie jedoch nicht aufgefüllt werden können, können Sie stattdessen die Zeilenhöhe verwenden.
<div style="width: 350px">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<div style="display: inline; background: #F00; color: #FFF">
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<hr/>
<div style="width: 350px">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<div style="display: inline-block; background: #F00; color: #FFF">
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
Alle obigen Antworten liefern wichtige Informationen zur ursprünglichen Frage. Es gibt jedoch eine Verallgemeinerung, die falsch erscheint.
Es ist möglich , Breite und Höhe auf mindestens ein Inline-Element (das mir einfällt) einzustellen - das <img>
Element.
Beide akzeptierten hier und auf diesem Duplikat Antworten dass dies nicht möglich ist, dies jedoch keine gültige allgemeine Regel zu sein scheint.
Beispiel:
img {
width: 200px;
height: 200px;
border: 1px solid red;
}
<img src="#" />
Das img
hat display: inline
, aber sein width
und height
wurde erfolgreich eingestellt.
Die Antwort von splattne deckte wahrscheinlich fast alles ab, damit ich nicht dasselbe wiederhole, sondern: inline
und mich anders inline-block
verhalte mit demdirection
CSS-Eigenschaft .
Das nächste Snippet, das Sie sehen one two
(in der richtigen Reihenfolge), wird wie in LTR-Layouts gerendert. Ich vermute, der Browser hier hat den englischen Teil automatisch als LTR-Text erkannt und von links nach rechts gerendert.
body {
text-align: right;
direction: rtl;
}
h2 {
display: block; /* just being explicit */
}
span {
display: inline;
}
<h2>
هذا عنوان طويل
<span>one</span>
<span>two</span>
</h2>
Allerdings, wenn ich voran gehen und Satz display
auf inline-block
, wird der Browser das respektieren direction
Eigentum und macht die Elemente von rechts nach links , um, so dass two one
wiedergegeben wird.
body {
text-align: right;
direction: rtl;
}
h2 {
display: block; /* just being explicit */
}
span {
display: inline-block;
}
<h2>
هذا عنوان طويل
<span>one</span>
<span>two</span>
</h2>
Ich weiß nicht, ob es irgendwelche anderen Macken gibt, die ich nur empirisch auf Chrome gefunden habe.