2012-04-06 72 views
1

隨着新的瀏覽器增強功能,如CSS3動畫,漸變,SVG背景等......對於新型瀏覽器來說,不必下載舊版CSS代碼,下載高級CSS代碼。因此,在HTTP級別(無服務器端編程方法),您如何處理這樣的問題?你是否應該向兩組瀏覽器提供base.css文件,然後根據哪個瀏覽器組請求它,然後再添加一個CSS文件?有沒有一種方法可以包含一個CSS文件,該文件只是將瀏覽器重定向到瀏覽器組特定的重寫?或者這是應該首先在客戶端計算出並下載的東西?如何管理現代/古代瀏覽器的資產

回答

0

我發現有三種方法可以做到這一點。

  1. 使用大文件的每個樣式表和javascript資產,然後使用類似Modernizr的和功能嗅探淘汰哪個瀏覽器做什麼。或者讓所有的瀏覽器都做同樣的事情。這對開發輸入和測試更好。

  2. 使用兩個文件(一個名爲ancient.css,另一個名爲modern.css)並使用服務器端HTTP嗅探器操作來檢查瀏覽器的版本,然後爲其提供適當的文件。將HTTP緩存設置爲在將來過期以防止每次訪問服務器時檢查哪個文件要下載。要生成這些文件,只需創建一個文件,其中包含所有瀏覽器之間共享的所有核心內容,另一個文件與舊版瀏覽器的模擬內容共享。好處是你可以使用所有新的CSS3和HTML5-JavaScript的東西,但缺點是你需要測試以確保現代瀏覽器代碼的工作原理與古代相同。

  3. 有兩個資產文件(現代+古代)和現代下載第一。然後讓瀏覽器通過modernizr查看它是否支持某些東西,如果不支持,請下載古代文件。這裏的好處是你不需要開發任何額外的服務器端的東西,但缺點是你的網站渲染速度會變慢,並且你可能同時發生同一資源的多次下載。

0

完全融入優雅退化和漸進增強的概念將允許您爲所有目標瀏覽器使用相同的CSS - 簡而言之,如果瀏覽器不支持css3圓角 - 給它供應商前綴規則;如果它不支持這一點 - 沒有biggie,該網站仍然可以用方角。

與額外的http請求相比,使用供應商特定的前綴和標準下載規則下載規則的開銷將很小,並且可以提高可維護性,並且不必依靠瀏覽器檢測來節省麻煩。

佈局特定的黑客通常只能應用於IE家族,可以通過html條件註釋進行定位。