アスペクト比を維持して幅ぴったりにレイアウトするReactコンポーネント
- 幅にぴったり合わせたレイアウト
- アスペクト比の違う領域でも組み合わせて配置可能
- 横幅の変化に合わせてレイアウトを自動変更
https://calil.github.io/hiradumi/
https://github.com/CALIL/hiradumi/tree/master/example
npm install github:CALIL/hiradumi#master
- Hiradumi 領域全体
- Row 1行
- Item 表示するアイテム
- Row 1行
大量のデータ表示のためにreact-windowのVariableSizeListを利用
プロパティ | 型 | 説明 |
---|---|---|
width | number | Hiradumiの横幅(px) |
height | number | Hiradumiの縦幅(px) |
padding | number | Hiradumiの余白(px) |
className | string | Hiradumiの領域につけるクラス名 デフォルトはhiradumi |
rowCount | number | 最大行数 上限を不明な場合、Infinityを指定 |
rowRatios | number[] | 行ごとのItemの比率 |
innerStyle | css | Hiradumi内のreact-windowに追加するCSS |
items | Item[] | 画像のアスペクト比が入ったItemの配列 |
itemHeight | number | Itemの高さの基準 |
itemMargin | number | Itemのマージン |
itemComponent | ReactComponent | Itemを表示するコンポーネント デフォルトはDefaultItem.tsx |
headerComponent | React.Component | headerコンポーネント |
headerHeight | number | headerコンポーネントの高さ(px) |
footerComponent | React.Component | footerコンポーネント |
footerComponent | number | footerコンポーネントの高さ(px) |
onScroll | (event) => void | スクロール時に呼び出される関数 |
scrollTo | {key: string, value: any} | ItemのkeyがvalueであるItemまでスクロールする |
sortKey | string | null |
- items
Itemの配列データ
画像のアスペクト比(aspect=width/height)が必須
interface Item {
...
properties: {
aspect: number
}
}
- 行の高さの基準値(itemHeight)に、各行の比率(rowRation)をかけて、行の高さを決める
- 行の比率(rowRations)の数だけ、行をつくる
- Itemをaspect比をもとに横幅を決めて行に詰めていく
- この繰り返しで、行を表示する
- 各Itemのaspect比は違うので、行の高さのパターンは繰り返しでも違って見える
- これによって、一定の見た目のランダム性、平積み感を出す
npm install
npm start
npm install @babel/cli @babel/core -g
npm run build
lib/以下にブラウザで読めるJavascriptファイルをコンパイルして出力する
npm run compile
The MIT License (MIT)
Copyright (c) 2019 CALIL Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.