liquidly
What is this?
レスポンシブデザインや顧客のディスプレイ幅に頭を悩ませず
ただひたすら デザインカンプ に忠実に
HTMLコーディングすることだけに集中するためのJSモジュールです
How to Install
Option1 : NPM
以下のコマンドでインストールします
npm install liquidly
プロジェクトルートに
liquidly.js
というファイルが生成されるので、自由なディレクトリに配置してお使いください。
Option2 : CDN
あるいは、CDNからお使いください。@以下は可能な限り最新バージョンを指定してください。
<script src="https://unpkg.com/liquidly@0.0.4/dist/index.js"</script>
最新バージョンは https://www.npmjs.com/package/liquidly から確認可能です。
How to use
ヘッドタグ末尾にスクリプトタグを挿入し、初期化関数を呼び出します。
<head>
・
・
・
<script src="/path/to/liquidly.js"></script>
<script>
liquidly.init({
"pcCompSize": "1920",
"spCompSize": "750",
"breakPoint": "768"
})
</script>
</head>
Options
初期化関数liquidly.init
へ渡すオプションは以下を用意しています
プロパティ名 | 初期値 | 説明 |
---|
body | ".lq__body" | ウィンドウ幅に応じて可変する要素 |
elementFixed | ".lq__element--fixed" | 疑似fixed要素 |
pcCompSize | 1920 | PCカンプの幅(px) |
spCompSize | 750 | SPカンプの幅(px) |
breakPoint | 768 | PCカンプ⇔SPカンプ が切り替わるウィンドウ幅 (px) |
fadeinDuration | 200 | htmlのopacity0から1への推移時間(ミリ秒) |
resizeTimeout | 300 | リサイズイベントの発動スパン(ミリ秒)※1 |
scrollEndTimeout | 200 | スクロール終了イベントの発動スパン(ミリ秒)※2 |
delay | 0 | 初期化関数の遅延実行(ミリ秒) |
※1 スクリプティング負荷を押さえるためリサイズイベントを間引きしています
※2 .lq__element--fixed要素は、iPad Safariの慣性スクロールには追従できないため、iPad Safariの時のみ、スクロール開始でopacity:0;pointer-events:none; 終了イベントでopacity:1;pointer-events:auto; としています
Functions
以下の関数を用意しています。グローバルスコープに定義していますので、footer等で読み込んだ他のスクリプト内でも使用可能です。
liquidly.getScale()
@returns float
現在のウィンドウ幅における、PC/SPカンプサイズからの拡大・縮小率を取得します
liquidly.getInvScale()
@returns float
現在のウィンドウ幅における、PC/SPカンプサイズからの拡大・縮小率の逆数を取得します
( 1/getScale() と等価であるが、除算はオーバーヘッドが大きい為、予め関数化)
liquidly.isBreak()
@returns boolean
現在のウィンドウ幅が、ブレイクポイント以下であれば true、ブレイクポイントより大きければ falseを返す
Rules
- ウィンドウ幅に併せて可変する要素
.lq__body
はHTMLソース内のただ1つの要素に適用できます。通常、body
タグ直下のラッパーに指定することを推奨します。
<body>
<div class="lq__body">
・
・
・
</div>
</body>
.lq__body
のリサイズにはCSS transformプロパティを使用しています。
そのため、.lq__body
内ではposition:fixed
やsticky
が無効になります。
fixed要素を置きたい場合は、.lq__body
の外側に置いてください。
<body>
<div class="lq__body">
・
・
・
</div>
<div class="preloader" style="position:fixed;">
</body>
あるいは、header等の追従要素もリサイズ可能にしたい場合は、疑似的なposition:fixed
効果を提供するクラス.lq__element--fixed
を用意しています。
<body>
<div class="lq__body">
<header class="lq__element--fixed"></header>
・
・
</div>
</body>
- ページロード直後、リサイズイベントが発動するまでの数十ミリ秒の間、ページサイズが変わるのを防ぐために、htmlのcssに
opacity:0
を指定しておくことを推奨します。
html{
opacity: 0;
filter: alpha(opacity=0);
}