2013-07-03 3 views
3

offsetWidth не подходит для меня прямо сейчас, так как это включает в себя прописку и ширину границы. Я хочу узнать ширину содержимого элемента. Есть ли свойство для этого, или мне нужно взять offsetWidth, а затем вычесть ширину заполнения и ширину границы из вычисленного стиля?Получить содержимое ширины элемента

+0

Нет jQuery, но даже с jQuery, нет, это не так. –

ответ

0

Я бы предложил либо scrollWidth, либо clientWidth в зависимости от того, хотите ли вы учитывать полосу прокрутки.

Отъезд Determining the dimensions of elements или specification itself.

+0

Извините, оба они, кажется, дают то же самое, что и 'offsetWidth'. –

+0

К ним относятся прокладка. –

1

Звучит так, как будто вы хотите использовать getComputedStyle на элементе. Вы можете увидеть пример getComputedStyle VS. offsetWidth здесь: http://jsbin.com/avedut/2/edit

Или:

window.getComputedStyle(document.getElementById('your-element')).width; 
+3

Это, конечно, сбой, если я установил 'box-sizing: border-box';) –

+0

О, и еще одна вещь, я специально дал этот вариант в своем вопросе. Я ищу другого. –

+0

Это было бы очень важно включить с самого начала. ;-) И в таком случае да: я думаю, вам нужно сделать вычитание. Я добавил 'getWidth' в jsbin: http://jsbin.com/avedut/6/edit (и то, как оно было сформулировано там в конце, немного подтолкнуло меня, извините) – founddrama

2

Поскольку это приходит первым, когда прибегая к помощи, но не соответствующий ответ еще, вот один:

function getContentWidth (element) { 
    var styles = getComputedStyle(element) 

    return element.clientWidth 
    - parseFloat(styles.paddingLeft) 
    - parseFloat(styles.paddingRight) 
} 

В основном мы сначала получаем ширину элемента, включая прокладку (clientWidth), а затем вычитаем отступ слева и справа. Нам нужно parseFloat прокладки, потому что они приходят как px -насыщенные строки.


Я создал небольшую площадку для этого на jsFiddle, проверить это!

Смежные вопросы