便利な関数
Framework7のutilsは、内部的に使用されるヘルパーメソッドのセットで、開発中にも便利に使用できます。
これは、Framework7クラスのutils
プロパティ(Framework7.utils
)と、初期化されたアプリのインスタンスの同じプロパティ(app.utils
)として利用できます。
// アプリのインスタンスにアクセスできない場所や、アプリを初期化する前に必要な場合には
var now = Framework7.utils.now();
// アプリを初期化した後は、アプリのインスタンスのプロパティとしてアクセスできます。
var app = new Framework7({ /*...*/ });
var now = app.utils.now();
また、ESモジュールを使ってインポートすることもできます。
import { utils } from 'framework7';
Utilsメソッド
parseUrlQuery()
app.utils.parseUrlQuery(url)- parse url query get parameters
- url - string - GETパラメータを持つURL。必須です。
メソッドは、クエリパラメータを持つオブジェクトを返します。
var query = app.utils.parseUrlQuery('http://google.com/?id=5&foo=bar');
console.log(query); // { id: 5, foo: 'bar' }
serializeObject()
app.utils.serializeObject(object)- Create a serialized representation of a plain object suitable for use in a URL query string
- object - object - シリアライズするオブジェクト。
新しいユニークな配列を返します。
var params = { foo: 'bar', id: 5 };
console.log(app.utils.serializeObject(params)); // 'foo=bar&id=5'
requestAnimationFrame()
app.utils.requestAnimationFrame(callback)- Cross-browser implementation on requestAnimationFrame
- callback - function - 次のリペイントのためにアニメーションを更新するときに呼び出される関数。
アニメーションリクエストのIDを返し、コールバックリストのエントリーを一意に識別します。
var animId;
function anim() {
var left = parseInt($$('#anim').css('left'), 10) + 1;
$$('#anim').css({left: left + 'px'})
animId = app.utils.requestAnimationFrame(anim);
}
animId = app.utils.requestAnimationFrame(anim);
cancelAnimationFrame()
app.utils.cancelAnimationFrame(requestID)- Cancels an animation frame request
- requestID - number - コールバックを要求した app.utils.requestAnimationFrame() のコールによって返された ID 値。
app.utils.cancelAnimationFrame(animId);
nextFrame()
app.utils.nextFrame(callback)- Executes code on next available animation frame.
- callback - string - 次のリペイントのためにアニメーションを更新するときに呼び出される関数です。
app.utils.nextFrame(function() {
// 次のフレームで何かをする
});
nextTick()
app.utils.nextTick(callback, delay)- executes code after required delay. Basically alias for setTimeout
- callback - string - 指定された遅延時間後に呼び出される関数です。
- delay - number - 遅延時間をミリ秒単位で指定します。オプション、デフォルトでは
0
です。
タイムアウトのIDを返します。
app.utils.nextTick(function() {
// 次のティックで何かをする
});
now()
app.utils.now()- returns current timestamp in ms
var now = app.utils.now();
setTimeout(function () {
var timeDiff = app.utils.now() - now;
console.log(timeDiff + 'ms past');
}, 2000);
エクステンド()
app.utils.extend(target, ...from)- extends target
object with properties and methods from from
objects
- target - object - 拡張する対象のオブジェクト。
- from - object - プロパティやメソッドをコピーするオブジェクト。
拡張されたプロパティとメソッドを持つターゲットオブジェクトを返します。
このメソッドは、あるオブジェクトを他のオブジェクトのプロパティで拡張する必要がある場合や、オブジェクトのディープコピーが必要な場合に非常に便利です。
var a = {
apple: 0,
cherry: 97
};
// aをbにコピーするターゲットとして空のオブジェクトを渡す
var b = app.utils.extend({}, a);
console.log(b); // { apple: 0, cherry: 97 }
console.log(a === b); // false
var a = {
apple: 0,
cherry: 97
};
var b = {
banana: 10,
pineapple: 20,
}
// aをbで拡張する
app.utils.extend(a, b);
console.log(a); // { apple: 0, cherry: 97, banana: 10, pineapple: 20 }
var a = {
apple: 0,
cherry: 97
};
var b = {
banana: 10,
pineapple: 20,
}
// aとbのマージから新しいオブジェクトcを作成する。
var c = app.utils.extend({}, a, b);
console.log(c); // { apple: 0, cherry: 97, banana: 10, pineapple: 20 }
var a = {
apple: 0,
cherry: 97
};
var b = {
apple: 10,
pineapple: 20,
}
// aをbで拡張する
app.utils.extend(a, b);
console.log(a); // { apple: 10, cherry: 97, pineapple: 20 }
uniqueNumber()
app.utils.uniqueNumber()- returns unique number, increased by 1 with every call
app.utils.uniqueNumber(); // -> 2
app.utils.uniqueNumber(); // -> 3
app.utils.uniqueNumber(); // -> 4
id()
app.utils.id(mask, map)- generates random ID-like string
- mask - string - IDの文字列マスク、デフォルトでは
xxxxxxxxxx
です。 - map - string - 生成に使用される文字、デフォルトは
0123456789abcdef
です。
ランダムに生成された文字列を返します。
app.utils.id() // -> ffe28ab56e
app.utils.id('xxxx-xxxx-xxxx-xxxx') // -> 1ea3-f127-dc67-627d
app.utils.id('xxxx-xxxx', 'abcd') // -> aabc-ccda
preloaderContent
(プリローダーコンテンツ)
Preloader要素のテーマに関連したコンテンツを含むプロパティがあります。これらのプロパティは、プリローダーを動的に作成する場合に便利です。
app.utils.iosPreloaderContent- contains required preloader inner content (HTML string) for iOS theme
app.utils.mdPreloaderContent- contains required preloader inner content (HTML string) for MD theme
app.utils.auroraPreloaderContent- contains required preloader inner content (HTML string) for Aurora theme
// 現在のアプリのテーマに基づいて動的にメソッドを呼び出す
var preloaderContent = app.utils[app.theme + 'PreloaderContent'];
// 必要なプリローダーのコンテンツを作成する
var myPreloader = '<div class="preloader">' + preloaderContent + '</div>';
// どこかに追加する
$('.something').append(myPreloader);
colorHexToRgb()
app.utils.colorHexToRgb(hexColor)- converts HEX color to RGB color
- hexColor - string - HEX色の文字列。
R, G, B]`の配列を返します。
app.utils.colorHexToRgb('#f00') // -> [255, 0, 0]
colorRgbToHex()
app.utils.colorRgbToHex(R, G, B)- converts RGB color to HEX color
- R - number - 赤の値(0~255)。
- G - 数値 - 緑の値(0~255)。
- B - number - 青の値(0~255)。
HEX色の文字列を返す
app.utils.colorHexToRgb(255, 0, 0) // -> '#ff0000'
colorRgbToHsl()
app.utils.colorRgbToHsl(R, G, B)- converts RGB color to HSL color
- R - 数値 - 赤の値(0~255)。
- G - number - 緑の値(0~255)。
- B - number - 青の値(0 - 255)。
H, S, L]`の配列を返します。
app.utils.colorRgbToHsl(255, 0, 0) // -> [0, 1, 0.5]
カラーHslToRgb()`
app.utils.colorHslToRgb(H, S, L)- converts HSL color to RGB color
- H - 数値 - 色相値(0~360)。
- S - number - 彩度の値(0 - 1
- L - number - 明度の値(0 - 1
R, G, B]`の配列を返します。
app.utils.colorHslToRgb(0, 1, 0.5) // -> [255, 0, 0]
colorHsbToHsl()
app.utils.colorHsbToHsl(H, S, B)- converts HSB(V) color to HSL color
- H - number - 色相値(0 - 360)。
- S - number - 彩度の値(0~1)。
- B - number - 輝度値(0~1)。
H, S, L]`の配列を返します。
app.utils.colorHsbToHsl(360, 0.5, 0.5) // -> [360, 0.33, 0.375]
カラーHslToHsb()`)
app.utils.colorHslToHsb(H, S, L)- converts HSL color to HSB(V) color
- H - number - 色相値(0 - 360)。
- S - number - 彩度の値(0~1)。
- L - number - 明度の値(0 - 1
H, S, B]`の配列を返します。
app.utils.colorHslToHsb(360, 0.5, 0.5) // -> [360, 0.66, 0.75]
colorThemeCSSProperties()
app.utils.colorThemeCSSProperties(hexColor)- returns object with generate CSS variables required to set specified theme color
- hexColor - string - HEX色の文字列。
必要なCSS変数とその値を持つオブジェクトを返します。
app.utils.colorThemeCSSProperties(R, G, B)- returns object with generate CSS variables required to set specified theme color
- R - number - 赤の値。
- G - number - 緑の値
- B - number - 青の値
は、必要なCSS変数とその値を含むオブジェクトを返します。
app.utils.colorThemeCSSProperties('#f00')
/* returns the following object:
{
"--f7-theme-color": "#f00",
"--f7-theme-color-rgb": "255, 0, 0",
"--f7-theme-color-shade": "#d60000",
"--f7-theme-color-tint": "#ff2929"
}
*/
app.utils.colorThemeCSSProperties(255, 0, 0)
/* returns the following object:
{
"--f7-theme-color": "#f00",
"--f7-theme-color-rgb": "255, 0, 0",
"--f7-theme-color-shade": "#d60000",
"--f7-theme-color-tint": "#ff2929"
}
*/