Требуется ли метод getPropertyValue для получения CSS?
Не могли бы вы сказать мне, почему мы должны использовать getPropertyValue
метод, если мы можем использовать только getComputedStyle
один?
Например, это будет работать, насколько я понимаю:
var s = getComputedStyle(element, null).opacity;
Что эквивалентно следующему:
var s = getComputedStyle(element, null).getPropertyValue('opacity');
Можем ли мы использовать getComputedStyle
без getPropertyValue
?
2 ответа
Согласно старому стилю DOM L2, getPropertyValue
не требовалось:
CSS2Properties
Интерфейс представляет удобный механизм для извлечения и установки свойств в пределахCSSStyleDeclaration
, Атрибуты этого интерфейса соответствуют всем свойствам, указанным в CSS2. Получение атрибута этого интерфейса эквивалентно вызовуgetPropertyValue
метод интерфейса CSSStyleDeclaration. Установка атрибута этого интерфейса эквивалентна вызовуsetProperty
методCSSStyleDeclaration
интерфейс.
Однако реализации не требовали его поддержки, поэтому использование getPropertyValue
было безопаснее.
Соответствующая реализация модуля CSS не требуется для реализации
CSS2Properties
интерфейс.
Но в соответствии с более новым CSSOM, используя Camel-чехол без getPropertyValue
должно работать:
Для каждого свойства свойства CSS, которое является поддерживаемым свойством CSS, применяется следующий частичный интерфейс, в котором атрибут camel-cased получается путем запуска свойства CSS для алгоритма атрибута IDL для свойства.
partial interface CSSStyleDeclaration { attribute DOMString _camel-cased attribute; };
camel-cased attribute
атрибут, при получении, должен возвращать результат вызоваgetPropertyValue()
с аргументом, являющимся результатом запуска атрибута IDL для алгоритма свойства CSS для атрибута верблюжьей оболочки.Настройка
camel-cased attribute
атрибут должен вызыватьsetProperty()
первый аргумент является результатом запуска атрибута IDL для алгоритма свойства CSS для атрибута верблюжьего доспеха, в качестве второго аргумента - заданное значение, а третьего аргумента нет. Любые исключения должны быть переброшены.
Следовательно, getPropertyValue
больше не нужно получать значения CSS.
Я считаю, что это для свойств, которые не могут быть обозначены точками, как background-position
, Хотя я полагаю, что возникает вопрос "почему бы не использовать скобки, то есть getComputedStyle(element, null)['background-position']
Возможно, они просто хотели получить метод класса для класса (CSSStyleDeclaration).