(Sample)
Masonry.jsというJavaScriptのライブラリを使用することで、Pinterestのようなグリッドレイアウトを実現できます。
アイテムの配置を自動的に最適化し、空白を最小限に抑えます。
ちなみに、masonryとは英語で石積のことです。
HTML
<div class="grid">
<div class="grid-item"> <img src="https://picsum.photos/id/247/300/200" alt="画像"></div>
<div class="grid-item"> <img src="https://picsum.photos/id/258/300/200" alt="画像"></div>
<div class="grid-item"> <img src="https://picsum.photos/id/249/300/200" alt="画像"></div>
<div class="grid-item"> <img src="https://picsum.photos/id/250/300/200" alt="画像"></div>
<div class="grid-item"> <img src="https://picsum.photos/id/251/300/200" alt="画像"></div>
<div class="grid-item"> <img src="https://picsum.photos/id/254/300/200" alt="画像"></div>
</div>
.gridの中に.grid-itemを用意しておきます。
CSS
.grid-item { width: 300px; height: 200px; margin: 10px; background: #ccc; padding: 10px; }
.grid-itemの設定です。
JavaScript
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"></script>
<script>
const grid = document.querySelector('.grid');
new Masonry(grid, {
itemSelector: '.grid-item',
columnWidth: '.grid-item',
percentPosition: true
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"...>...</script>
: Masonry.jsのJavaScriptファイルをCDNからインクルードします。
設定プロパティ
- itemSelector:
- 値:
'.grid-item'
- 説明: グリッド内のアイテムを指定するCSSセレクタです。Masonryはこのセレクタを使って、どの要素をグリッドアイテムとして扱うかを決定します。
- 値:
- columnWidth:
- 値:
'.grid-item'
- 説明: グリッドのカラム幅を指定するためのCSSセレクタです。Masonryはこのセレクタの要素を基準にカラム幅を決定します。同じセレクタを指定することで、アイテムの幅をそのままカラム幅として使用します。
- 値:
- percentPosition:
- 値:
true
- 説明: グリッドアイテムの位置をパーセンテージベースで計算します。レスポンシブデザインに対応しやすくなります。
- 値:
その他のプロパティ
- gutter:
- 説明: アイテム間のスペース(ガター)を設定します。数値(ピクセル単位)やセレクタを指定できます。
- 例:
gutter: 10
- fitWidth:
- 説明: コンテナの幅をアイテムの幅に合わせます。これにより、コンテナがアイテムの幅にぴったりフィットします。
- 値:
true
またはfalse
- 例:
fitWidth: true
- originLeft:
- 説明: アイテムのレイアウトが左から始まるかどうかを設定します。
false
に設定すると右から始まります。 - 値:
true
またはfalse
- 例:
originLeft: false
- 説明: アイテムのレイアウトが左から始まるかどうかを設定します。
- originTop:
- 説明: アイテムのレイアウトが上から始まるかどうかを設定します。
false
に設定すると下から始まります。 - 値:
true
またはfalse
- 例:
originTop: false
- 説明: アイテムのレイアウトが上から始まるかどうかを設定します。
- transitionDuration:
- 説明: レイアウト変更時のアニメーションの持続時間を設定します。CSSの時間指定形式(例:
0.4s
)で指定します。 - 例:
transitionDuration: '0.4s'
- 説明: レイアウト変更時のアニメーションの持続時間を設定します。CSSの時間指定形式(例:
- stagger:
- 説明: アイテムのアニメーションを時間差で開始するためのディレイを設定します。
- 例:
stagger: 30
(30ミリ秒)
その他のプロパティ
以上、Swiperの解説でした。