网格化图像,如画布上的Pinterest布局



我正在使用pixi.js创建一个交互式应用程序。我需要以 pinterest 的形式将图像放置在屏幕上的不同容器中,例如布局或网格化它们,以便它们看起来井井有条且美观。由于我在画布上工作,因此像 gridify 这样的插件.js不支持画布,我找不到任何插件或代码来让它在画布上工作。此外,图像需要可点击,所以我不能使用 html 等插件来画布转换,因为它们只会生成图像。

我通过检查gridify.js逻辑找到了解决方案。这是我的代码:

    var items = options.items;
    var width = options.containerWidth,
    item_margin = parseInt(options.margin || 0),
    item_width = parseInt(options.max_width || options.width || 220),
    column_count = Math.max(Math.floor(width / (item_width + item_margin)), 1),
    left = column_count == 1 ? item_margin / 2 : (width % (item_width + item_margin)) / 2,
    lastHeight = 0;
    if (options.max_width) {
        column_count = Math.ceil(width / (item_width + item_margin));
        item_width = (width - column_count * item_margin - item_margin) / column_count;
        left = item_margin / 2;
    }
    for (var i = 0, length = items.length; i < length; i++) {
       var ratio = item_width / items[i].width;
        items[i].width = item_width;
        items[i].height = items[i].height * ratio;
        items[i].position.y = lastHeight + item_margin / 2;
        items[i].position.x = 0;

        lastHeight += items[i].height + (item_margin * 2);
    }

迭代所有容器并将参数传递给上面的函数。它将网格化容器中的图像/内容。我为每个容器使用了一列,但您可以使用 gridify 中的原始代码使用多列.js

相关内容

  • 没有找到相关文章

最新更新