화면 너비가 960 픽셀 미만인 경우 수행


221

화면 너비가 960 픽셀 미만인 경우 jQuery에서 어떤 작업을 수행 할 수 있습니까? 아래 코드는 내 창 크기에 관계없이 항상 두 번째 경고를 발생시킵니다.

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

    alert('More than 960');
}

1
페이지를로드 할 때 또는 브라우저의 크기를 조정할 때이 작업을 수행하고 있습니까? 결정에 사용 된 내용을 보려면 alert (screen.width)라고 말하는 것이 좋습니다.
Farrukh Subhani

1
미디어 쿼리가 아닌가?
bzlm

3
미디어 쿼리가 아닌 이유는 무엇입니까? 미디어 쿼리가 도움이되지 않는 경우를 생각할 수 있습니다. 만약 jdln이 jQuery를 사용하기를 원한다면, 그럴만한 이유가 있다고 가정하자.
Luke

미디어 쿼리가 작동하지 않는 경우, 예를 들어 화면 너비가 1000 픽셀보다 큰 경우에만 벽돌 효과를 활성화하는 용도로 사용됩니다.
Pekka

답변:


449

jQuery를 사용하여 창의 너비를 얻으십시오.

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

11
스크롤 막대가 표시되면 $ (window) .width ()가 브라우저에서 일관되지 않습니다. Javascript 미디어 쿼리 를 사용하는 것이 훨씬 안정적이라는 것을 알았습니다.
forsvunnet

9
@forsvunnet 링크가 죽었습니다.
Shah Abaz Khan

2
자바 스크립트 미디어 쿼리에 대한 링크 : w3schools.com/howto/howto_js_media_queries.asp
Timar에게 이보 Batis

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 플래그를 사용했습니다.


크기 조정 이벤트를 래핑하면로드가 아닌 크기 조정시에만 실행됩니다.
Ted

5
@ 테드 그래서 내가 말한 이유 combine it with입니다.
jk.

1
@RJ 위의 수정 사항을 참조하십시오. 이벤트를 '클리어'한다는 것이 무슨 의미인지 잘 모르겠으므로 이벤트가 다시 발생하지 않도록했습니다.
jk.

1
환상적인, 나는 equalHeights크기 조정시 768보다 큰 폭에 대해서만 함수 를 바인딩하는 방법을 며칠 동안 알아 내려고 노력했습니다 . 이것은 매력처럼 작동합니다. 감사합니다
Danny Englander

1
이 때문에, 그 코드 후 resize 이벤트를 추가하는 의미가 그 브라우저의 현재 크기가 그 다음 필요한 코드 실행 무엇이든 부하에
BennKingy

16

그런 일에 jQuery를 사용하지 말고 계속 진행하십시오 window.innerWidth.

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

1
왜 jQuery를 사용하지 않는 것이 좋을까요?
raison

1
@ raison $ (window) .width ()에는 스크롤 막대가 포함되어 있지 않으므로 960px의 secreen이 있으면 944px가 반환되고 js가 의도 한대로 실행되지 않습니다. 이 솔루션은 960px를 반환합니다
Sean T

14

자바 스크립트로 미디어 쿼리를 사용할 수도 있습니다.

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 with : 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

내가 서둘러서 미안해! 잠깐만 요, 지금하고 있어요 ...
Saurav Chaudhary

screen.width ( document.body.clientWidth바닐라 JS를 사용 하는 경우 가장 잘 캡처 됨 )가 <= 960 (여기서는 if 문을 의미 함) 인 경우 유일한 옵션 (ELSE는 screen.width> 960)이므로 여기서 중복되는 경우 else를 사용하십시오. 사용 document.body.clientWidth <=960 ? handleSmallerThan960() : handleLargerThan960()또는 일부 변형. 다른 경우 필요 없음 (중복 코드)
Zargold
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.