Comment obtenir la hauteur interne d'un élément, sans rembourrage ni bordure?
Pas de jQuery, juste du JS pur et une solution multi-navigateurs (IE7 inclus)
var style = window.getComputedStyle(document.getElementById("Example"), null);
style.getPropertyValue("height");
La version ci-dessus fonctionnera dans les navigateurs modernes. Veuillez vérifier currentStyle
pour les navigateurs IE.
EDIT des commentaires:
http://jsfiddle.net/hTGCE/1/ (un peu plus de code que prévu)
sur Internet, vous trouvez des fonctions comme celle-ci:
function getRectangle(obj) {
var r = { top: 0, left: 0, width: 0, height: 0 };
if(!obj)
return r;
else if(typeof obj == "string")
obj = document.getElementById(obj);
if(typeof obj != "object")
return r;
if(typeof obj.offsetTop != "undefined") {
r.height = parseInt(obj.offsetHeight);
r.width = parseInt(obj.offsetWidth);
r.left = r.top = 0;
while(obj && obj.tagName != "BODY") {
r.top += parseInt(obj.offsetTop);
r.left += parseInt(obj.offsetLeft);
obj = obj.offsetParent;
}
}
return r;
}
si vous voulez soustraire le padding/border-width est défini dans le fichier css et non dynamique dans l'attribut style:
var elem = document.getElementById(id);
var borderWidth = 0;
try {
borderWidth = getComputedStyle(elem).getPropertyValue('border-top-width');
} catch(e) {
borderWidth = elem.currentStyle.borderWidth;
}
borderWidth = parseInt(borderWidth.replace("px", ""), 10);
et avec le rembourrage le même. alors vous le calculez.
Vous pouvez simplement utiliser les propriétés clientHeight
et clientWidth
.
Le document Web MDN pour Element.clientHeight - clientWidth fonctionne exactement de la même manière.