Houdini - CSS Typed OM:如何通过javascript

时间:2018-05-22 19:35:42

标签: javascript css css-houdini

USECASE

我将自定义属性“ - animation-duration ”定义为具有新“ registerProperty ”功能的时间值:

CSS.registerProperty({
  name: '--animation-duration',
  syntax: '<time>',
  inherits: false,
  initialValue: '1s'
});

在我的CSS中,我现在可以将此属性添加到我的类并调整它的值:

.my-el {
  --animation-duration: 1.5s;
}

现在我希望通过javascript 始终在ms 获取此元素的。这可以通过以下代码行来实现:

const duration = CSSNumericValue.parse(getComputedStyle(el).getPropertyValue('--ripple-anim-duration')).to('ms').value; // 1500

问题

是否有更短/更好的方式在我的常规JavaScript中获取此值?

附加

我知道你可以在 worklet (在paint-worklet中测试)中做得更短:

const duration = properties.get('--ripple-anim-duration').to('ms').value; // 1500

以下代码在我的常规javascript中无效:

const duration = el.attributeStyleMap.get('--ripple-anim-duration').to('ms').value; // ¯\_(ツ)_/¯

1 个答案:

答案 0 :(得分:2)

这是正常的方式 php -v

  1. 您不需要使用CSSNumericValue.parse
  2. attributeStyleMap适用于样式属性中定义的属性

如果您感兴趣,我写了一些有关“自定义属性和值”的文章: https://vitaliy-bobrov.github.io/blog/css-custom-properties-in-depth/ https://vitaliy-bobrov.github.io/blog/css-custom-properties-in-depth-part-2/