2012-12-03 50 views
0

看到各種JS框架(Dojo,Ext.JS和其他),我發現佈局經常(如果不總是)通過直接的DOM操作完成的,如在給定DOM元素上設置內聯樣式。這與CSS試圖瞄準的內容形成了鮮明的對比,而且在我看來,CSS往往只是用於「美化」這些場景,指定顏色等。爲什麼JS框架使用內聯樣式而不是CSS來進行佈局

我想知道爲什麼選擇這個選項,甚至可能是從歷史的角度出發,以及您選擇的CSS或內聯樣式爲頁面/ web應用程序的佈局部分。

在什麼情況下你會很舒服地使用CSS通過樣式表而不使用js dom操作? 什麼情況會說相反?

謝謝!

+0

內聯樣式也是CSS。我想你的意思是直接DOM屬性修改。 –

+0

是的,我的意思是直接dom樣式屬性修改,是的,我知道它的CSS太:) – DLeonardi

回答

7

因爲他們使用數學來定位事物的大部分和CSS Calc不被很好的支持。

例如在jQuery UI中,他們使用數學計算出對話框應該放在屏幕上的位置或如何分割列。

CSS與東西趕上像FlexboxCalc,但你經常提到的JS框架支持很老的瀏覽器,如IE6,這將永遠不會成爲獲得這些CSS更新。

+0

好的答案,我認爲你的意思是「但這些框架往往**不支持像IE6這樣的老舊瀏覽器。 – jbabey

+0

@ jbabey - 不。大型框架經常**支持非常舊的瀏覽器,部分是爲了填補CSS支持方面的空白。 – Shauna

+0

[sencha person] Jamund是正確的,Ext JS使用Math來做更多近期CSS(flexbox,position:fixed等)可以自動完成的工作。我們還必須回到IE6,所以我們自己的數學是目前唯一的解決方案。 Sencha Touch 2 - 我們最近的移動瀏覽器框架使用CSS佈局更爲重要,因爲我們沒有遺留問題 –

3

這種行爲有不同的原因。

  1. 如果你不想直接使用DOM操作則需要新的規則寫入到物理的CSS文件,然後將文件加載作爲頁面的相關性。太複雜,完全不需要。

  2. 內聯樣式不是CSS?

  3. 通過前端腳本操作必須內聯,以確保新樣式的排名高於原定義的排名。

相關問題