Верстка. Изображения. Во втором ряду отображаются не так, как в первом

Здравствуйте.
Не могу понять причину.

Вот сайт, в разделе "Our Portfolio", элементы из второго ряда отображаются не так, как из первого. Съезжают.

Код, отвечающий за картинки такой:

.row img{
	margin-left: auto;
	margin-right: auto;
	display: block;
	max-width: 100%;
	height: auto;
}


Обязательно надо оставлять "height: auto", чтобы картинки были responsive.
Если, например, поставить фиксированную высоту

.row img{
       height: 300px;
}


То всё нормально, но этот вариант не подходит, т.к. у картинок меняется соотношение сторон, если меняется viewport.

В чем может быть причина?
  • Вопрос задан
  • 2410 просмотров
Решения вопроса 1
У вас float стоит либо замените на inline block либо через js после каждого третьего блока вставляете
$(".section-2>.row:nth-child(3n)").after('<div class="clear"></div>');

.clear{
            clear: both;
            font-size: 0;
            line-height: 0;
            height: 0;
            overflow: hidden;
        }

или же без js ручками вставляете в Вашем случае это даже лучше
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Попробуйте какой-нибудь такой вариант codepen.io/iiil/pen/zJrvL
Зачем плодить такое количество классов? пишете класс row, а по сути он является ячейкой, а не строкой.
В Вашем случае такой перенос происходит из-за того, что картинка номер 3 имеет высоту 298 пикселей, а остальные - 299. Ведут себя блоки совершенно нормально в таком случае.

upd: вбейте вместо третьей <img src="images/3.png" style="height: 299px;">
Все будет ок. Но лучше отойти от такой зависимости от размеров картинок.
Ответ написан
Vakiliy
@Vakiliy
навскидку два варианта, для модерн:
.row:nth-child(3n) {
  clear:left;
}


для олд:
.row{
  display: inline;
  *zoom: 1;
  display: inline-block;
  .... 
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы