Flexbox hat dieses Verhalten, bei dem Bilder auf ihre natürliche Höhe gedehnt werden. Mit anderen Worten, wenn ich einen Flexbox-Container mit einem untergeordneten Bild habe und die Breite dieses Bildes verändere, wird die Größe überhaupt nicht geändert und das Bild wird gestreckt.
div {
display: flex;
flex-wrap: wrap;
}
img{
width: 50%
}
<div>
<img src="https://loremflickr.com/400/300" >
<h4>Appify</h4>
<p> some text </p>
</div>
Was verursacht das?
Ich habe diesen CodePen hinzugefügt, um zu demonstrieren, was ich meine.
align-self:flex-start
im Bild beheben . Ich weiß nicht warum, vielleicht ist der Standardwert in Chrom Stretch.align-items: stretch
/align-self: stretch
. Wenn Sie einen Rahmen um jedes Element hinzufügen und entfernenwrap
, werden Sie feststellen, dass sich alle Elemente in allen Browsern erstrecken: codepen.io/anon/pen/oLXBVx?editors=1100Antworten:
Es wird gedehnt, weil der
align-self
Standardwert iststretch
. Setalign-self
zucenter
.Siehe Dokumentation hier: align-self
quelle
align-self: start;
könnte eine stärkere Antwort sein, da Bilder vertikal an der Oberseite ihrer Container (nicht in der Mitte) ausgerichtet werden sollten, wie dies bei jedem stillosen Bild (kein CSS) der Fall wäre. In beiden Fällen beheben beide Antworten die Dehnung. Es kommt also natürlich darauf an, was OP will - habe diesen "vertikal zentrierten" Eindruck einfach nicht von OPs Post bekommen.align-self: [flex-start, center...others]
verhindert, dass das Bild 100% der Breite der Flex-Container einnimmt.align-self:center
behebt es natürlich, aber wenn Sie möchten, dass Ihr Bild am Anfang oder Ende der Containernutzungalign-items: flex-start or flex-end
align-items: center
dem Elternteil auch eine beliebige Ausrichtung (oder eine Ausrichtung, die Ihren Anforderungen entspricht) hinzufügen.Das Schlüsselattribut ist
align-self: center
:quelle
Ich hatte das gleiche Problem mit einem Foundation-Menü.
align-self: center;
hat bei mir nicht funktioniert.Meine Lösung bestand darin, das Bild mit einem zu versehen
<div style="display: inline-table;">...</div>
quelle
Hinzufügen
margin
, um Bilder auszurichten:Da wir das wollten
image
seinleft-aligned
, haben wir:Ebenso
image
könnenright-aligned
wir hinzufügenmargin-right: auto;
. Das Snippet zeigt eine Demo für beide Arten der Ausrichtung.Viel Glück...
quelle
Es wird gedehnt, da der Standardwert für "Ausrichtung selbst" "Dehnen" ist. Für diesen Fall gibt es zwei Lösungen: 1. setze img align-self: center ODER 2. setze übergeordnete align-items: center
ODER
quelle