我一直在学习如何通过javascript更改css选项,例如:
document.getElementById("sweetDiv").style.fontSize
和...style.backgroundColor
,其命名约定似乎有意义:它是带连字符的CSS名称的驼峰式版本。
然后我遇到了...style.cssFloat
。哼。这根本不遵循这个规则。
由于这个一般规则似乎至少有一个令人惊讶的例外,我可以在哪里找到所有不同的JavaScript css样式选项的列表?为了避免被误解为资源请求,我真正的问题是:在映射到CSS名称时,浏览器如何决定调用JavaScript style
对象的属性?这是什么?行为指定?如果有的话,押韵或理由是什么?
(我开始深入研究Mozilla DOM文档,但似乎无法发现这个神秘的列表。)
答案 0 :(得分:1)
注意:如果您将JavaScript中的此属性称为element.style对象的成员,则必须将其拼写为
cssFloat
。另请注意,Internet Explorer 8及更早版本拼写了此styleFloat
。这是一个例外,即DOM成员的名称是以破折号分隔的CSS名称的驼峰式名称(并且是由于“float
”是JavaScript中的保留字,因为需要将“class
”转义为“className
”并将“for
”转义为“htmlFor
”。
这是因为语言中ECMAScript 3 disallowed property access with a dot operator if the property name was a reserved word。例如,执行foo.function
或bar.if
会引发错误。类似地,float
是ES3中的保留字(期望将来可能被语言使用),因此对baz.float
形式的任何访问在语法上都是无效的。
为了弥补这一点,浏览器使用cssFloat
(或IE8中的styleFloat
)来避免使用名为float
的属性。这是我所知道的style
对象的唯一例外,尽管上面的注释包括DOM规范中其他地方存在的其他一些。对于所有其他属性,只需使用“带连字符的CSS名称的驼峰版本”的常规语法转换。此转换在CSSOM spec中形式化为“IDL属性算法的CSS属性”(反之亦然)。
总之,JavaScript中的每个style
属性(即CSSStyleDeclaration
类型)中的对象都不需要特定的引用,因为它与CSS规则名称的信息没有什么不同。唯一的例外是cssFloat
,您显然已经找到了一个。
如果您对任何给定浏览器中style
所有受支持的媒体资源名称的完整列表感兴趣,请执行Object.keys(document.createElement("div").style)
。
答案 1 :(得分:0)
来自WC3:注意:CSS" float"财产称为" cssFloat"在JavaScript中,因为" float"是JavaScript中的保留字。
因此,99.9%的样式只是样式。无论如何,cssFloat是此规则的特殊例外。
你可以在这里找到详尽的CSS规范:https://www.w3.org/Style/CSS/specs.en.html但要注意,它对读者来说不是很友好。