Совсем замучился с математикой, уже начинаю просто гадать. ( Нужно сделать галерею, типа masonry или justifeid, только без js, и горизонтальную.
Можно calc, можно flex, можно custom-properties, нельзя grid.
Вот что получилось (на качество кода не обращайте внимание, главное чтобы заработало, потом причешем):
.pic-flex {
--var-m: 8;
display: flex;
}
.pic-flex div {
--var-r: calc(1vw * var(--var-a) / 150);
box-sizing: border-box;
background-repeat: no-repeat;
background-size: contain;
padding-left: calc(var(--var-w) / var(--var-h) * var(--var-r));
height: var(--var-r);
}
.pic-flex div:not(:last-child) {
margin-right: calc(var(--var-m) * 1px);
margin-bottom: calc(var(--var-m) * 1px);
}
<div class="pic-flex" style="--var-a: calc(1200 + 800 + 800 + 2 * var(--var-m));">
<div style="--var-w: 1200; --var-h: 768; background-image: url(//placehold.it/1200x768);"></div>
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
</div>
<div class="pic-flex" style="--var-a: calc(800 + 1360 + 800 + 2 * var(--var-m));">
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
<div style="--var-w: 1360; --var-h: 768; background-image: url(//placehold.it/1360x768);"></div>
<div style="--var-w: 800; --var-h: 600;; background-image: url(//placehold.it/800x600);"></div>
</div>
<div class="pic-flex" style="--var-a: calc(1366 + 1920 + 1 * var(--var-m));">
<div style="--var-w: 1366; --var-h: 776;; background-image: url(//placehold.it/1366x776);"></div>
<div style="--var-w: 1920; --var-h: 768; background-image: url(//placehold.it/1920x768);"></div>
</div>
Нужно чтобы было так (аспект у картинок само собой должен быть нормальным):
Черт, кажется получилось! )))
UPDATE: Неуниверсальное решение, с изображениями равной ширины, но разной высоты работает криво.
.pic-flex {
--var-m: 8;
display: flex;
}
.pic-flex div {
--var-r: 18vw;
background-repeat: no-repeat;
background-size: cover;
background-position: center center;
height: var(--var-r);
flex-basis: calc(100% / var(--var-a) * var(--var-w));
}
.pic-flex div:not(:last-child) {
margin-right: calc(var(--var-m) * 1px);
margin-bottom: calc(var(--var-m) * 1px);
}
@media (max-width: 700px) {
.pic-flex {
--var-m: 4;
}
}
<div class="pic-flex" style="--var-a: calc(1200 + 800 + 800);">
<div style="--var-w: 1200; --var-h: 768; background-image: url(//placehold.it/1200x768);"></div>
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
</div>
<div class="pic-flex" style="--var-a: calc(800 + 1360 + 800);">
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
<div style="--var-w: 1360; --var-h: 768; background-image: url(//placehold.it/1360x768);"></div>
<div style="--var-w: 800; --var-h: 600;; background-image: url(//placehold.it/800x600);"></div>
</div>
<div class="pic-flex" style="--var-a: calc(1366 + 1920);">
<div style="--var-w: 1366; --var-h: 776;; background-image: url(//placehold.it/1366x776);"></div>
<div style="--var-w: 1920; --var-h: 768; background-image: url(//placehold.it/1920x768);"></div>
</div>
Придумал еще один вариант, у него и портретными и ландшафтными изображениями все нормально.
.pic-flex {
--var-m: 8;
display: flex;
}
.pic-flex div {
--var-r: 20vw;
background-repeat: no-repeat;
background-size: cover;
background-position: center center;
height: var(--var-r);
flex: calc(var(--var-w) / var(--var-h)) 1 auto;
}
.pic-flex div:not(:last-child) {
margin-right: calc(var(--var-m) * 1px);
margin-bottom: calc(var(--var-m) * 1px);
}
@media (max-width: 700px) {
.pic-flex {
--var-m: 4;
}
}
<div class="pic-flex">
<div style="--var-w: 1200; --var-h: 768; background-image: url(//placehold.it/1200x768);"></div>
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
<div style="--var-w: 800; --var-h: 600; background-image: url(//placehold.it/800x600);"></div>
</div>
<div class="pic-flex">
<div style="--var-w: 775; --var-h: 477;; background-image: url(//placehold.it/775x477);"></div>
<div style="--var-w: 775; --var-h: 1163; background-image: url(//placehold.it/775x1163);"></div>
<div style="--var-w: 775; --var-h: 1089; background-image: url(//placehold.it/775x1089);"></div>
</div>
<div class="pic-flex">
<div style="--var-w: 1366; --var-h: 776;; background-image: url(//placehold.it/1366x776);"></div>
<div style="--var-w: 1920; --var-h: 768; background-image: url(//placehold.it/1920x768);"></div>
</div>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу понять в чем проблема, подскажите пожалуйста
Не пойму кусок кода из статьи про примеси(mixin),там где "примешивают" замыканияКонкретно в строках 1 и 2 не понятно что происходит?Ссылка на статью...