O Flexbox tem esse comportamento em que estende as imagens à sua altura natural. Em outras palavras, se eu tiver um contêiner flexbox com uma imagem filho e redimensionar a largura dessa imagem, a altura não será redimensionada e a imagem será esticada.
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>
O que causa isso?
Eu adicionei este CodePen para demonstrar o que quero dizer.
align-self:flex-start
a imagem. Não sei por que, talvez o valor padrão no chrome seja esticado.align-items: stretch
/align-self: stretch
. Se você adicionar uma borda em torno de cada item e removewrap
, você verá todos os itens esticar em todos os navegadores: codepen.io/anon/pen/oLXBVx?editors=1100Respostas:
Está esticando porque
align-self
o valor padrão éstretch
. Definaalign-self
comocenter
.Consulte a documentação aqui: align-self
fonte
align-self: start;
pode ser uma resposta mais forte, porque as imagens devem se alinhar verticalmente ao TOPO de seus contêineres (não centralizados), como qualquer imagem sem estilo (sem CSS). De qualquer maneira, ambas as respostas corrigem o alongamento. Portanto, depende do que o OP deseja, é claro - apenas não recebeu essa impressão "centralizada verticalmente" no post do OP.align-self: [flex-start, center...others]
impedirá que a imagem ocupe 100% da largura dos contêineres flexíveis.align-self:center
resolve o problema, é claro, mas se você quiser que sua imagem para começar a partir do início ou fim de uso recipientealign-items: flex-start or flex-end
align-items: center
(ou qualquer alinhamento adequado às suas necessidades) aos pais.O atributo-chave é
align-self: center
:fonte
Eu enfrentei o mesmo problema com um menu da Fundação.
align-self: center;
não funcionou para mim.Minha solução foi envolver a imagem com um
<div style="display: inline-table;">...</div>
fonte
Adicionando
margin
para alinhar imagens:Como queríamos
image
que fosseleft-aligned
, adicionamos:Da mesma forma, para
image
serright-aligned
, podemos adicionarmargin-right: auto;
. O snippet mostra uma demonstração para os dois tipos de alinhamento.Boa sorte...
fonte
Está esticando porque o valor padrão de alinhar-se é esticar. existem duas soluções para este caso: 1. configure img align-self: center OU 2. configure parent align-items: center
OU
fonte