画面の幅が960ピクセル未満の場合に何かを行う


221

画面の幅が960ピクセル未満の場合、jQueryで何かを実行するにはどうすればよいですか?以下のコードは、ウィンドウサイズに関係なく、常に2番目のアラートを発生させます。

if (screen.width < 960) {
    alert('Less than 960');
}
else {

    alert('More than 960');
}

1
これは、ページの読み込み時に行うのですか、それともブラウザのサイズを変更するときに行いますか。何が決定に使用されたかを確認するために、alert(screen.width)と言うのは常に良い考えです。
Farrukh Subhani、2011年

1
なぜメディアクエリではないのですか?
bzlm

3
なぜメディアクエリではないのですか?メディアクエリがまったく役に立たないケースはいくつも考えられます。jdlnがjQueryを使用したい場合は、使用する十分な理由があると仮定しましょう。
ルーク

メディアのクエリが機能しない場合、たとえば画面幅が1000ピクセルよりも大きい場合にのみ石造効果をアクティブにするなど、さまざまな用途があります。
Pekka

回答:


449

jQueryを使用してウィンドウの幅を取得します。

if ($(window).width() < 960) {
   alert('Less than 960');
}
else {
   alert('More than 960');
}

11
スクロールバーが表示されている場合、$(window).width()はブラウザー間で一貫していません。JavaScriptメディアクエリを使用する方がはるかに信頼性が高いことがわかりました。
forsvunnet 2013

9
@forsvunnetそのリンクは死んでいる。
Shah Abaz Khan

2
JavaScriptメディアクエリへのリンク:w3schools.com/howto/howto_js_media_queries.asp
Ivo

137

あなたはそれをサイズ変更イベントと組み合わせることができます:

 $(window).resize(function() {
  if ($(window).width() < 960) {
     alert('Less than 960');
  }
 else {
    alert('More than 960');
 }
});

RJの場合:

var eventFired = 0;

if ($(window).width() < 960) {
    alert('Less than 960');

}
else {
    alert('More than 960');
    eventFired = 1;
}

$(window).on('resize', function() {
    if (!eventFired) {
        if ($(window).width() < 960) {
            alert('Less than 960 resize');
        } else {
            alert('More than 960 resize');
        }
    }
});

http://api.jquery.com/off/を試しても成功しなかったので、eventFiredフラグを使用しました。


resizeイベントをラップすると、ロード時ではなく、サイズ変更時にのみ発生します。
テッド

5
@テッドそれが私が言っcombine it withた理由です。
jk。

1
@RJは上記の編集を参照してください。イベントを「クリア」することの意味がわからないので、イベントが再度発生しないようにしました。
jk。

1
素晴らしい、私は何週間もequalHeightsリサイズ時に関数をバインドする方法を見つけようとしましたが、幅が768より大きい場合のみです。これは魅力のように機能します。おかげで
ダニーイングランド人

1
そのコードの後に​​サイズ変更イベントを追加して、現在のブラウザーのサイズが何であれ、必要なコードを実行できるようにするのは
理にかなってい

16

私はそのようなことのためにjQueryを使用せずに続行することをお勧めしますwindow.innerWidth

if (window.innerWidth < 960) {
    doSomething();
}

1
なぜjQueryを使わない方がいいのですか?
存在理由

1
@raison $(window).width()にスクロールバーが含まれていないことがわかりました。つまり、960pxの秘密鍵がある場合、944pxが返され、意図したとおりにjsが起動しません。このソリューションは960pxを返します
Sean T

14

JavaScriptでメディアクエリを使用することもできます。

const mq = window.matchMedia( "(min-width: 960px)" );

if (mq.matches) {
       alert("window width >= 960px");
} else {
     alert("window width < 960px");
}

11

私はお勧めします(jQueryが必要です):

/*
 * windowSize
 * call this function to get windowSize any time
 */
function windowSize() {
  windowHeight = window.innerHeight ? window.innerHeight : $(window).height();
  windowWidth = window.innerWidth ? window.innerWidth : $(window).width();

}

//Init Function of init it wherever you like...
windowSize();

// For example, get window size on window resize
$(window).resize(function() {
  windowSize();
  console.log('width is :', windowWidth, 'Height is :', windowHeight);
  if (windowWidth < 768) {
    console.log('width is under 768px !');
  }
});

CodePenに追加:http ://codepen.io/moabi/pen/QNRqpY?editors=0011

次に、var:windowWidthおよびHeight:windowHeightを使用してウィンドウの幅を簡単に取得できます。

それ以外の場合は、jsライブラリを取得します。http//wicky.nillia.ms/enquire.js/


11
// Adds and removes body class depending on screen width.
function screenClass() {
    if($(window).innerWidth() > 960) {
        $('body').addClass('big-screen').removeClass('small-screen');
    } else {
        $('body').addClass('small-screen').removeClass('big-screen');
    }
}

// Fire.
screenClass();

// And recheck when window gets resized.
$(window).bind('resize',function(){
    screenClass();
});

9

使用する

$(window).width()

または

$(document).width()

または

$('body').width()

8

私はこれに答えるのが遅いことを知っていますが、同様の問題を抱えている人に役立つことを願っています。また、何らかの理由でページが更新されたときにも機能します。

$(document).ready(function(){

if ($(window).width() < 960 && $(window).load()) {
        $("#up").hide();
    }

    if($(window).load()){
        if ($(window).width() < 960) {
        $("#up").hide();
        }
    }

$(window).resize(function() {
    if ($(window).width() < 960 && $(window).load()) {
        $("#up").hide();
    }
    else{
        $("#up").show();
    }

    if($(window).load()){
        if ($(window).width() < 960) {
        $("#up").hide();
        }
    }
    else{
        $("#up").show();
    }

});});

1

このコードを試してください

if ($(window).width() < 960) {
 alert('width is less than 960px');
}
else {
 alert('More than 960');
}

   if ($(window).width() < 960) {
     alert('width is less than 960px');
    }
    else {
     alert('More than 960');
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


-8

いいえ、これは機能しません。必要なのはこれです!!!

これを試して:

if (screen.width <= 960) {
  alert('Less than 960');
} else if (screen.width >960) {
  alert('More than 960');
}

3
リンクの投稿は答えではありません。
nedaRM 2013

ちょっと慌ててすみませんでした!ちょっと待って、私は今それをやっています...
Saurav Chaudhary 2013

screen.width(document.body.clientWidthvanilla JSを使用する場合に最もよくキャプチャされる)が960(ifステートメントをここで意味する)である場合、他の唯一のオプション(ELSEはscreen.width> 960)であることに注意してください。使用document.body.clientWidth <=960 ? handleSmallerThan960() : handleLargerThan960()またはいくつかのバリアント。else if(冗長コード)は
不要
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.