$(window).width()
restituisce la larghezza delle window
oggetto esclusi barre di scorrimento (altrimenti noto come la larghezza finestra). A seconda del sistema operativo e del browser, la barra di scorrimento verticale può spesso sottrarre dalla larghezza della finestra. Ciò significa che devi chiamare questa funzione una volta che tutti i tuoi contenuti sono stati caricati e dovrai chiamarlo di nuovo se il contenuto cambia.
L'inserimento di questa funzione nella funzione $.ready()
non garantisce che si otterrà la larghezza corretta rispetto al contenuto della pagina finale. Questo perché $.ready
si attiva quando il DOM viene caricato, ma potrebbero ancora esserci immagini/caratteri che possono influenzare il layout. È molto probabile che una barra di scorrimento possa essere aggiunta dopo chiami $.ready()
. La soluzione più semplice a questo problema è inserire la chiamata all'interno della funzione $(window).load()
, poiché si attiva quando tutto il contenuto è stato caricato e non c'è più nulla da eseguire.
In generale, è una buona idea impostare la larghezza su DOM ready, caricamento della finestra, ridimensionamento della finestra e ogni volta che il contenuto cambia. Questo può essere fatto in questo modo:
$(function() {
var window_width;
function set_window_width() {
window_width = $(window).width();
// do something with window_width
}
set_window_width(); // set width on DOM ready
$(window).on('load resize', set_window_width); // set width on window load and resize
function custom_load_content() {
// load/change content
set_window_width();
}
});
La maggior parte (se non tutti) del tempo, la larghezza viewport è ciò che si desidera. Probabilmente stai usando la larghezza per eseguire alcuni calcoli e/o ridimensionare alcuni elementi, e questo dovrebbe sempre essere relativo al viewport, perché il tuo CSS è relativo al viewport. Ma, se per qualche motivo si desidera ottenere la larghezza comprese le barre di scorrimento, è possibile utilizzare invece window.innerWidth
(source).
fonte
2015-07-16 04:28:04
tutti i codici all'interno di $ (function() {}) ;? –
Includere questo in un blocco '$ (document) .ready() 'potrebbe fare il trucco se la larghezza è ancora in flusso finché il DOM non è completamente caricato. Se c'è del contenuto all'interno del DOM che fa cambiare la larghezza, puoi provare '$ (window) .load()' pure –
Fino a quando l'evento window.load o document.ready non viene attivato, la progettazione potrebbe cambiare. Anche i CSS potrebbero influenzare durante il disegno della pagina. Quindi aspetta sempre che la pagina sia completa. Preferisco window.load a calcoli di dimensioni. documento.pronto ancora potrebbe essere troppo presto come ho sperimentato molte volte, ad esempio il caricamento di caratteri, immagini, altre risorse parallele in background. –