Jak uzyskać wysokość i szerokość widoku przeglądarki bez pasków przewijania za pomocą jQuery?
Oto, czego próbowałem do tej pory:
var viewportWidth = $("body").innerWidth();
var viewportHeight = $("body").innerHeight();
To rozwiązanie nie uwzględnia pasków przewijania przeglądarki.
Odpowiedzi:
Więcej informacji
Jednak użycie jQuery nie jest niezbędne do uzyskania tych wartości. Posługiwać się
aby uzyskać rozmiary bez pasków przewijania lub
aby uzyskać całą rzutnię, w tym paski przewijania.
źródło
Nie używaj jQuery, po prostu użyj javascript, aby uzyskać poprawny wynik:
Obejmuje to szerokość / wysokość paska przewijania:
Nie obejmuje to szerokości / wysokości paska przewijania:
źródło
Oto ogólny kod JS, który powinien działać w większości przeglądarek (FF, Cr, IE6 +):
źródło
Używasz złych wywołań metod. Rzutnia to „okno” otwarte w dokumencie: ile go możesz zobaczyć i gdzie.
Użycie
$(window).height()
nie da ci rozmiaru rzutni, ale da ci rozmiar całego okna, który zwykle jest rozmiarem całego dokumentu, chociaż dokument może być jeszcze większy.Aby uzyskać rozmiar rzeczywistego wykorzystania rzutni
window.innerHeight
iwindow.innerWidth
.https://gist.github.com/bohman/1351439
Nie używaj metod jQuery, np.
$(window).innerHeight()
Ponieważ dają one błędne liczby. Podają wysokość okna, a nieinnerHeight
.źródło
window.innerWidth
zwraca szerokość rzutni + szerokość paska przewijania. co mogę zrobić w tej sytuacji?Opis
Poniżej przedstawiono rozmiar obszaru roboczego przeglądarek.
Próba
Więcej informacji
źródło
Jak zasugerował Kyle, możesz w ten sposób zmierzyć rozmiar okna przeglądarki klienta bez uwzględniania rozmiaru pasków przewijania.
Przykład (wymiary rzutni BEZ pasków przewijania)
Alternatywnie, jeśli chcesz znaleźć wymiary rzutni klienta, biorąc pod uwagę rozmiar pasków przewijania, to ta próbka poniżej najlepiej Ci odpowiada.
Najpierw nie zapomnij ustawić tagu body na 100% szerokości i wysokości, aby upewnić się, że pomiar jest dokładny.
Przykład (wymiary rzutni Z paskami przewijania)
źródło
Skrypt
$(window).height()
działa dobrze (pokazuje wysokość widoku, a nie dokument z przewijaną wysokością), ALE wymaga poprawnego umieszczenia tagu doctype w dokumencie, na przykład te typy dokumentów:W przypadku html5:
<!doctype html>
dla przejściowego html4:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Prawdopodobnie domyślny typ dokumentu przyjmowany przez niektóre przeglądarki jest taki, że
$(window).height()
przyjmuje wysokość dokumentu, a nie wysokość przeglądarki. Ze specyfikacją doctype jest to rozwiązane w zadowalający sposób i jestem prawie pewien, że unikniecie "zmiany przepełnienia przewijania na ukryty, a następnie z powrotem", co jest, przepraszam, trochę brudną sztuczką, szczególnie jeśli tego nie zrobisz Udokumentuj to w kodzie do wykorzystania w przyszłości przez programistów.Co więcej, jeśli robisz skrypt, możesz wymyślić testy, które pomogą programistom w twoich bibliotekach, pozwól mi wymyślić kilka:
źródło
źródło
Korzystanie z jQuery ...
$ (document) .height () & $ (window) .height () zwrócą te same wartości ... kluczem jest zresetowanie dopełnienia i marginesów treści, aby nie było przewijania.
Mam nadzieję że to pomoże.
źródło
Chciałem mieć inny wygląd mojej witryny dla szerokiego ekranu i małego ekranu. Zrobiłem 2 pliki CSS. W Javie wybieram, który z 2 plików CSS jest używany w zależności od szerokości ekranu. Używam funkcji PHP
echo
zecho
jakimś javascriptem w -funkcji.mój kod w
<header>
sekcji mojego pliku PHP:źródło