2014-07-25 61 views
2

我注意到,SmartMS中使用的樣式屬性名稱的格式與在css文件中使用的格式不同。樣式屬性名稱格式

例如爲:
在CSS:

line-height, text-overflow, white-space 

在SmartMS的樣式屬性沒有 ' - ' 符號,因此首字母大寫:

lineHeight, textOverflow, whiteSpace 

爲什麼這些差異?

回答

3

在css文件中使用小寫格式(例如行高)。這種格式是所有瀏覽器的標準。

CamelCase格式(例如lineHeight)用於瀏覽器內部的JavaScript對象。這種格式也是所有瀏覽器的標準。但是一些瀏覽器也支持小寫格式。

要跨瀏覽器兼容,請始終在javascript對象上使用CamelCase格式!

1

另一種方法是使用CSSStyleDeclaration Interface,因爲它允許使用CSS屬性名稱(小寫字母和連字符)。這也可以用來查詢CSS屬性名稱是否存在(通過解析所有可用屬性的項目)。此外,它可以用來指定一定的優先級或訪問父母。

由於它是DOM Level 2 Style Specification(發佈於2000年)的一部分,它應該與大多數瀏覽器兼容。

我看到使用這個唯一的問題是,getPropertyValue應該返回一個DOMString(它轉換爲SMS中的字符串),但如果未設置(與空字符串相反),則返回null,這會導致而是轉化爲一個變體(在SMS中)。這個例外必須妥善處理。

0

在當前的RTL和框架中,有一些回退到較早的版本,其中編譯器沒有像現在的編譯那樣支持訪問JS對象和類型。

所以這些罕見的CSS雜亂情況,除非它們必須在那裏,否則將會在下一次更新中消失。

在下一次更新中,儘可能多的RTL和框架使用瀏覽器驅動程序來照顧樣式名稱的前綴和後綴。這可確保無論您使用哪種瀏覽器,SMS都能正確使用。

說了不同的訪問風格的方式的原因,如基督教解釋說,是由於不同的spesifications。在RTL中,我們很少有意識的選擇,只是習慣和在某種情況下最適合的東西。重點總是先穩定,然後再重構速度。

爲簡單起見,有您可以訪問的CSS樣式有兩種方式:

  1. 作爲一種風格集合
  2. 作爲直接的JS對象屬性

防爆的特性:

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

// reference as an attribute 
Self.Handle.style.fontFamily := "sans serif"; 

兩者結果相同,但以不同的方式處理樣式。

第一個實際上是最慢的,因爲它在分配值之前執行樣式名稱的查找。

第二個地址直接的價值,作爲樣式對象的暴露屬性,因而駱駝在規則踢。

你提到,他們沒有在Firefox的工作,不錯,這是非常傷心地聽到。我們一定錯過了那個地方,所以請給我們單位名稱和行號,我會看看。

「瀏覽器樣式名稱」格式必須以正確的瀏覽器爲前綴,因此對於webkit瀏覽器,它是「-webkit」,而Firefox使用「-moz」。在javascript中爲所有瀏覽器設置相同的屬性是很常見的,但是像上面提到的那樣 - 我們在BrowserAPI()中有一些函數用正確的名稱作爲前綴。

所以這是照顧。