2010-10-08 32 views
5

我想弄清楚什麼是我現在最好的解決方案。你爲IE做了一個單獨的CSS嗎?

我使用CSS3來製作一些圓角和陰影,但IE8不支持它,所以我不得不使用CSS3pie的IE8。不幸的是,在應用這個餅圖之後,似乎IE8只是不想看起來像Chrome或FF一樣。爲什麼IE如此麻煩?

我應該爲IE創建一個新的樣式表嗎?還是有更好的解決方案?是否有某種發電機,您可以將您的Firefox完善的CSS轉換爲IE?

+3

我感到你的痛苦。 – Spudley 2010-10-08 12:15:23

回答

4

我應該爲IE創建一個新的樣式表 嗎?

是的,我想你必須添加對IE一個單獨的CSS,如

<!--[if IE 8]><link rel="stylesheet" type="text/css" href="../CSS/ie8.css" media="screen" /><![endif]--> 

如果它不能在IE8右看看,它必須在IE6會更慘! :)

爲什麼IE這麼麻煩?

因爲IE傢伙沒有對web標準給予太多關注,儘管這已經有所改善。

1

保羅愛爾蘭給了一個相當nice solution到IE特定的風格一陣子。

基本上,它使用條件語句給你的body不同的類。這樣,您就可以通過做一些像剛纔設置的IE特定的樣式:

.ie6 #element{ /* styles */ } 
3

對於IE瀏覽器,是的,他們是作爲@Joe [R指出,通過條件註釋包括在內。因此,至少沒有腐敗或無效的標記來提供特定的支持,這是一種比過去存在的各種CSS黑客更加改善的情況。

就我而言,只要沒有明顯的限制,在頁面的某個地方添加條件註釋,即可彈出鏈接到各種其他免費瀏覽器(通常爲Chrome,Firefox,Safari和Opera )並建議用戶可能喜歡升級以改善他們的體驗。

順便說一句,我也不打擾試圖獲得像素完美的IE版本。如果客戶要求它,那麼就足夠公平,但通常只是爲了提供彎曲角來解釋每小時的成本就足以激勵IE在矩形框中以及在FF,Chrome等中的曲線。

IE看起來如此痛苦的主要原因是因爲,在Windows上安裝IE瀏覽器作爲免費瀏覽器後,其市場滲透率達到了90%左右,Netscape或多或少地死去了,儘管周圍有小衆瀏覽器,大多數Windows市場似乎對追求替代品毫無興趣。缺乏高度的市場滲透和低水平的競爭阻礙了市場,降低了創新和改進的動力。

僅僅因爲我認爲Firefox開始獲得15%的採用率,IE團隊或IE管理團隊注意並追求改進。即使如此,它似乎已經採取了IE9的開發過程來推動採用標準。

+0

IE獲得了牽引力,因爲它是版本4和5中更好的瀏覽器.IE 6應該是有史以來的最後一個版本。由於Avalon UI環境(XAML + CSS)能夠直接顯示網頁,因此成爲Vista的操作系統應該不再需要單獨的瀏覽器應用程序。這並不是因爲一些原因而發生的,所以IE7是一個晚會,試圖從Longhorn的骨灰裏建立一個瀏覽器。 IE8修復了大部分剩餘問題;剩下的就是釋放週期和MS殺死XP的慾望。 – 2010-10-08 13:16:44

+0

@Stan Rogers;當真?我想這解釋了IE多年來滲透到操作系統的程度。但我很驚訝他們有意刪除瀏覽器,儘管這是一個有趣的命題。我的意思並不是暗示IE的早期成功是不應該的,我使用Netscape 3和4,這不是一個完全愉快的體驗。 – 2010-10-08 16:35:07

0

如果這只是關於CSS3PIE(behavior:)所需的屬性,那麼使用單個CSS文件應該不是真正的問題(我個人一直都這樣做),因爲該屬性被其他瀏覽器忽略。

如果有什麼,你會得到更多的開銷,請求IE特定的CSS文件以及主要的IE文件,並且爲IE做一個完全不同的CSS文件將是一個噩夢來維護,因爲你做的每一個改變,你將有做兩次。我的兩分錢是用一個文件去。

請注意,我的CSS3PIE佈局在所有瀏覽器中看起來都一樣,所以也許您的問題來自您正在使用的其他屬性,而不是來自CSS3PIE本身?也許這會有助於要求一個更具體的問題來解決問題,並讓它對此有所瞭解。

0

避免多個css包含是最好的,因爲這樣你可以分叉css代碼,這可能會引起一些明顯的問題(並且由於多個服務器請求而降低性能)。

如果你真的需要不同的CSS代碼,我首先建議使用嚴格的doctype(XHTML1.0沒有XML序言或HTML5),如果你仍然有瀏覽器differencies我建議使用HTML5樣板方法

<!--[if lt IE 7 ]> <body class="ie6 ie"> <![endif]--> 
<!--[if IE 7 ]> <body class="ie7 ie"> <![endif]--> 
<!--[if IE 8 ]> <body class="ie8 ie"> <![endif]--> 
<!--[if IE 9 ]> <body class="ie9 ie"> <![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> <body> <!--<![endif]--> 

基本上您可以通過預先選擇一個類別選擇器來針對特定的IE規則

1

AFAIK您無法通過強制瀏覽器與其他瀏覽器兼容。所以,是的,你可以爲IE添加一個單獨的樣式表。

您可以使用modernizr併爲其他瀏覽器不支持的每個屬性提供替代方法。這樣,您可以使用單個css文件爲多個瀏覽器提供服務。當然,如果用戶在其瀏覽器上禁用JavaScript,此解決方案將不起作用。

1

除了CSS3Pie(你已經知道這很好),你應該試試modernizr,這將使你更容易調整你的樣式表以適應不同的瀏覽器功能。

此外,我經常提到browser compatibility chartsQuirksmode.org。在各種瀏覽器中查看哪些CSS(和其他瀏覽器功能)不受支持或錯誤,非常有用。

相關問題