2010-12-05 41 views
1

我通常工作在更後端的東西,所以我從來沒有真正想過它,但昨天我在一個朋友的網站上工作,經歷了一些挫折之後,我發現沒有理由HTML文件是唯一的可以動態生成服務器端。爲什麼不動態CSS更受歡迎?

我看到有人談論javascript解決方案來解決CSS的限制,但爲什麼CSS不能動態地「硬編碼」?

我知道我不是第一個想出它的人,因爲在思考它之後,我查了一下,有幾個例子,但沒有噸,而且我從來沒有在StackOverflow中看到過它。

相比於在頁面加載之前用javascript調整元素的大小,有沒有這些缺點?我應該注意的其他潛在問題?

我在做Django,但問題幾乎框架/語言不可知論者。

在dynamic-css標籤中查看問題,我發現了用於Ruby的{less},它看起來很酷,但總的來說,沒有太多關於服務器端生成的css文件的討論。

編輯: 我認爲有些人可能會對動態CSS的意圖感到困惑。我不是說它根據用戶內容或任何內容而改變。這是一個例子,我發現如何中心的圖像:

img {    
    position: absolute;    
    top: 50%; 
   left: 50%; 
   width: 500px; 
   height: 500px; 
   margin-top: -250px; /* Half the height */ 
   margin-left: -250px; /* Half the width */ 
} 

這是所有偉大的,但這就意味着瞭解你的圖像的大小在CSS。此外,它意味着不同尺寸圖像的不同條目。如果高度和寬度是可變的,並且圖像的大小是服務器端確定的,那麼它變得更通用和可重用。

我敢肯定,還有其他的例子會對我有幫助,但是沒有太多的CSS工作,這是我遇到的第一個與動態CSS很好地結合的例子。

此外,如果性能成爲一個問題,我相信它可以正確緩存一點點的工作。

回答

1

你在找什麼像Sass? http://sass-lang.com/

+0

+1 for Sass。就我而言,這只是解決這個問題的理想方案。 – 2010-12-05 16:46:20

0

我認爲這是一個相當聰明的解決方案,雖然很多人會不同意,但我希望css的未來看起來更像這樣。但是,標準的改變確實緩慢,雖然有些框架比較少,但它們幾乎不夠流行。

從某種意義上說,使用javascript處理很多事情更簡單。我的意思是,如果你已經在使用JS做動畫或其他事情,那麼你也可以用它做所有的動態變化。使用像jQuery這樣的庫,它只會變得更好。

0

我們已經完成了一些CSS來支持國際化。 CSS中有許多小細節需要根據你服務頁面的區域設置進行更改:主要是背景圖像(我們使用很多導航按鈕,因此有文本)和表單標籤的寬度在德語中必須要大得多 - 儘管我們應該使用更聰明的CSS來避免必須明確地確定它們的大小)。我們有一個,而不是維護N個不同的樣式表,而是動態地填充存儲在數據庫中的值中的變量位。

2

我同意其他人發佈的內容。HTML是由服務器端生成的,因爲內容是動態的,並且沒有人會去facebook,google,youtube或幾乎任何其他地方,如果他們總是提供相同的html。服務器端代允許您發佈和查看內容,因爲它是由用戶提供和改進的。在另一方面

CSS,很少貢獻的用戶,如果是,他們被稱爲網頁設計師,只是生成靜態主題或文件,並通過網站的所有者支付。有一些網站發生這種情況,如csszengarden,但文件仍然是靜態的。然而,他們關鍵的區別在於,用戶不覺得他們對網站的唯一貢獻是網頁上的元素和不同顏色的位置。 CSS的一個重點是一致性。嘿,每當有人發佈答案時,stackoverflow可能會改變css,重新定位所有按鈕,並將整個頁面更改爲ltr而不是僅僅提供不同的html。說這將是令人討厭的將是本世紀最大的輕描淡寫。

不過,我不認爲這是你在問什麼。動態CSS的巨大優勢正如你所說:你可以動態地對它進行硬編碼。 dot-less-css在其主頁上有一些很棒的例子。這使您可以以更簡單的中間格式編寫CSS,顏色以變量存儲,而不是重複的,嵌套的規則以及其他功能,以使編碼更容易。這些功能是許多編碼人員都樂於得到所有瀏覽器支持的功能,因此有些人回答了這個需求,並創建了自己的框架將它們「拼湊」在一起。許多人說JQuery是javscript應該如何工作的。

是否有不足之處,以本相比 說頁面加載之前調整與 JavaScript元素?任何 其他潛在的問題我應該知道 ?

動態調整大小的最大問題是它很困難且容易出錯。如果你不這麼做,那對你和你的觀衆來說可能會是一場痛苦。如果這個酷酷的動態因素值得你爲之付出額外的工作,那就繼續做吧。你如何選擇不會產生巨大的影響。 Javascript是更加可靠和真實的,服務器端動態CSS是做同樣事情的另一種很酷的方式。這取決於你對自己的信心,以及你有多大膽。

1

CSS趨於緩存,所以產生它的飛行將一)需要CSS的緩存關閉和b)產生大量的多個服務器的開銷。

我認爲根據哪個瀏覽器調用,在html中即時生成css鏈接是相當常見的,但仍指向選擇靜態css文件之一。

最後,它不是服務器產生的真正原因可能是它通常由設計師寫的,不是別人做後端代碼,它只是一個角色的問題。

相關問題