Skip to content
/ hiradumi Public

アスペクト比を維持して幅ぴったりにレイアウトするReactコンポーネント

Notifications You must be signed in to change notification settings

CALIL/hiradumi

Repository files navigation

hiradumi

アスペクト比を維持して幅ぴったりにレイアウトするReactコンポーネント

主な特徴

  • 幅にぴったり合わせたレイアウト
  • アスペクト比の違う領域でも組み合わせて配置可能
  • 横幅の変化に合わせてレイアウトを自動変更

デモ

https://calil.github.io/hiradumi/

実装サンプル

https://github.com/CALIL/hiradumi/tree/master/example

利用方法

インストール

npm install github:CALIL/hiradumi#master

概念

  • Hiradumi 領域全体
    • Row 1行
      • Item 表示するアイテム

利用ライブラリ

大量のデータ表示のためにreact-windowVariableSizeListを利用

プロパティ

プロパティ 説明
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

npm compile

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.

About

アスペクト比を維持して幅ぴったりにレイアウトするReactコンポーネント

Resources

Stars

Watchers

Forks

Packages

No packages published