Napisałem kilka przykładów, aby zobaczyć, jaka jest różnica, ale pokazują mi te same wyniki dla szerokości i wysokości.
<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>
W tym przykładzie widać, że dają takie same wyniki. Jeśli ktoś wie, jaka jest różnica, proszę o podanie właściwej odpowiedzi.
Dzięki.
<div>
i zobacz, czy to daje inne rezultaty;)Odpowiedzi:
Czy widziałeś te przykłady? Wygląda podobnie do twojego pytania.
Praca z szerokością i wysokością
jQuery - Dimensions
jQuery: wysokość, szerokość, wewnętrzna i zewnętrzna
źródło
Jak wspomniano w komentarzu, dokumentacja dokładnie wyjaśnia, jakie są różnice. Ale podsumowując:
źródło
width = pobierz szerokość,
innerWidth = pobierz szerokość + dopełnienie,
externalWidth = pobierz szerokość + dopełnienie + obramowanie i opcjonalnie margines
Jeśli chcesz przetestować, dodaj dopełnienie, marginesy, obramowania do swoich klas .test i spróbuj ponownie.
Przeczytaj także dokumentację jQuery ... Jest tam prawie wszystko, czego potrzebujesz
źródło
Wydaje się konieczne, aby opowiedzieć o przypisaniach wartości i porównać znaczenie parametru „width” w jq: (załóżmy, że nowa_wartość jest zdefiniowana w jednostce px)
Te trzy instrukcje nie dają tego samego efektu: ponieważ pierwsza instrukcja jquery definiuje wewnętrzną szerokość elementu, a nie „szerokość”. To jest trudne.
Aby uzyskać ten sam efekt, musisz obliczyć dopełnienia wcześniej (zakładając, że var to pady), właściwą instrukcją dla jquery, aby uzyskać ten sam wynik, co czysty js (lub parametr css 'width'), jest:
Możemy również zauważyć, że dla:
w1 to wewnętrzna szerokość, podczas gdy w2 to szerokość (znaczenie atrybutu css) Różnica, która nie jest udokumentowana w dokumentacji JQ API.
Z poważaniem
Potrójnie
Uwaga: moim zdaniem można to uznać za błąd JQ 1.12.4 sposobem na wyjście powinno być definitywne wprowadzenie listy akceptowanych parametrów dla .css („parametr”, wartość), ponieważ za „parametrami” kryją się różne znaczenia zaakceptowane, które budzą zainteresowanie, ale muszą być zawsze jasne. W tym przypadku: „innerwidth” nie będzie oznaczać tego samego, co „width”. Ślad tego problemu możemy znaleźć w dokumentacji .width (wartość) ze zdaniem: "Zauważ, że w nowoczesnych przeglądarkach właściwość szerokości CSS nie zawiera dopełnienia"
źródło
.css('width')
jest taki sam jak.outerWidth()
(to znaczy obejmuje obramowanie, a także wypełnienie) kiedybox-sizing: border-box;
.Zgadzam się ze wszystkimi odpowiedziami podanymi powyżej. Samo dodanie w zakresie perspektyw okna lub przeglądarki
innerWidth/ innerheight
obejmuje tylko obszar zawartości okna, nic poza tymouterWidth/ outerHeight
obejmuje obszar zawartości systemu Windows, a oprócz tego obejmuje również takie elementy, jak paski narzędzi, paski przewijania itp., a te wartości będą zawsze równe lub większe niż wartości innerWidth / innerHeight.Mam nadzieję, że pomoże to bardziej ...
źródło
To, co teraz widzę,
innerWidth
obejmuje całą zawartośćTo znaczy, jeśli okno jest,
900px
a zawartość jest1200px
(i jest zwój)innerWidth
daje mi1200px
outerWidth
daje mi900px
Całkowicie nieoczekiwane w moich oczach
* W moim przypadku zawartość jest zawarta w pliku
<iframe>
źródło