Flexbox a ce comportement lorsqu'il étend les images à leur hauteur naturelle. En d'autres termes (plus spécifiques), si j'ai un conteneur flexbox avec une image enfant et que je redimensionne la largeur de cette image, la hauteur ne sera pas redimensionnée du tout et l'image sera étirée.
<div>
<img src="https://loremflickr.com/400/300" >
<h4>Appify</h4>
<p> some text </p>
</div>
Et cette feuille de style
div {
display: flex;
flex-wrap: wrap;
}
img{
width: 50%
}
J'ai ajouté This codepen pour montrer ce que je veux dire. Qu'est-ce qui cause ça?
Il s'étire parce que align-self
par défaut est stretch
. Définissez align-self
sur center
.
align-self: center
Voir doc ici: align-self
La clé est align-self: center
:
.container {
display: flex;
flex-direction: column;
}
img {
max-width: 100%;
}
img.align-self {
align-self: center;
}
<div class="container">
<p>Without align-self:</p>
<img src="http://i.imgur.com/NFBYJ3hs.jpg" />
<p>With align-self:</p>
<img class="align-self" src="http://i.imgur.com/NFBYJ3hs.jpg" />
</div>
J'ai rencontré le même problème avec un menu Foundation. align-self: center;
n'a pas fonctionné pour moi.
Ma solution consistait à envelopper l'image avec un <div style="display: inline-table;">...</div>
margin
pour aligner les images:Puisque nous voulions que la image
soit left-aligned
, nous avons ajouté:
img {
margin-right: auto;
}
De même, pour que image
soit right-aligned
, nous pouvons ajouter margin-right: auto;
. L'extrait montre une démonstration pour les deux types d'alignement.
Bonne chance...
div {
display:flex;
flex-direction:column;
border: 2px black solid;
}
h1 {
text-align: center;
}
hr {
border: 1px black solid;
width: 100%
}
img.one {
margin-right: auto;
}
img.two {
margin-left: auto;
}
<div>
<h1>Flex Box</h1>
<hr />
<img src="https://via.placeholder.com/80x80" class="one"
/>
<img src="https://via.placeholder.com/80x80" class="two"
/>
<hr />
</div>
utiliser le bloc d'affichage pour l'image existante dans le conteneur flex