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.