2011-10-10 12 views
154

Come faccio a fare jQuery qualcosa se la mia larghezza dello schermo è inferiore a 960 pixel? Il codice di seguito sempre spara il 2 ° avviso, indipendentemente dalla mia dimensione della finestra:Fai qualcosa se la larghezza dello schermo è inferiore a 960 px

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

    alert('More than 960'); 
} 
+1

Lo stai facendo quando la pagina viene caricata o quando ridimensiona il browser. È sempre una buona idea dire alert (screen.width) per vedere cosa è stato usato per decidere. –

+1

Perché non [media query] (http://www.css3.info/preview/media-queries/)? – bzlm

+3

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

risposta

325

utilizzare jQuery per ottenere la larghezza della finestra.

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

Si noti che $ (window) .width() non è coerente tra i browser se la barra di scorrimento è visibile. Ho scoperto che l'utilizzo di [javascript media query] (https://github.com/eddiemachado/bones/issues/468#issuecomment-23626238) è molto più affidabile. – forsvunnet

5

uso

$(window).width() 

o

$(document).width() 

o

$('body').width() 
112

Si potrebbe desiderare di combinarlo con un evento di ridimensionamento:

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

Per R.J .:

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 cercato http://api.jquery.com/off/ senza successo così sono andato con la bandiera eventFired.

+0

L'avvolgimento nell'evento di ridimensionamento lo fa solo sparare sul ridimensionamento, non sul carico. – Ted

+5

@Ted Ecco perché ho detto "combinalo con". –

+0

Ehi, ti dispiacerebbe spiegare come andrei a combinare questo evento di ridimensionamento? Ho una funzione che vorrei caricare solo se il browser ha una larghezza superiore a 960px, indipendentemente dal fatto che fosse la dimensione della finestra sul caricamento iniziale della pagina o prima/dopo il ridimensionamento. Se aggiungo questo frammento dopo il primo rilevamento della larghezza della finestra, la funzione sarà già caricata se l'utente inizia con una larghezza del browser maggiore di 960 px e quindi ridimensiona. Potrebbe essere possibile cancellare una funzione già attivata se il browser viene ridimensionato a una larghezza inferiore a 960 px? –

-8

no, non funzionerà. Quello che vi serve è this!!!

Prova questa:

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

+0

mi dispiace per il fatto che ero un po 'di fretta! Aspetta un attimo, lo sto facendo adesso ... –

8

Vorrei suggerire (jQuery necessario):

/* 
* 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

allora si può ottenere facilmente la finestra di larghezza con var: windowWidth e Altezza con: windowHeight

in caso contrario, ottenere una libreria js: http://wicky.nillia.ms/enquire.js/

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

So di essere in ritardo per rispondere a questo, ma spero che sia di qualche aiuto a tutti coloro che hanno 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(); 
    } 

});}); 
0

provare 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>

1

È inoltre possibile utilizzare una media query con javascript.

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

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

funziona con [ie11] (https://caniuse.com/#feat=matchmedia) –

Problemi correlati