Vue 2とVue 3のための組積レイアウト


導入


私のVUE 2プロジェクトのかなりの数で、私は図書館を使っていますvue-masonry-wall .
使いやすさとSSRのサポートは、このライブラリを使用する私の決定の重要な要因でした.
しかし、私は現在Nuxt 3のリリースのための私のプロジェクトを準備して、Vue 3に付随する移行の進行中です.
Vue 3に匹敵する石積みレイアウトを見つけることができなかったのでFuxing Loh's vue-masonry-wall .
結果は@yeger/vue-masonry-wall , タイプスクリプトとVue 3のオリジナルライブラリの書き直し.
それは依存関係を持ちません.そして、最大54 %の束サイズ減少に終わります.
私も作成@yeger/vue2-masonry-wall Vue 2プロジェクトで使用するために.
それも、任意の依存関係をドロップし、最大40 %の束サイズの減少を達成
また、複数の問題が修正されている.
特に、間隔gap ) 現在、列のカウントを計算しながら、要素の除去がサポートされていると見なされます.

インストール


Vue 2


# yarn
$ yarn add @yeger/vue2-masonry-wall

# npm
$ npm install @yeger/vue2-masonry-wall
まず、他のプラグインのようなコンポーネントをインストールする必要があります.
相談するVue 2 documentation プラグインのインストールの詳細については.
import Vue from 'vue'
import MasonryWall from '@yeger/vue2-masonry-wall'

Vue.use(MasonryWall)

Vue 3


# yarn
$ yarn add @yeger/vue-masonry-wall

# npm
$ npm install @yeger/vue-masonry-wall
まず、他のプラグインのようなコンポーネントをインストールする必要があります.
相談するVue 3 documentation プラグインのインストールの詳細については.
import { createApp } from 'vue'
import MasonryWall from '@yeger/vue-masonry-wall'

const app = createApp()

app.use(MasonryWall)

用途


コンポーネントはmasonry-wall or MasonryWall .
必要なプロップはitems , 型の配列any .
の各要素items がデフォルトのスロットに渡される.
支柱column-width を取り込むnumber , 対象の列幅を指定します.
これは、カラム数を計算するために使用されますが、列の実際の幅を定義していません.
同様にgap ピクセル内の項目間のギャップを定義し、カラムカウントを計算しながら尊重します.
最後に、支柱ssr-columns サーバ側のレンダリングコンテキストの列数を指定するために使用できます.
成分のすべての支柱が反応性である間、突然変異items 配列はレイアウトを更新しません.
更新を強制するには、新しい配列をitems プロップ
コンポーネントの基本的な使用方法を次の例に示します.
インタラクティブデモンストレーションのためにvue-masonry-wall.yeger.eu or vue2-masonry-wall.yeger.eu .
<template>
  <MasonryWall :items="items" :ssr-columns="1" :column-width="300" :gap="16">
    <template #default="{ item }">
      <div :style="{ height: `${item.height}px` }">
        {{ item.content }}
      </pre>
    </template>
  </MasonryWall>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { content: 'First', height: 150 },
        { content: 'Second', height: 300 },
        { content: 'Third', height: 150 },
        { content: 'Fourth', height: 450 },
      ]
    }
  }
}
</script>

リポジトリ


デリガー / Vue石積み壁


VSR 3のためのSSRサポートとゼロ依存性を持つ応答組積レイアウト


イェーガー/ Vue石積みの壁



Vue 3のためのSSRサポートとゼロ依存性を持つ応答組積レイアウト







機能


  • 📱 応答:設定可能な列幅とギャップに対応.に基づいてResizeObserver .

  • 🔁 反応:プロパティの変更に反応します.

  • 🪶 軽量:ゼロの依存性.1 KB未満.

  • ⬅️ RTL:LTRとRTLレイアウトをサポートします.
  • リンク

  • Demo
  • Vue 2 version
  • vue-masonry-wall by Fuxing Loh
  • インストール



    糸を追加します
    東京工業大学
    インストールしてください@ yeger/vue石積み壁

    用途


    Vueからのインポート{ createApp }
    からの輸入MasonryWall/Vue石積み壁
    const app = createapp ()
    アプリ.使用する
    小道具
  • items : 項目の配列.必要です.
  • column-width : 列の最小幅px .
  • gap : アイテム間の間隔px . デフォルトは0 .
  • rtl : ( LTRのトグル)false ) とRTLtrue ) レイアウト.デフォルトはfalse .
  • ssr-columns : サーバー側のレンダリングされた列の数.オプションです.

  • < ...
    View on GitHub

    デリガー / VEE 2組積壁


    Vue 2に対するSSRサポートとゼロ依存性を持つ応答組積レイアウト


    石灰岩の壁



    Vue 2のためのSSRサポートとゼロ依存性を持つ応答組積レイアウト







    機能


  • 📱 応答:設定可能な列幅とギャップに対応.に基づいてResizeObserver .

  • 🔁 反応:プロパティの変更に反応します.

  • 🪶 軽量:ゼロの依存性.1.5 Kb未満.

  • ⬅️ RTL:LTRとRTLレイアウトをサポートします.
  • リンク

  • Demo
  • Vue 3 version
  • vue-masonry-wall by Fuxing Loh
  • インストール



    $糸追加@イェガー
    東京工業大学
    $ npmをインストールします

    用途


    VueからインポートVue
    @ yeger/vue 2組積壁から輸入masonrywall
    Vue使用する
    小道具
  • items : 項目の配列.必要です.
  • column-width : 列の最小幅px .
  • gap : アイテム間の間隔px . デフォルトは0 .
  • rtl : ( LTRのトグル)false ) とRTLtrue ) レイアウト.デフォルトはfalse .
  • ssr-columns : サーバー側のレンダリングされた列の数.オプションです.
  • テンプレート& gt
    石積みの壁.
    View on GitHub