css waterfall (masonry) layout only css

347
05 июля 2022, 03:00

возникла необходимость создать сетку по типу "водопад", но самый первый элемент должен занимать две колонки (все остальные элементы 1 колонка) высота первого элемента(слайдера) известна и фиксирована. другие элементы будут менять высоту. необходимо чтобы высота менялась автоматически в зависимости от содержимого.

решил следующим образом через JavaScript меняю высоту элемента

let mainEl = document.querySelector(".page-content");
    let rowHeight = parseInt(
        getComputedStyle(mainEl).getPropertyValue("grid-auto-rows")
    );
    let rowGap = parseInt(
        getComputedStyle(mainEl).getPropertyValue("grid-row-gap")
    );
    let setSpan = el => {
        // Calculate the number of lines that the div needs to span
        el.style.gridRowEnd = `span ${Math.ceil(
            (el.clientHeight + rowGap) / (rowHeight + rowGap)
        )}`;
    };
    document.querySelectorAll(".page-content-item").forEach(setSpan);

пример на codepen https://codepen.io/143477/pen/rNLXMbj?editors=0110

подскажите можно ли создать данную сетку без использования JavaScript only css please

READ ALSO
Применение маски к box-shadow

Применение маски к box-shadow

У меня есть div с примененной к нему маскойЯ заметил, что я не могу применить box-shadow к тому же самому div, поэтому я должен переместить тень на wrapper...

281
Прошу оценить вёрстку [закрыт]

Прошу оценить вёрстку [закрыт]

Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку...

331
Не подключается внешний css файл

Не подключается внешний css файл

Пытаюсь начать разрабатывать на nodejs

371
Изменение лого в шапке сайта

Изменение лого в шапке сайта

Есть фиксированная прозрачная шапка, белое лого и менюПри скроле вниз от половины высоты 1 блока, шапка становится белой, а логотип должен...

295