Зробіть щось, якщо ширина екрана менше 960 пікселів


221

Як змусити jQuery щось робити, якщо ширина мого екрана менше 960 пікселів? Код нижче завжди викликає друге попередження, незалежно від розміру мого вікна:

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

    alert('More than 960');
}

1
Ви робите це під час завантаження сторінки чи зміни розміру браузера. Завжди корисно сказати попередження (ширина екрана), щоб побачити, що було використано для вирішення.
Фаррух Субхані

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

9
@forsvunnet Це посилання мертве.
Шах Абаз Хан

2
Посилання на медіа-запити javascript: w3schools.com/howto/howto_js_media_queries.asp
Ivo 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/, не маючи успіху, тому я пішов з прапором "Постріл".


Обгортання події зміни розміру лише робить його вогнем на розмір, а не на навантаження.
Тед

5
@ Ted Тому я сказав combine it with.
jk.

1
@RJ див. Правки вище. Я не знаю, що ви маєте на увазі під «очищенням» події, тому я перешкоджав повторній стрільбі.
jk.

1
Фантастично, я днями намагався розібратися, як зв’язати equalHeightsфункцію за розміром, але лише з шириною більше 768. Це працює як шарм. Спасибі
Danny Englander

1
Є сенс додати порядок зміни розміру після цього коду, щоб після завантаження незалежно від поточного розміру браузера він запустив необхідний код
BennKingy

16

Я рекомендую не використовувати jQuery для подібних дій і продовжувати window.innerWidth:

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

1
чому краще не використовувати jQuery?
raison

1
@raison Я вважаю, що $ (window) .width () не буде включати смуги прокрутки - тому, якщо у вас є екран 960px, він поверне 944px, і ваш js не запуститься за призначенням. це рішення поверне 960 пікселів
Шон Т

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 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();
});


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

Вибачте, що я поспішав! Зачекайте хвилинку, я зараз це роблю ...
Саурав Чадхарі

будь ласка, зверніть увагу, якщо screen.width (найкраще зафіксовано, document.body.clientWidthякщо використовується ванільний JS), становить <= 960 (мається на увазі тут заява if), то єдиний інший варіант (ELSE є screen.width> 960), тому використовуйте else, якщо тут зайвий. використання document.body.clientWidth <=960 ? handleSmallerThan960() : handleLargerThan960()або якийсь варіант. НЕ потрібно інше, якщо (зайвий код)
Заргольд,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.