Wie erhalte ich mit jQuery die Höhe und Breite des Browser-Ansichtsfensters ohne Bildlaufleisten?
Folgendes habe ich bisher versucht:
var viewportWidth = $("body").innerWidth();
var viewportHeight = $("body").innerHeight();
Diese Lösung berücksichtigt nicht die Browser-Bildlaufleisten.
Antworten:
Mehr Info
Die Verwendung von jQuery ist jedoch nicht unbedingt erforderlich, um diese Werte abzurufen. Verwenden
um Größen ohne Bildlaufleisten zu erhalten, oder
um das gesamte Ansichtsfenster einschließlich der Bildlaufleisten abzurufen.
quelle
Verwenden Sie nicht jQuery, sondern nur Javascript, um das richtige Ergebnis zu erzielen:
Dies beinhaltet die Breite / Höhe der Bildlaufleiste:
Dies schließt die Breite / Höhe der Bildlaufleiste aus:
quelle
Hier ist ein generisches JS, das in den meisten Browsern (FF, Cr, IE6 +) funktionieren sollte:
quelle
Sie verwenden die falschen Methodenaufrufe. Ein Ansichtsfenster ist das "Fenster", das im Dokument geöffnet ist: Wie viel davon können Sie sehen und wo.
Wenn
$(window).height()
Sie verwenden, erhalten Sie nicht die Größe des Ansichtsfensters, sondern die Größe des gesamten Fensters. Dies entspricht normalerweise der Größe des gesamten Dokuments, obwohl das Dokument möglicherweise noch größer ist.Um die Größe des tatsächlichen Ansichtsfensters zu ermitteln, verwenden Sie
window.innerHeight
undwindow.innerWidth
.https://gist.github.com/bohman/1351439
Verwenden Sie beispielsweise nicht die jQuery-Methoden
$(window).innerHeight()
, da diese die falschen Zahlen angeben. Sie geben Ihnen die Höhe des Fensters, nichtinnerHeight
.quelle
window.innerWidth
die Breite des Ansichtsfensters + die Breite der Bildlaufleiste zurückgegeben. Was kann ich in dieser Situation tun?Beschreibung
Im Folgenden wird die Größe des Browser-Ansichtsfensters angegeben.
Stichprobe
Mehr Informationen
quelle
Wie Kyle vorgeschlagen hat, können Sie die Größe des Client-Browser-Ansichtsfensters messen, ohne die Größe der Bildlaufleisten auf diese Weise zu berücksichtigen.
Beispiel (Abmessungen des Ansichtsfensters OHNE Bildlaufleisten)
Wenn Sie alternativ die Abmessungen des Client-Ansichtsfensters unter Berücksichtigung der Größe der Bildlaufleisten ermitteln möchten, ist dieses Beispiel unten am besten für Sie geeignet.
Vergessen Sie zunächst nicht, Ihr Body-Tag auf 100% Breite und Höhe einzustellen, um sicherzustellen, dass die Messung genau ist.
Beispiel (Abmessungen des Ansichtsfensters MIT Bildlaufleisten)
quelle
Das Skript
$(window).height()
funktioniert gut (zeigt die Höhe des Ansichtsfensters und nicht das Dokument mit Bildlaufhöhe an), ABER es erfordert, dass Sie das Doctype-Tag korrekt in Ihr Dokument einfügen, zum Beispiel diese Doctypes:Für HTML5:
<!doctype html>
für Übergangs-HTML4:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Wahrscheinlich ist der von einigen Browsern angenommene Standard-Doctype ein solcher,
$(window).height()
der die Höhe des Dokuments und nicht die Höhe des Browsers verwendet. Mit der Doctype-Spezifikation ist sie zufriedenstellend gelöst, und ich bin mir ziemlich sicher, dass Sie Peps vermeiden werden, den "Scroll-Overflow in versteckt und dann zurück zu ändern", was leider ein etwas schmutziger Trick ist, besonders wenn Sie es nicht tun. t Dokumentieren Sie es im Code für die zukünftige Verwendung durch den Programmierer.Wenn Sie ein Skript erstellen, können Sie außerdem Tests erfinden, um Programmierern in Ihren Bibliotheken zu helfen. Lassen Sie mich ein paar erfinden:
quelle
quelle
Verwenden von jQuery ...
$ (document) .height () & $ (window) .height () geben die gleichen Werte zurück. Der Schlüssel besteht darin, die Auffüllung und den Rand des Körpers zurückzusetzen, damit Sie nicht scrollen.
Hoffe das hilft.
quelle
Ich wollte ein anderes Aussehen meiner Website für Breitbild- und Kleinbildschirme. Ich habe 2 CSS-Dateien erstellt. In Java wähle ich je nach Bildschirmbreite aus, welche der 2 CSS-Dateien verwendet wird. Ich benutze die PHP-Funktion
echo
mit in derecho
-funktion etwas Javascript.Mein Code im
<header>
Abschnitt meiner PHP-Datei:quelle