Fai qualcosa se la larghezza dello schermo è inferiore a 960 px


221

Come posso fare jQuery fare qualcosa se la mia larghezza dello schermo è inferiore a 960 pixel? Il codice seguente genera sempre il secondo avviso, indipendentemente dalle dimensioni della mia finestra:

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

    alert('More than 960');
}

1
Stai facendo questo quando la pagina viene caricata o è quando si ridimensiona il browser. È sempre una buona idea dire allerta (screen.width) per vedere cosa è stato usato per decidere.
Farrukh Subhani,

1
Perché non le query multimediali ?
bzlm,

3
Perché non le query multimediali? Posso pensare a un numero qualsiasi di casi in cui le domande dei media non sarebbero di alcun aiuto. Se jdln vuole usare jQuery, supponiamo che abbia buone ragioni per farlo.
Luca,

Ci sono molti usi per questo in cui le query multimediali non funzionano, ad esempio per attivare un effetto di muratura solo se la larghezza dello schermo è maggiore, per esempio, di 1000 pixel.
Pekka,

Risposte:


449

Usa jQuery per ottenere la larghezza della finestra.

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

11
Si noti che $ (finestra) .width () non è coerente tra i browser se la barra di scorrimento è visibile. Ho scoperto che l'utilizzo di query multimediali javascript è molto più affidabile.
forsvunnet,

9
@forsvunnet Quel link è morto.
Shah Abaz Khan,

2
Un collegamento alle query multimediali javascript: w3schools.com/howto/howto_js_media_queries.asp
Timar Ivo Batis

137

Potresti voler combinarlo con un evento di ridimensionamento:

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

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

Ho provato http://api.jquery.com/off/ senza successo, quindi sono andato con la bandiera eventFired.


L'avvolgimento nell'evento di ridimensionamento lo attiva solo al ridimensionamento, non al caricamento.
Ted

5
@Ted Ecco perché ho detto combine it with.
jk.

1
@RJ vedi le modifiche sopra. Non so cosa intendi con "cancella" un evento, quindi ho deciso di impedire che l'evento si attivi nuovamente.
jk.

1
Fantastico, ho cercato per giorni di capire come legare una equalHeightsfunzione al ridimensionamento ma per larghezze superiori a 768. Funziona come un incantesimo. Grazie
Danny Englander,

1
Ha senso aggiungere un evento di ridimensionamento dopo quel codice, in modo che al caricamento, qualunque sia la dimensione corrente del browser, eseguirà il codice necessario
BennKingy,

16

Consiglio di non usare jQuery per tale cosa e procedere con window.innerWidth:

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

1
perché meglio non usare jQuery?
raison

1
@raison Trovo che $ (window) .width () non includerà le barre di scorrimento - quindi se hai una schermata di 960px, restituirà 944px e il tuo js non funzionerà come previsto. questa soluzione restituirà 960 px
Sean T

14

Puoi anche utilizzare una query multimediale con javascript.

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

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

11

Vorrei suggerire (necessario 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 !');
  }
});

Aggiunto in CodePen: http://codepen.io/moabi/pen/QNRqpY?editors=0011

Quindi puoi ottenere facilmente la larghezza della finestra con var: windowWidth e Height con: windowHeight

altrimenti, ottenere una libreria 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

uso

$(window).width()

o

$(document).width()

o

$('body').width()

8

So che sono in ritardo per rispondere a questa domanda, ma spero che sia di aiuto a chiunque abbia problemi simili. Funziona anche quando la pagina si aggiorna per qualsiasi motivo.

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

Prova questo codice

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

no, niente di tutto questo funzionerà. Quello di cui hai bisogno è questo !!!

Prova questo:

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

3
La pubblicazione di un collegamento non è una risposta.
nedaRM,

mi dispiace che ero un po 'di fretta! Aspetta un attimo, lo sto facendo proprio ora ...
Saurav Chaudhary,

si prega di notare se screen.width (meglio catturato document.body.clientWidthse si utilizza JS vanilla) è <= 960 (che significa l'istruzione if qui), quindi l'unica altra opzione (ELSE è screen.width> 960) quindi utilizzare else se qui è ridondante. usare document.body.clientWidth <=960 ? handleSmallerThan960() : handleLargerThan960()o qualche variante.
NESSUN'altra
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.