[解決済み] JavaScriptを使用してTwitter Bootstrap 3のレスポンシブブレークポイントを検出する方法は?
質問
現在 の場合、Twitter Bootstrap 3 のレスポンシブブレークポイントは次のとおりです。768px、992px、1200px で、それぞれ小型、中型、大型のデバイスを表しています。
JavaScriptを使用してこれらのブレークポイントを検出するにはどうすればよいですか。
画面が変化したときに発生するすべての関連イベントを、JavaScriptでリッスンしたいと思います。また、画面が小型、中型、大型のデバイス用かどうかを検出できるようにしたいです。
何か既にあるのでしょうか?あなたの提案は何ですか?
どのように解決するのですか?
Edit: このライブラリはBowerとNPMから利用できるようになりました。詳しくはgithub repoをご覧ください。
回答を更新しました。
- ライブの例です。 コードペン
- 最新版です。 Github リポジトリ
- Bootstrapはお嫌いですか?確認してください。 ファンデーションデモ そして カスタムフレームワーク デモ
- 問題がありますか? 問題を開く
免責事項:私は著者です。
最新版(Responsive Bootstrap Toolkit 2.5.0)を使ってできることをいくつか紹介します。
// Wrap everything in an IIFE
(function($, viewport){
// Executes only in XS breakpoint
if( viewport.is('xs') ) {
// ...
}
// Executes in SM, MD and LG breakpoints
if( viewport.is('>=sm') ) {
// ...
}
// Executes in XS and SM breakpoints
if( viewport.is('<md') ) {
// ...
}
// Execute only after document has fully loaded
$(document).ready(function() {
if( viewport.is('xs') ) {
// ...
}
});
// Execute code each time window size changes
$(window).resize(
viewport.changed(function() {
if( viewport.is('xs') ) {
// ...
}
})
);
})(jQuery, ResponsiveBootstrapToolkit);
バージョン 2.3.0 以降では、4 つの
<div>
要素は必要ありません。
オリジナルの回答です。
そのために巨大なスクリプトやライブラリが必要だとは思えません。かなり簡単な作業です。
の直前に以下の要素を挿入します。
</body>
:
<div class="device-xs visible-xs"></div>
<div class="device-sm visible-sm"></div>
<div class="device-md visible-md"></div>
<div class="device-lg visible-lg"></div>
これら4つのdivで、現在アクティブなブレークポイントをチェックすることができます。JSを簡単に検出するためには、以下の関数を使用します。
function isBreakpoint( alias ) {
return $('.device-' + alias).is(':visible');
}
これで、使用できる最小のブレークポイントでのみ、あるアクションを実行するようになりました。
if( isBreakpoint('xs') ) {
$('.someClass').css('property', 'value');
}
DOM ready の後の変化を検出するのも、かなり簡単です。必要なのは、このような軽量なウィンドウ リサイズ リスナーだけです。
var waitForFinalEvent = function () {
var b = {};
return function (c, d, a) {
a || (a = "I am a banana!");
b[a] && clearTimeout(b[a]);
b[a] = setTimeout(c, d)
}
}();
var fullDateString = new Date();
これを装備したら、変更をリッスンし始め、ブレークポイントに特化した関数をこのように実行することができます。
$(window).resize(function () {
waitForFinalEvent(function(){
if( isBreakpoint('xs') ) {
$('.someClass').css('property', 'value');
}
}, 300, fullDateString.getTime())
});
関連
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
vueのグローバルがscss(mixin)を導入。
-
vueにおけるv-forループオブジェクトのプロパティ
-
Vueでルートネスティングを実装する例
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。