Non una sola risposta fa quello che è stato chiesto in vanilla JS, e voglio una risposta vaniglia così l'ho fatta io stesso.
clientWidth include padding e offsetWidth include tutto il resto (jsfiddle link). Quello che vuoi è ottenere lo stile calcolato (jsfiddle link).
function getInnerWidth(elem) {
return parseFloat(window.getComputedStyle(elem).width);
}
MODIFICA: getComputedStyle
non standard. Alcuni browser restituiscono un valore che tiene conto della barra di scorrimento se l'elemento ne ha uno (che a sua volta fornisce un valore diverso rispetto alla larghezza impostata in CSS). Se l'elemento ha una barra di scorrimento, dovrai calcolare manualmente la larghezza rimuovendo i margini e i paddings da 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);
}
fonte
2015-03-16 20:00:32
Dovrete usare computedstyle o jQuery – PitaJ
E 'facile http://stackoverflow.com/a/294273/6521116 –