Доступ к правилам CSS из JavaScript

0

Предположим, что у меня есть следующее.

HTML:

<div id="foo"></div>

CSS:

#foo{
   width: 150px;
}

JS:

document.getElementById("foo").style.width //Equals to "" instead of 150px
$("#foo").css("width") //equals to the expected "150px"

или это JSFiddle. Почему мы можем получить доступ к ширине элемента, используя jQuery, но не используя vanilla JS? Это потому, что внешние правила CSS не являются частью DOM?

Теги:
dom

2 ответа

1
Лучший ответ

Используйте getComputedStyle. Смотрите эту обновленную скрипту:

computedWidth = window.getComputedStyle(document.getElementById("foo"), null).
                getPropertyValue("width");

elem.style просто вернет вам встроенные стили, связанные с элементом, то есть содержимое атрибута style="".

3

Попробуйте offsetWidth. Когда вы пытаетесь получить доступ к style.width, он даст вам только ширину, назначенную свойству стиля элемента. Но в вашем случае ему назначается ширина по правилу css.

document.getElementById("foo").offsetWidth;

скрипка

Edit: clientWidth, вероятно, будет более уместным, так как он дает вам внутреннюю ширину элемента, где offsetWidth также рассматривает границы, поля.

  • 1
    offsetWidth будет включать границы и поля и, следовательно, не эквивалентен width CSS. clientWidth будет более подходящим, но все равно не обязательно отражает ширину CSS, всегда (полосы прокрутки).
  • 0
    @nmaier Да, я забыл о clientWidth, только что запутался в обоих. Спасибо Обновлено.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню