🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

responsiveChange is a jQuery plugin used to execute a Javascript function based on the pre-defined breakpoints as your resize the window.

callback Responsive

Documentation

#jQuery.responsiveChange

設定したブレイクポイントに応じてイベントを発生させるプラグイン

##Demo

http://somy-jp.github.io/jquery-responsive-change/

##Requirement

jQuery 1.4.3+

##Support Browsers

IE 10+, Chrome 9+, Firefox 6+, Safari 5.1+
iOS 5.1+, Android3+
matchMedia() polyfill を読み込みで IE 9, Android2.3に対応可)

##Installation

jQueryの後にプラグインを読み込みます。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="/path/to/jquery.responsiveChange.js"></script>

matchMedia() polyfillを使用する場合はプラグインよりも前に読み込みます。

<script src="/path/to/matchMedia.js"></script> <script src="/path/to/matchMedia.addListener.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="/path/to/jquery.responsiveChange.js"></script>

##Usage

###$.responsiveChange(options)

各プレイクポイント名と横幅を対にし、単位を設定します。

$.responsiveChange({ 	breakpoints: { sp:480, pb:768, tb:1024, pc:'none' }, 	unit: 'px' });

##Options

初期値 説明
breakpoints Object {
  sp:480,
  pb:768,
  tb:1024,
  pc:'none'
}
ブレイクポイント名と幅を対で設定します。
最後のブレイクポイントは 'none' を指定します。
unit String 'px' 幅の単位

##Methods

###$element.responsiveChange(breakpointName, callbacks)

ブレイクポイント変更時に要素でイベントを取得したい場合には、
第一引数にブレイクポイント名を設定し、第二引数にコールバックを指定します。

$('div').responsiveChange('tb', { 	enter: function() {} });

複数のブレイクポイント間でイベントを設定したい場合は、ブレイクポイント名をハイフンで繋ぎます。
以下の場合、sp から tb までの範囲のイベントを設定しています。

$('div').responsiveChange('sp-tb', callbacks);

###$element.responsiveChange(mediaQuery, callbacks)

直接メディアクエリを指定することも出来ます。
この場合 $.responsiveChange(options) での設定は無視されます。

$('div').responsiveChange('only screen and (min-width:321px) and (max-width:480px)', callbacks);

###$element.responsiveChange(breakpointName or mediaQuery, 'destroy')

ブレイクポイントに設定されたイベントを破棄します。

$('div').responsiveChange('sp', 'destroy');

##Callbacks

コールバックは第二引数にオブジェクト形式で指定します。

$('div').responsiveChange('tb', { 	once: function() { 		//ブレイクポイント範囲内になった時、一度だけ発生 	}, 	enter: function() { 		//ブレイクポイント範囲内になる度に発生 	}, 	resize: function() { 		//ブレイクポイント範囲内でウィンドウがリサイズされる度に発生 	}, 	exit: function() { 		//ブレイクポイント範囲から外れる度に発生 	} });
初期値 説明
once Function null ブレイクポイント内になった時、一度だけ発生
enter Function null ブレイクポイント内になる度に発生
resize Function null ブレイクポイント内でウィンドウがリサイズされる度に発生
exit Function null ブレイクポイントから外れる度に発生
delay.once Number 0 once の発生を指定ミリ秒遅らせる
delay.enter Number 0 enter の発生を指定ミリ秒遅らせる
delay.resize Number 0 resize の発生を指定ミリ秒遅らせる
delay.exit Number 0 exit の発生を指定ミリ秒遅らせる

ブレイクポイント範囲に入った時は、once -> enter -> resize の順番でイベントが発生します。範囲外になった時は、 exit のみイベントが発生します。

once イベント発生後の enter イベントで処理を分けたい場合は、 Callback arguments で判別します。

##Callback arguments

コールバックの引数に以下の値があります。

説明
options $.responsiveChange(options) で設定した options
isAfterOnce once 発生後にイベントが発生した場合に true
isAfterEnter enter 発生後にイベントが発生した場合に true
breakpoint.max ブレイクポイント範囲の最大値
breakpoint.min ブレイクポイント範囲の最小値
breakpoint.name ブレイクポイント名
mediaQuery ブレイクポイントで設定されているメディアクエリ

onceAfter enterAfter を使って処理を分ける例

$('div').responsiveChange('tb', { 	once: function() { 		//一度だけ発生の処理 		console.log('once tb'); 	}, 	enter: function(e) { 		if (e.isAfterOnce) return; //once発生後の場合処理キャンセル 		console.log('enter tb'); 	}, 	resize: function(e) { 		if (e.isAfterEnter) return; //enter発生後の場合処理キャンセル 		console.log('resize tb'); 	} });

License

Licensed under the MIT License.
Copyright © 2014 Keisuke Kasai@somy-jp


You May Also Like