J'ai écrit un exemple pour voir quelle est la différence, mais ils me montrent les mêmes résultats pour la largeur et la hauteur.
<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>
Dans cet exemple, vous pouvez voir qu'ils produisent les mêmes résultats. Si quelqu'un sait quelle est la différence, veuillez me montrer la réponse appropriée.
Merci.
<div>
, et voyez si cela donne des résultats différents;)Réponses:
Avez-vous vu ces exemples? Ressemble à votre question.
Travailler avec des largeurs et des hauteurs
jQuery - Dimensions
jQuery: hauteur, largeur, intérieur et extérieur
la source
Comme mentionné dans un commentaire, la documentation vous indique exactement quelles sont les différences. Mais en résumé:
la source
width = obtenir la largeur,
innerWidth = obtenir la largeur + le remplissage,
externalWidth = obtenir la largeur + le remplissage + la bordure et éventuellement la marge
Si vous voulez tester, ajoutez du remplissage, des marges, des bordures à vos classes .test et réessayez.
Lisez également dans la documentation jQuery ... Tout ce dont vous avez besoin est à peu près là
la source
Il semble nécessaire de parler des affectations de valeurs et de comparer la signification du paramètre "width" dans jq: (supposons que new_value est définie en unité px)
Les trois instructions ne donnent pas le même effet: parce que la première instruction jquery définit la largeur intérieure de l'élément et non la "largeur". C'est délicat.
Pour obtenir le même effet, vous devez calculer les paddings avant (supposons que var is pads), la bonne instruction pour que jquery obtienne le même résultat que pur js (ou le paramètre css 'width') est:
On peut également noter que pour:
w1 est la largeur intérieure, tandis que w2 est la différence de largeur (signification de l'attribut css) qui n'est pas documentée dans la documentation de l'API JQ.
Meilleures salutations
Trebly
Note: à mon avis cela peut être considéré comme un bogue JQ 1.12.4 la façon de sortir devrait être d'introduire définitivement une liste de paramètres acceptés pour .css ('paramètre', valeur) car il y a différentes significations derrière 'paramètres' acceptées, qui présentent un intérêt mais doivent toujours être claires. Dans ce cas: «largeur intérieure» ne signifie pas la même chose que «largeur». Nous pouvons trouver une trace de ce problème dans la documentation de .width (valeur) avec la phrase: "Notez que dans les navigateurs modernes, la propriété CSS width n'inclut pas de remplissage"
la source
.css('width')
est le même que.outerWidth()
(c'est-à-dire qu'il inclut la bordure ainsi que le rembourrage) quandbox-sizing: border-box;
.D'accord avec toutes les réponses données ci-dessus. Le
innerWidth/ innerheight
simple fait d'ajouter en termes de fenêtres ou de perspectives de navigateur comprend uniquement la zone de contenu de la fenêtre, rien d'autre, maisouterWidth/ outerHeight
inclut la zone de contenu de Windows et en plus de cela, il inclut également des éléments tels que des barres d'outils, des barres de défilement, etc. et ces valeurs seront toujours égales ou supérieures aux valeurs innerWidth / innerHeight.J'espère que cela aide plus ...
la source
Ce que je vois en ce moment, c'est que cela
innerWidth
inclut tout le contenuC'est, si la fenêtre est
900px
et le contenu est1200px
(et il y a un défilement)innerWidth
Donne moi1200px
outerWidth
Donne moi900px
Totalement inattendu à mes yeux
* Dans mon cas, le contenu est contenu dans un
<iframe>
la source