2013-09-27 32 views
0

假設人們正在開發一個非常密集的Web應用程序,以避免開銷。僅在Javascript/jQuery中實現CSS並完全放棄外部css文件是否合理?在jQuery中實現CSS

$('<div/>').attr({'id':'special_box'}).addClass('little_box').appendTo('body') 
$('<div/>').addClass('little_box').appendTo('body') 
$('<div/>').addClass('little_box').appendTo('body') 
... 
$('.little_box').css({'color':'red'}) 
$('#special_box').css({'color':'blue'}) 

有沒有人提倡這種完全合併?有什麼可以完全阻止它,或使它顯然不合理嗎?


EDIT

的勉強,作爲有益下面所解釋的,是jQuery的CSS功能是創建正被施加到各個元件的樣式和不創建/增強主CSS規則爲I」假設。

雖然看起來好像是waysachieve這個conflation。我沒有資格分析它們。謝謝大家。

+7

呃...不...不要...維護惡夢前進... :) –

+1

這是一個非常糟糕的主意。 – Pointy

+0

只有一個:瀏覽器自己的本地CSS實現的存在。 – BoltClock

回答

2

這是不合理的,不僅因爲它很慢(如你所期望的),而且涉及類的任何.css調用,例如, $('.little_box').css(...),將僅適用於當時存在的該類別的元素,而不是將來創建的.little_box

0

爲什麼要在開發過程中讓自己複雜化,CSS比使用javascript或jQuery做CSS要容易和更好用。

+0

我不想,我在理論上問。 –

0

除了非常耗時的物理代碼,你可以做到這一點。但是,它比CSS更加密集,並且阻止了CSS的許多優點。

這就像建立一個石油鑽井平臺和煉油廠來填補你的車。你可以做到,但爲什麼不去加油站呢?

0

我不提倡這種完全混爲一談 - 當然,對於別人已經說過的原因,也爲這兩個原因:

1)如果您的應用程序的增長,並有多個.js文件然後它會創建一個額外的頭痛,如果你試圖實現使用的東西文件的模塊加載像require.js

2)同樣,如果你的應用不斷增長非常大,或者你決定你想,它將使更多的工作,開始使用Sass

正如我確信正在成爲裝置租金,缺點大大超過這個想法的(可疑的)利弊。

0

以這種方式構建網站是完全有可能的,但要做到這一點還需要更多的工作,並且還需要更多的工作來維護它。所以,沒有什麼東西可以完全阻止它,但取決於樣式的數量,它可能是如此多的額外工作,以至於不合理。

還有一個表現因素。 CSS代表級聯樣式表,使用這種方法,您將失去「級聯」和「表單」,只剩下樣式。在實踐中,這意味着您將每種樣式應用於每個元素,而不是指定適用於多個元素的規則。 jQuery選擇器可以幫助您將相同的樣式應用於多個元素,但它仍然會循環遍歷它們並將樣式應用於每個元素。

由於這種情況發生在瀏覽器中,所以在頁面加載時您可能會收到明顯的延遲。另外,樣式將在創建所有元素後應用,而不是在元素存在時已經存在,因此訪問者可以看到完全顯示的頁面,而不用爲樣式表示樣式,然後在應用樣式時完全凍結,然後才能正確顯示。