Почему flexbox растягивает мой образ?



Flexbox имеет такое поведение, когда он растягивает изображения до их естественной высоты. Другими (более конкретными) словами, если у меня есть контейнер flexbox с дочерним изображением, и я изменяю ширину этого изображения, высота не изменяется вообще, и изображение растягивается.



<div>
<img src="https://loremflickr.com/400/300" >
<h4>Appify</h4>
<p> some text </p>
</div>


а это таблица стилей



div {
display: flex;
flex-wrap: wrap;
}
img{
width: 50%
}


добавил это codepen чтобы продемонстрировать, что я имею в виду.
Чем это вызвано?

842   4  

4 ответов:

он растягивается, потому что align-self значение по умолчанию stretch. Набор align-self to center.

align-self: center

см. doc здесь: align-self

ключ 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>

я столкнулся с той же проблемой с меню Foundation. align-self: center; не работает для меня.

мое решение было обернуть изображение с <div style="display: inline-table;">...</div>

добавлять margin выровнять изображения:

так как мы хотели image на left-aligned добавлен:

img {
  margin-right: auto;
}

аналогично image на right-aligned, мы можем добавить margin-right: auto;. Фрагмент показывает демо для обоих типов выравнивания.

Удачи...

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>

Comments

    Ничего не найдено.