タイル配置
デモ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
コンテンツ
JSコードコピー
使い方
タイル配置をしたい任意の場所にdiv
要素を1つ用意し、data-jscopyand="tile"
を付与してください。
子要素には任意の数・任意の要素を配置してください。
解説
最初にタイル配置の設定変数を定義しておきます。
本デモでは3列にするために、1列の横幅比率は33.333%
、余白は10px
とします。
タイル配置を行う要素を特定し、横並びのためのスタイルを付与します。
子要素を変数に格納します。
children
で取得した値はそのままでは反復処理ができないため、Array.from()
で配列に変換します。
反復処理を行い、全ての子要素に基本のスタイルを付与していきます。
子要素の表示に影響を与えないよう、div
要素で囲んでからスタイルを付与しています。
内容は最初に定義した設定変数による横幅指定・余白指定です。
子要素の配列を行毎に分割していきます。
本デモでは3列になるため、子要素の配列を3つずつ切り出していき、切り出し終えたところでループを終えるようにしています。
行毎に反復処理を行なっていきます。
1行目はそのまま表示すればよいため、早期に処理を終了します。
1つ前の行の要素配列に対して反復処理を行い、それぞれの終了位置をgetBoundingClientRect().bottom
で取得します。
さらにその中で一番下になっている要素の位置を取得します。
Math.max
は引数に配列は受け取れないため、apply
というメソッドを通して配列を渡せるようにしています。
現在の行の要素配列に対して反復処理を行い、隙間がある(=
prevEndPositions[index] - prevMaxEndPosition
)場合には上に詰めるようにします。
最終行まで処理したら、タイル配置全体の高さを設定します。
これは「最終行の要素の中で一番下になっている要素の位置」から「タイル配置要素の開始位置」を引くことで求めることができます。
ヘルプ・コンタクト
機能に関するご質問は、このページの下部に表示されている Twitter
のアイコンから Twitter に遷移後、 DM 等でご連絡ください。
導入サポートやカスタマイズも有償にてお受け致しますので、 DM
等でご連絡ください。