J'ai cet élément:
<div style="width: 100%; height: 10px;"></div>
Je veux obtenir sa largeur en pixels. Je viens d'essayer ceci:
document.getElementById('banner-contenedor').style.width
Qui retourne 100%
. Est-il possible d'obtenir réellement la largeur de l'élément en pixels avec javascript?
document.getElementById('banner-contenedor').clientWidth
Vous voulez obtenir la largeur calculée. Essayez: .offsetWidth
(C'est à dire: this.offsetWidth='50px'
ou var w=this.offsetWidth
)
Vous pourriez aussi aimer cette réponse sur SO.
Pas une seule réponse ne fait ce qui a été demandé dans Vanilla JS, et je veux une réponse à la vanille alors je l’ai faite moi-même.
clientWidth inclut le remplissage et offsetWidth tout le reste ( lien jsfiddle ). Ce que vous voulez, c'est obtenir le style calculé ( lien jsfiddle ).
function getInnerWidth(elem) {
return parseFloat(window.getComputedStyle(elem).width);
}
EDIT: getComputedStyle
n'est pas standard. Certains navigateurs renvoient une valeur qui prend en compte la barre de défilement si l'élément en contient une (qui à son tour donne une valeur différente de la largeur définie dans CSS). Si l'élément comporte une barre de défilement, vous devez calculer manuellement la largeur en supprimant les marges et les marges de offsetWidth
.
function getInnerWidth(elem) {
var style = window.getComputedStyle(elem);
return elem.offsetWidth - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight) - parseFloat(style.borderLeft) - parseFloat(style.borderRight) - parseFloat(style.marginLeft) - parseFloat(style.marginRight);
}
Essayez jQuery:
$("#banner-contenedor").width();