我在查找语法的规范时遇到了一点困难
HTMLElement.style.property=”value” // set the property value
我经常使用这种语法(我自己也成功地使用过),但找不到允许这种语法的规范。
此语法的使用示例如下:http://www.w3schools.com/jsref/dom_obj_style.asp和https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.style但我似乎在CSSOM规范中找不到语法:http://dev.w3.org/csswg/cssom/
CSSOM指定的HTMLElement接口
HTMLElement implements ElementCSSInlineStyle;
其中ElementCSSInlineStyle
是
[NoInterfaceObject]
interface ElementCSSInlineStyle {
[SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
};
并且其中CSSStyleDaeclaration
是
interface CSSStyleDeclaration {
attribute DOMString cssText;
readonly attribute unsigned long length;
getter DOMString item(unsigned long index);
DOMString getPropertyValue(DOMString property);
DOMString getPropertyPriority(DOMString property);
void setProperty(DOMString property, [TreatNullAs=EmptyString] DOMString value, [TreatNullAs=EmptyString] optional DOMString priority = "");
void setPropertyValue(DOMString property, [TreatNullAs=EmptyString] DOMString value);
void setPropertyPriority(DOMString property, [TreatNullAs=EmptyString] DOMString priority);
DOMString removeProperty(DOMString property);
readonly attribute CSSRule? parentRule;
attribute DOMString cssFloat;
};
也许我遗漏了一些基本的东西,但在我看来,如果规范允许有问题的语法,那就不可能了。如果有人引用了允许直接设置样式属性的语法,我会很感激收到它
它确实在CSSStyleDeclaration
的CSSOM规范中,就在cssFloat
属性下:
对于支持CSS的每个CSS属性属性以下部分接口适用于骆驼大小写属性所在的位置通过对IDL运行CSS属性获得属性属性的算法。
partial interface CSSStyleDeclaration { attribute DOMString _camel-cased attribute; };
camel-cased attribute
属性在获取时必须返回调用的结果getPropertyValue()参数是将IDL属性运行到CSS所有物骆驼大小写属性的算法。设置
camel-cased attribute
属性必须调用setProperty()第一个参数是运行IDL属性的结果到CSS所有物骆驼大小写属性的算法,作为第二个参数值,没有第三个参数。任何抛出的异常都必须重新抛出。
这样,他们就可以将每个受支持的属性声明为自己的IDL属性。