Ekran genişliği 960 pikselden küçükse bir şey yapın


222

Ekran genişliğim 960 pikselden azsa jQuery'nin bir şey yapmasını nasıl sağlayabilirim? Aşağıdaki kod, pencere boyutumdan bağımsız olarak her zaman 2. uyarıyı tetikler:

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

    alert('More than 960');
}

1
Bunu sayfa yüklendiğinde mi yapıyorsunuz yoksa tarayıcıyı yeniden boyutlandırdığınızda mı yapıyorsunuz? Karar vermek için neyin kullanıldığını görmek için uyarı (screen.width) demek her zaman iyi bir fikirdir.
Farrukh Subhani

1
Medya sorguları neden olmasın ?
bzlm

3
Medya sorguları neden olmasın? Medya sorgularının hiçbir şekilde yardımcı olmayacağı birçok durumu düşünebilirim. Eğer jdln jQuery kullanmak istiyorsa, bunun için iyi bir nedeni olduğunu varsayalım.
Luke

Bunun için medya sorgularının çalışmadığı birçok kullanım vardır, örneğin bir duvar efektini yalnızca ekran genişliği örneğin 1000 pikselden büyükse etkinleştirmek için.
Pekka

Yanıtlar:


451

Pencerenin genişliğini almak için jQuery kullanın.

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

11
Kaydırma çubuğu görünürse $ (window) .width () işlevinin tarayıcılar arasında tutarlı olmadığını unutmayın. Javascript medya sorguları kullanmanın çok daha güvenilir olduğunu gördüm .
forsvunnet

9
@forsvunnet Bu bağlantı öldü.
Şah Abaz Han

2
Javascript medya sorgularına bağlantı: w3schools.com/howto/howto_js_media_queries.asp
Timar Ivo Batis

138

Bir yeniden boyutlandırma etkinliğiyle birleştirmek isteyebilirsiniz:

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

RJ için:

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

Ben http://api.jquery.com/off/ denedim , bu yüzden eventFired bayrağı ile gittim.


Yeniden boyutlandırma olayında kaydırma, yükte değil yeniden boyutlandırmada tetiklenmesini sağlar.
Ted

5
@Ted Bu yüzden dedim combine it with.
jk.

1
@RJ yukarıdaki düzenlemelere bakınız. Bir etkinliği 'temizle' ile ne demek istediğini bilmiyorum, bu yüzden etkinliğin tekrar tetiklenmesini önledim.
jk.

1
Fantastik, equalHeightsyeniden boyutlandırma üzerinde bir işlevi nasıl bağlayacağımı günlerce anlamaya çalışıyorum ama sadece 768'den büyük genişlikler için. Bu bir cazibe gibi çalışıyor. Teşekkürler
Danny Englander

1
Bu koddan sonra bir yeniden boyutlandırma etkinliği eklemek mantıklıdır, böylece tarayıcının mevcut boyutu ne olursa olsun yükte gerekli kodu çalıştıracaktır
BennKingy

16

Böyle bir şey için jQuery kullanmamanızı ve devam etmemenizi öneririm window.innerWidth:

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

1
neden jQuery kullanmamak daha iyi?
raison

1
@raison $ (window) .width () öğesinin kaydırma çubukları içermediğini görüyorum - bu nedenle 960px'lik bir ekranınız varsa, 944px döndürür ve js'niz istendiği gibi tetiklenmez. Bu çözüm 960px döndürür
Sean T

14

Javascript ile bir medya sorgusu da kullanabilirsiniz.

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

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

11

Ben önermek (jQuery gerekli):

/*
 * 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'de eklendi: http://codepen.io/moabi/pen/QNRqpY?editors=0011

Ardından var: windowWidth ve Height ile pencere genişliğini kolayca alabilirsiniz: windowHeight

aksi takdirde bir js kütüphanesi edinin : 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

kullanım

$(window).width()

veya

$(document).width()

veya

$('body').width()

8

Bunu cevaplamak için geç kaldığımı biliyorum, ama umarım benzer sorunu olan herkese yardımcı olur. Sayfa herhangi bir nedenle yenilendiğinde de çalışır.

$(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

Bu kodu deneyin

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

hayır, bunların hiçbiri işe yaramayacak. İhtiyacınız olan şey bu !!!

Bunu dene:

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

3
Bağlantı yayınlamak bir cevap değildir.
nedaRM

Acelem var için üzgünüm! Bir dakika, şu anda yapıyorum ...
Saurav Chaudhary

screen.width ( document.body.clientWidthvanilla JS kullanıldığında en iyi yakalanan ) <= 960 (burada if ifadesi anlamına gelir) ise, diğer tek seçeneğin (ELSE screen.width> 960) olup olmadığını unutmayın; bu nedenle burada yedek varsa. document.body.clientWidth <=960 ? handleSmallerThan960() : handleLargerThan960()veya bir varyant kullanın . Gerekirse başka gerek yok (yedek kod)
Zargold
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.