Имеется резиновая галерея. И пока фотографии одинаковой высоты, всё выглядит нормально, но как только какая-то фотка больше или меньше, естественно, выглядит все уже не так, как хочется.
Вопрос: как это исправить?
Задать картинкам фиксированную высоту нельзя, поскольку при изменении размера экрана рушатся их пропорции; в процентах не получается, поскольку их родительский блок li не имеет фиксированной высоты.
Как выкрутится в данной ситуации с помощью CSS? Или единственный выход здесь это JS?
.photo_wall {
width: 100%;
}
ul {
line-height: 0px;
overflow: hidden;
}
li {
float: left;
width: 25%;
height: 100%;
padding: 10px;
}
img {
width: 100%;
}
<section class="photo_wall">
<ul>
<li><img src="../img/photo2_1.jpg" alt="photo"></li>
<li><img src="../img/photo2_2.jpg" alt="photo"></li>
<li><img src="../img/photo2_3.jpg" alt="photo"></li>
<li><img src="../img/photo2_4.jpg" alt="photo"></li>
</ul>
<ul>
<li><img src="../img/photo3_1.jpg" alt="photo"></li>
<li><img src="../img/photo3_2.jpg" alt="photo"></li>
<li><img src="../img/photo3_3.jpg" alt="photo"></li>
<li><img src="../img/photo3_4.jpg" alt="photo"></li>
</ul>
</section>
background-size.Если задать contain, то картинки будут видны целиком как здесь:
https://codepen.io/glebkema/pen/NggQvJ
.gallery-box {
border: solid 6px transparent;
box-sizing: border-box;
float: left;
overflow: hidden;
position: relative;
width: 100%;
}
@media (min-width: 500px) { .gallery-box { width: 50%; } }
@media (min-width: 768px) { .gallery-box { width: 33.33333333%; } }
@media (min-width: 992px) { .gallery-box { width: 25%; } }
@media (min-width: 1200px) { .gallery-box { width: 16.66666667%; } }
.gallery-box:before {
content: '';
display: block;
height: 0;
padding-top: 100%;
}
.gallery-box__image {
background-position: center;
background-repeat: no-repeat;
position: absolute; top: 0; left: 0;
width: 100%; height: 100%;
-webkit-background-size: contain;
-moz-background-size: contain;
-o-background-size: contain;
background-size: contain;
}
<div class="gallery">
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
</div>
А если cover, то заполнят собой всю доступную площадь. Получится похоже на инстаграм:
https://codepen.io/glebkema/pen/Zyygab
.gallery-box {
border: solid 2px transparent;
box-sizing: border-box;
float: left;
overflow: hidden;
position: relative;
width: 100%;
}
@media (min-width: 500px) { .gallery-box { width: 50%; } }
@media (min-width: 768px) { .gallery-box { width: 33.33333333%; } }
@media (min-width: 992px) { .gallery-box { width: 25%; } }
@media (min-width: 1200px) { .gallery-box { width: 16.66666667%; } }
.gallery-box:before {
content: '';
display: block;
height: 0;
padding-top: 100%;
}
.gallery-box__image {
background-position: center;
background-repeat: no-repeat;
position: absolute; top: 0; left: 0;
width: 100%; height: 100%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
<div class="gallery">
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/2015_09_20_iphone_155_x400.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/20060731_fulda_055_1280х800.jpg)"></div></div>
<div class="gallery-box"><div class="gallery-box__image" style="background-image:url(http://glebkema.ru/images/street_001.jpg)"></div></div>
</div>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей