2009-06-05 49 views
1

我相信這不是流行的立場,但我更喜歡在樣式表中嵌入黑客,例如*和_,而不是使用單獨的IE特定樣式表。起初,我嘗試了單獨的樣式表,但是我發現爲相同元素設置樣式的範圍跨越多個文件,以致難以維護。改變主樣式表中的樣式並不明顯,我在IE特定的樣式表中也有相應的樣式。通常情況下,這些樣式會發生很大變化,例如對填充進行微小調整,以致在每個瀏覽器中測試它的額外時間似乎過多,因此並不總是會發生。嵌入式CSS hacks vs單獨的級聯樣式表

如果黑客直接包含在主要樣式表中,那麼很明顯IE6的樣式也需要進行調整和測試。我可以聽到有人說你應該在所有支持的瀏覽器中測試每個樣式的變化,但在現實世界中,我發現這種立場是不現實的,我沒有看到團隊中的所有開發人員都跟隨它。

我明白,包括黑客使得你的CSS無法驗證,但我發現我可以快速掃描驗證結果並忽略有關這些黑客的錯誤。在我看來,我更喜歡解釋驗證結果,而不是處理在IE 6中錯誤地渲染網站的工作。我還讀過其他地方,人們不會做黑客或單獨的樣式表,而是調整/簡化設計所以它適用於所有瀏覽器。不幸的是,實施設計的開發人員在他們不負責設計時並不總是有這個選項。再加上我爲了避免黑客事後看起來非常浪費而努力爭取在所有瀏覽器中使用小填充問題的時間。

我對其他人的想法和理由感興趣,他們對這種範式的立場。

+0

你如何爲IE6和IE7添加不同的黑客(他們需要不同的黑客) – elcuco 2009-06-05 23:12:40

回答

1

我已經做了一些CSS大量工作,渡陽光下幾乎所有的瀏覽器,適用於小項目和大的。雖然總會對你寫的任何代碼都有美感,但我認爲更值得關注的是可維護性......這對CSS來說就像其他類型的代碼一樣。

雖然舉辦黑客和那些通過條件邏輯加載其它CS「修復」成單獨的文件是從asthetic角度不錯...它實際上可以創建維護麻煩的道路。

根據我的經驗,盡全力將你的黑客與它們固定對於任何給定的瀏覽器底座CSS。這使CSS樣式是你的UI一起在同一個地方,這使得管理該CSS 顯著容易,並且也明確了地方未來可能的(或可能)fiture瀏覽器的CSS錯誤的修復應放在一些特定的元素。

除了將黑客放在與它們相關的基本css之後,您還應該確保清楚黑客修復的內容以及黑客支持的瀏覽器是否包含註釋。我曾經參與過一些大規模使用CSS的高級項目,但我們仍然需要支持IE6。從長遠來看,我的團隊和我(其中,順便說一句,都是C#開發人員......在這個特定的工作中,開發人員不僅編碼,還根據我們的圖形設計師創建的UI模型做了所有的UI實現) CSS可以很好地設計任何網站,而不需要黑客(這可能很困難,並且需要一些關於CSS如何工作的廣泛知識......但是它可以解決IE和Firefox中幾乎所有的bug,而且不會受到攻擊......只是聰明/正確地使用有效的CSS)。

之前我的團隊瞭解了足夠的CSS來實現這一目標,但是,我們有更多的黑客攻擊,我們可以指望。保持我們的黑客與他們固定的基本css一起組合,同時用一個理由標記每個黑客,瀏覽器或支持黑客的瀏覽器爲保持我們可怕的CSS文件的可維護性做出了很大的貢獻。這不僅有助於提高可維護性......但是當您瞭解有關CSS的更多信息並找出避免黑客攻擊的方法時......您可以在修復現有CSS以使用新技巧時將其逐個刪除。由於你的黑客就在你的改進CSS旁邊,所以它很容易擺脫不再需要的黑客。

1

那麼,我有點陷入同一條船......如果我可以放入一個* html #id而不是做一個完整的條件註釋和具體的ie6樣式表,我會去做。它可能不那麼優雅,但它保存了一個全新的CSS文件來保存。但是,如果我最終有很多* html*前綴,或超長IE7 hack(我現在不記得),我寧願使用條件樣式表。

我實在不明白* html作爲一個真正的黑客......這是一個有效的選擇(據我所知),它只是不應該工作,因爲沒有父元素HTML(除了一些原因在IE6中)。但是,使用下劃線或特定字符作爲屬性前綴會使選擇器屬性無效。

另一個我不介意使用display: inline IE6來修復元素浮動時的雙倍餘量。我在我的主CSS中使用它,因爲它不會影響其他瀏覽器(只有塊級元素可以被浮動),並且它更容易維護。我通常留下一個小紙條,像

#my-div { 
    diplay: inline; /* ie6 */ 
    float: left; 
    margin-left: 20px; 
} 

所以我會說,如果這是一些黑客,我把它留在我的主要CSS。如果它變得笨拙(並且它通常不會像我知道IE失敗的常見方式那樣),我會創建一個額外的樣式表並使用條件註釋。

0

這些都是HACKS而不是CONDITIONALS。

不要誤會我我也是這樣做的:\有時它是基於案例的場景。如果你處理大型網站使用CONDITIONALS。

如果你做一些廢話你不關心使用黑客。

區別如下:

HACKS - 暫時的工作,那就是直到有人將它們固定,他們probally不會 條件句 - 保證工作

0

我使用條件註釋使用ID將DIV中的頁面包裝成目標正確的IE版本,如here所述。

這是更易於維護(像你說的),讓你的CSS有效(沒有錯誤被忽視),比黑客更穩定...

0

這可能是offtopic,我不是一個大師的CSS ......但是,你有沒有試過SASS?

http://haml.hamptoncatlin.com/docs/

我覺得CSS比較差作爲表達的語言風格。橫向思考,如果你有一個主要風格的中心protoCSS,並且可以將它們轉換爲合適的瀏覽器版本,我認爲你可以採用最好的方式:可維護並且易於使用。

薩斯是不完全是,但它不應該是很難將其更改爲是。如果您不是開發人員,我相信您將能夠說服漢普頓或其他人對其進行編碼。