На втором изображении выглядит так, как будто вы хотите, чтобы изображение заполнило коробку, но созданный вами пример ДЕЙСТВИТЕЛЬНО сохраняет соотношение сторон (домашние животные выглядят нормально, а не стройными или толстыми).
Понятия не имею, отфотошопили ли вы эти изображения в качестве примера, или второе тоже «как должно быть» (вы сказали «Я», а в первом примере вы сказали «должен»)
Во всяком случае, я должен предположить:
Если «изображения не изменяются с сохранением соотношения сторон», и вы показываете мне изображение, которое ДЕЙСТВИТЕЛЬНО сохраняет соотношение сторон пикселей, я должен предположить, что вы пытаетесь добиться соотношения сторон области «обрезки» (внутренняя часть зеленый) WILE, сохраняя соотношение сторон пикселей. Т.е. вы хотите заполнить ячейку изображением, увеличивая и обрезая изображение.
Если это ваша проблема, то предоставленный вами код НЕ отражает «вашу проблему», а отражает ваш начальный пример.
Учитывая предыдущие два предположения, то, что вам нужно, не может быть выполнено с фактическими изображениями, если высота блока является динамической, а с фоновыми изображениями. Либо с помощью «background-size: contain», либо с помощью этих методов (умные отступы в процентах, которые ограничивают обрезку или максимальные размеры в любом месте):
http://fofwebdesign.co.uk/template/_testing/scale-img/scale- img.htm
Единственный способ, которым это возможно с изображениями, - это если мы ЗАБЫВАЕМ о вашем втором iimage, а ячейки имеют фиксированную высоту, и К УДАЧУ, судя по вашим образцам изображений, высота останется такой же!
Поэтому, если высота вашего контейнера не меняется, и вы хотите, чтобы ваши изображения оставались квадратными, вам просто нужно установить максимальную высоту изображений на это известное значение (за вычетом отступов или границ, в зависимости от свойства размера поля для клетки)
Как это:
<div class="content">
<div class="row">
<div class="cell">
<img src="http://lorempixel.com/output/people-q-c-320-320-2.jpg"/>
</div>
<div class="cell">
<img src="http://lorempixel.com/output/people-q-c-320-320-7.jpg"/>
</div>
</div>
</div>
И CSS:
.content {
background-color: green;
}
.row {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
flex-direction: row;
-webkit-box-pack: center;
-moz-box-pack: center;
box-pack: center;
justify-content: center;
-webkit-box-align: center;
-moz-box-align: center;
box-align: center;
align-items: center;
}
.cell {
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
-webkit-flex: 1 1 auto;
flex: 1 1 auto;
padding: 10px;
border: solid 10px red;
text-align: center;
height: 300px;
display: flex;
align-items: center;
box-sizing: content-box;
}
img {
margin: auto;
width: 100%;
max-width: 300px;
max-height:100%
}
http://jsfiddle.net/z25heocL/
Ваш код недействителен (открывающие теги вместо закрывающих, поэтому они выводят ВСТАВЛЕННЫЕ ячейки, а не братьев и сестер, он использовал СКРИНШОТ ваших изображений внутри ошибочного кода, а гибкое поле не содержит ячеек, но оба примера в столбце ( вы устанавливаете «строку», но поврежденный код, встраивающий одну ячейку в другую, привел к гибкости внутри гибкого трубопровода и, наконец, работал как КОЛОННЫ. Я понятия не имею, чего вы хотели достичь и как вы придумали этот код, но я Я догадываюсь, что ты хочешь этого.
Я также добавил display: flex к ячейкам, чтобы изображение было центрировано (думаю, display: table
можно было бы использовать и здесь со всей этой разметкой)