Ich habe ein Beispiel geschrieben, um zu sehen, was der Unterschied ist, aber sie zeigen mir die gleichen Ergebnisse für Breite und Höhe.
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var div = $('.test');
var width = div.width(); // 200 px
var innerWidth = div.innerWidth(); // 200px
var outerWidth = div.outerWidth(); // 200px
var height = div.height(); // 150 px
var innerHeight = div.innerHeight(); // 150 px
var outerHeight = div.outerHeight(); // 150 px
});
</script>
<style type="text/css">
.test
{
width: 200px;
height: 150px;
background: black;
}
</style>
</head>
<body>
<div class="test"></div>
</body>
</html>
In diesem Beispiel sehen Sie, dass sie dieselben Ergebnisse ausgeben. Wenn jemand weiß, was der Unterschied ist, zeigen Sie mir bitte die richtige Antwort.
Vielen Dank.
<div>
, und sehen Sie, ob dies zu unterschiedlichen Ergebnissen führt;)Antworten:
Hast du diese Beispiele gesehen? Sieht Ihrer Frage ähnlich.
Arbeiten mit Breiten und Höhen
jQuery - Abmessungen
jQuery: Höhe, Breite, Innen und Außen
quelle
Wie in einem Kommentar erwähnt , zeigt Ihnen die Dokumentation genau die Unterschiede. Aber zusammenfassend:
quelle
width = erhalte die Breite,
innerWidth = get width + padding,
OuterWidth = Breite + Polsterung + Rand und optional den Rand abrufen
Wenn Sie testen möchten, fügen Sie Ihren .test-Klassen Auffüllungen, Ränder und Rahmen hinzu und versuchen Sie es erneut.
Lesen Sie auch in den jQuery-Dokumenten nach ... Alles, was Sie brauchen, ist so ziemlich da
quelle
Es scheint notwendig zu sein, über die Wertzuweisungen zu erzählen und über die Bedeutung des Parameters "width" in jq zu vergleichen: (angenommen, dass new_value in px unit definiert ist)
Die drei Anweisungen haben nicht den gleichen Effekt: Der erste Befehl jquery definiert die innere Breite des Elements und nicht die "Breite". Das ist schwierig.
Um den gleichen Effekt zu erzielen, müssen Sie die Auffüllungen vorher berechnen (vorausgesetzt, var ist Pads). Die richtige Anweisung für jquery, um das gleiche Ergebnis wie bei reinem js (oder CSS-Parameter 'width') zu erhalten, lautet:
Wir können das auch beachten für:
w1 ist die innere Breite, während w2 die Breite ist (CSS-Attributbedeutung). Differenz, die nicht in der JQ-API-Dokumentation dokumentiert ist.
Freundliche Grüße
Dreifach
Hinweis: Meiner Meinung nach kann dies als Fehler angesehen werden. JQ 1.12.4 Der Weg zum Ausstieg sollte darin bestehen, eine Liste akzeptierter Parameter für .css ('Parameter', Wert) endgültig einzuführen, da hinter 'Parameter' verschiedene Bedeutungen stehen. akzeptiert, die Interesse haben, aber immer klar sein müssen. In diesem Fall bedeutet "innere Breite" nicht dasselbe wie "Breite". Wir können eine Spur dieses Problems in der Dokumentation von .width (value) mit dem Satz finden: "Beachten Sie, dass in modernen Browsern die CSS width-Eigenschaft kein Auffüllen enthält."
quelle
.css('width')
ist dasselbe wie.outerWidth()
(das heißt, es enthält sowohl den Rand als auch die Polsterung), wennbox-sizing: border-box;
.Stimmen Sie allen oben angegebenen Antworten zu. Nur um in Bezug auf Fenster- oder Browser-Perspektiven hinzuzufügen
innerWidth/ innerheight
schließt nur Fensterinhaltsbereich ein, sonst nichts, aberouterWidth/ outerHeight
Enthält den Windows-Inhaltsbereich und darüber hinaus auch Symbolleisten, Bildlaufleisten usw. Diese Werte sind immer gleich oder größer als die Werte für innerWidth / innerHeight.Hoffe es hilft mehr ...
quelle
Was ich gerade sehe, ist das
innerWidth
den gesamten Inhalt enthältDies ist, wenn das Fenster ist
900px
und der Inhalt ist1200px
(und es gibt eine Schriftrolle)innerWidth
gibt mir1200px
outerWidth
gibt mir900px
Völlig unerwartet in meinen Augen
* In meinem Fall ist der Inhalt in a enthalten
<iframe>
quelle