样式属性名称格式

时间:2014-07-25 11:22:42

标签: smart-mobile-studio

我注意到,SmartMS中使用的样式属性名称与css文件中使用的格式不同。

例如为:
在css:

line-height, text-overflow, white-space
在SmartMS中,样式属性没有' - '签署,因此是CamelCase:

lineHeight, textOverflow, whiteSpace

为什么会有这些差异?

3 个答案:

答案 0 :(得分:3)

小写格式(例如行高)用于css文件。此格式是所有浏览器的标准。

CamelCase格式(例如lineHeight)在浏览器内部的javascript对象上使用。此格式也是所有浏览器的标准。但是有些浏览器也支持小写格式。

要符合跨浏览器标准,请始终在javascript对象上使用CamelCase格式!

答案 1 :(得分:1)

另一种方法是使用CSSStyleDeclaration Interface,因为它允许使用CSS属性名称(小写和连字符)。这也可以用于查询CSS属性名称是否存在(通过解析所有可用属性的项目)。 此外,它可用于指定特定优先级或访问父母。

由于它是DOM Level 2 Style Specification(2000年发布)的一部分,因此它应该与大多数浏览器兼容。

我看到使用它的唯一问题是getPropertyValue应该返回一个DOMString(在SMS中转换为字符串),但是如果没有设置(而不是空字符串),浏览器用于返回null,这更愿意转换为变体(在SMS中)。必须正确处理此异常。

答案 2 :(得分:0)

在目前的RTL和框架中,有一些对早期版本的回击,其中编译器没有像现有编译那样对访问JS对象和类型提供良好的支持。

所以这些罕见的流浪CSS案例,除非必须在那里,否则将在下次更新中消失。

在下一次更新中,尽可能使用RTL和框架使用浏览器驱动程序来处理样式名称的前缀和后缀。这确保了无论您运行什么浏览器,SMS都能正确运行。

据说,正如基督徒所解释的那样,获取风格的不同方式的原因是由于不同的规定。在RTL中,我们很少有意识的选择,只是习惯和在一种情况下最适合的。重点始终是稳定性,然后再重构速度。

为简单起见,有两种方法可以访问css样式:

  1. 作为样式集合的属性
  2. 作为直接JS对象属性
  3. 例如:

    // reference as a property
    Self.Handle.style["-webkit-font-family"] := "sans serif";
    
    // reference as an attribute
    Self.Handle.style.fontFamily := "sans serif";
    

    两者都是相同的,但以不同的方式解决了这种风格。

    第一个实际上是最慢的,因为它在分配值之前执行样式名称的查找。

    第二个直接处理该值,作为样式对象的公开属性,因此驼峰案例规则开始。

    您提到,他们没有在Firefox的工作,不错,这是非常伤心地听到。我们一定错过了那个地方,所以请告诉我们单位名称和行号,我会看看。

    “browser-style-name”格式必须以正确的浏览器为前缀,因此对于webkit浏览器,它是“-webkit”,而firefox使用“-moz”。通常在javascript中为所有浏览器设置相同的属性,但是如上所述 - 我们在BrowserAPI()中有一些函数以正确的名称作为前缀。

    所以这是照顾的。