Size: a a a

2020 November 30

МТ

Марк Танащук... in Svelte [svelt]
С masonry разметкой =)
источник

МТ

Марк Танащук... in Svelte [svelt]
Чтобы не было пробелов тобишь между верхним итемом и нижним в одной колонке
источник

ER

Eric Rovell in Svelte [svelt]
Alexander Ponomarev
 
      grid.items.slice(ncol).forEach((c, i) => {
         let prev_fin = grid.items[i].getBoundingClientRect().bottom /* bottom edge of item above */,
               curr_ini = c.getBoundingClientRect().top /* top edge of current item */;
         
         c.style.marginTop = `${prev_fin + grid.gap - curr_ini}px`
       });

Этот кусок по идее самый плохой. Здесь в цикле идет инвалидация дома и сразу его пересчет. По нормальному это делается сначало снятием всех ректов а потом постановкой всех марджинов. Но я не знаю правильно ли это будет по логике =)
Можно пример, как было бы лучше?
источник

A

Arushwl in Svelte [svelt]
В each собираете сетку?
источник

AP

Alexander Ponomarev in Svelte [svelt]
я не могу привести пример конкретно для вашей ситуации с масонами, лучше это когда сначало все померили в одном цикле, а потом все изменили в другом.
источник

AP

Alexander Ponomarev in Svelte [svelt]
типа
grid.items.forEach(measure);
grid.items.forEach(modify);
источник

AS

Alexey Solovyov in Svelte [svelt]
Марк Танащук
С минимальным размером каждой в 300
Ну так это вроде про разметку) А я про разбиение массива
источник

МТ

Марк Танащук... in Svelte [svelt]
Eric Rovell
Можно пример, как было бы лучше?
Мы ведь оба говорим про css свойство?
источник

AP

Alexander Ponomarev in Svelte [svelt]
Alexey Solovyov
Ну так это вроде про разметку) А я про разбиение массива
дак разбиение зависит от кол-ва свободного места и контента =)
источник

МТ

Марк Танащук... in Svelte [svelt]
Где массивы в свойствах?
источник

ER

Eric Rovell in Svelte [svelt]
Arushwl
В each собираете сетку?
Да, передаю элементы через each
источник

AS

Alexey Solovyov in Svelte [svelt]
Alexander Ponomarev
дак разбиение зависит от кол-ва свободного места и контента =)
А, ну тогда я всё это время неверно понимал суть. Извиняюсь 🙂
источник

A

Arushwl in Svelte [svelt]
Можно внутри
#each node bind:this={nodes[item.id]} собрать все ноды
источник

МТ

Марк Танащук... in Svelte [svelt]
Я лично недавно делал masonry и у меня такой вывод: лучше вручную хендлить количество колонок и тогда можно более менее на флексах все написать
источник

МТ

Марк Танащук... in Svelte [svelt]
иначе нужно изворачиваться очень дико
источник

ER

Eric Rovell in Svelte [svelt]
Arushwl
Можно внутри
#each node bind:this={nodes[item.id]} собрать все ноды
Точно, что-то из головы вылетело
источник

AP

Alexander Ponomarev in Svelte [svelt]
если кому-то интересно, есть спека layout-worklet и есть написанный masonry для нее https://github.com/GoogleChromeLabs/houdini-samples/blob/master/layout-worklet/masonry/masonry.js оттуда можно черпать какие-то идеи.
источник

МТ

Марк Танащук... in Svelte [svelt]
источник

МТ

Марк Танащук... in Svelte [svelt]
Если вызвать items++ то вот так вот выходит
источник

ER

Eric Rovell in Svelte [svelt]
Вот пример с column-count, но это не то все равно

https://dev.to/ryandsouza13/creating-a-responsive-masonry-layout-using-the-css-column-count-property-4kf7
источник