2013-11-20 2 views
4

Скажем у меня есть element, и я хочу увидеть его background-position:Компьютерный стиль фона позиции возвращает 0% 0% в Chrome

Я это:

window.getComputedStyle(element).getPropertyValue('background-position') 

Если атрибут background- позиция не определена для этого element, я получаю:

0% 0% 

Однако, если я решу, чтобы установить background-position к 0% 0%, я будет иметь такое же значение.

Как я могу различать эти два случая? Как я могу узнать, что атрибут фактически определен?

EDIT:

Другие предложили использовать только style.getPropertyValue('background-position'), но это было бы просто взять в значения INLINE счета. Я хочу также учитывать, если значение было установлено во внешнем файле CSS. http://dev.w3.org/csswg/cssom/#elementcssinlinestyle

+0

Ищите 'background-position' или' background' в 'element.style'? – marekful

+1

Вы получаете '0% 0%', потому что это значение dafault ... возможно, если вы установите другое значение в начале css, тогда вы можете это разницу. – DaniP

+0

Спасибо за комментарий, но что, если я хочу использовать computedStyle? –

ответ

0

Imho, единственное различие между этими двумя случаями - перед любым анализом css на стороне браузера. это означает, что вам нужно исследовать CSS-строку, чтобы определить, было ли оно установлено или нет. поиск «фона» и «фонового положения» в качестве подстроки, затем выяснение, есть ли у вас 0 или 0% или нет.

2

Выведенное значение верно с 0% 0% is the initial value for background-position. (Свойства CSS всегда имеют значение, даже если оно имеет только начальное значение), поэтому никогда не являются «неопределенными».)

getComputedStyle не может сказать вам разницы, но может предпочесть, например, что фоновое положение 0% 0% с фоновым изображением none может представлять начальное значение.

Чтобы проследить, откуда взялись стили, попробуйте нестандартные getMatchedCSSRules() (см. window.getComputedStyle(): How to Discard properties with default values?).

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