Flexbox a ce comportement où il étire les images à leur hauteur naturelle. En d'autres termes, si j'ai un conteneur flexbox avec une image enfant et que je redimensionne la largeur de cette image, la hauteur ne se redimensionne pas du tout et l'image est étirée.
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>
Qu'est-ce qui cause cela?
J'ai ajouté This CodePen pour démontrer ce que je veux dire.
align-self:flex-start
dans l'image. Je ne sais pas pourquoi, peut-être que la valeur par défaut dans Chrome est stretch.align-items: stretch
/align-self: stretch
. Si vous ajoutez une bordure autour de chaque élément et supprimezwrap
, vous remarquerez que tous les éléments s'étirent dans tous les navigateurs: codepen.io/anon/pen/oLXBVx?editors=1100Réponses:
Il est extensible car la
align-self
valeur par défaut eststretch
. Réglezalign-self
surcenter
.Voir la documentation ici: align-self
la source
align-self: start;
peut être une réponse plus forte car les images doivent s'aligner verticalement sur le HAUT de leurs conteneurs (pas au centre) comme n'importe quelle image sans style (pas de css) le ferait. Dans tous les cas, les deux réponses corrigent l'étirement. Cela dépend donc de ce que OP veut bien sûr - je n'ai tout simplement pas eu cette impression «centrée verticalement» du message d'OP.align-self: [flex-start, center...others]
empêchera l'image de prendre 100% de la largeur des conteneurs flexibles.align-self:center
le corrige bien sûr, mais si vous voulez que votre image commence au début ou à la fin de l'utilisation du conteneuralign-items: flex-start or flex-end
align-items: center
(ou tout autre alignement qui correspond à vos besoins) sur le parent.L'attribut clé est
align-self: center
:la source
J'ai rencontré le même problème avec un menu Fondation.
align-self: center;
n'a pas fonctionné pour moi.Ma solution consistait à envelopper l'image avec un
<div style="display: inline-table;">...</div>
la source
Ajout
margin
pour aligner les images:Puisque nous voulions que le
image
soitleft-aligned
, nous avons ajouté:De même pour
image
êtreright-aligned
, nous pouvons ajoutermargin-right: auto;
. L'extrait montre une démonstration pour les deux types d'alignement.Bonne chance...
la source
Il est étirement parce que la valeur par défaut de align-self est stretch. il y a deux solutions pour ce cas: 1. set img align-self: center OU 2. set parent align-items: center
OU
la source