2009-04-27 23 views
1

上午建立了一個使用Django的網站,我的模板使用了CSS,並且使用firefox在本地進行了測試,但是當我剛剛向我的朋友們「展示它」時,我將其與IE瀏覽器進行了對比,並且網站全是破碎!標題都搞砸了,似乎沒有任何東西在一起,空間都搞砸了!這不好。如何讓我的頁面與IE兼容?

有什麼我失蹤了!像一些標題聲明? DOCTYPE什麼的?

注意:我從互聯網上的某個站點抓取了我正在使用的CSS,並且當我在IE上運行該站點時,它看起來都不錯!

幫助

這是有問題的CSS中,H1部分正在使用這個CSS是打破,任何線索的人嗎?

div#header 
{ 
    margin-left: auto; 
    margin-right: auto; 
    margin-bottom: 10px; 
    text-align: left; 
    width: 780px; 
    height: 102px; 
    background: url(/site_media/header_background.gif) no-repeat top left; 
} 


div#header h1 
{ 
    padding: 30px; 
    font-family: Verdana, sans-serif; 
    font-size: 17px; 
    font-weight: bold; 
    color: #c8c8c8; 
    letter-spacing: -1px; 
} 

div#header h1 strong 
{ 
    color: #999; 
    width: 810px; 
} 
+0

嘗試檢查它們使用的DOCTYPE的原始網站html ... – Dror 2009-04-27 06:03:25

+0

doctype標記是<!DOCTYPE XHTML PUBLIC「 - // W3C // DTD HTML 4.01 Transitional // EN」> – gath 2009-04-27 06:26:57

回答

1

這次不會幫助你,但下次你從頭開始創建一個網站時,至少每天在IE中測試一次該網站。這樣你最終不會得到這種驚喜。

如果你想要一個更precice答案,文章的網址就會有人指出爲什麼它會在IE和Firefox

+0

我仍在本地測試它! – gath 2009-04-27 06:09:45

0

這是我的PHP函數我用它來確定適當的樣式表:

function stylesheet() { 
    $ua = $_SERVER["HTTP_USER_AGENT"]; 
    $iepos = strpos($ua,"MSIE"); 
    if ($iepos) { 
     $vers = substr($ua,$iepos+5,1); 
     if ($vers >= 8) return "style.css"; 
     else return "iestyle.css"; 
     } 
    else return "style.css"; 
    } 

我在哪裏,我需要IE8是「好」的版本,一個非常奇怪的問題,所以最人大概可以改變...

if ($vers >= 8) 

到...

if ($vers >= 7) 

然後我有,代替正常的CSS鏈接:

<?php echo "<link rel=\"stylesheet\" href=\"".stylesheet()."\" />"; ?> 

好運。

+1

我不是很確定瀏覽嗅探是去這裏的方法,尤其不是你建議的方式。請參閱此處:http://www.howtocreate.co.uk/tutorials/jsexamples/sniffer.html和http://www.quirksmode.org/blog/archives/2006/08/the_dangers_of.html以進行一些討論。當你理論上支持IE的3個版本以及所有其他版本時,這個特別難以維護。如果您只想爲IE提供服務,請使用條件註釋。 – 2009-04-27 06:13:38

3

首先,確保您使用的文檔類型聲明不會觸發Quirks Mode。我建議HTML 4.01 Strict, or XHTML 1.0 Strict

其次,請確保您的網站根據W3C validator進行驗證。

最後,發佈有問題的網站,或者是什麼錯誤的片段,以便我們可以進一步提供建議。您可能需要專門用於(版本)IE的conditional CSS

編輯:現在看到你的更新,你能張貼你考慮什麼「破」的截圖,你可以確保網頁是使用過渡文檔類型,它驗證。隨附的HTML也會有幫助。

+0

XHTML 1.0如果頁面是以mimetype text/xml rhather而不是文本/ html的形式提供的,Strict將不會調用怪異模式 – cjk 2009-04-27 07:48:46

1

嘗試使用reset.css文件進行更「開心」的跨瀏覽。您可以從Eric Meyer's site中查看有關reset.css的詳細信息。還有另一個由yahoo開發人員開發的reset.css文件。但是reset.css的結果是相同的。你可以嘗試其中的任何一種。

1

然後一旦您的網站滿意於IE7,您可能需要面對IE6仍然會帶來的所有問題。 IE6仍然運行在約15%的個人電腦上,所以你必須決定你想要做什麼...

哦,別忘了你的Safari,Chrome和FF2測試。 :)

1

對於doctype,主要目的是讓瀏覽器退出quirksmode。

您可以使用他們的

<!DOCTYPE XHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

甚至只是

<!doctype> 

這是HTML5的doctype,並且是簡單的:) [但如果你使用W3C驗證它會給出不同的錯誤檢查你的代碼。]

什麼是最搞定你的是填充:

div#header h1 { padding:30px; ...

IE瀏覽器有一個呃不同於其他瀏覽器的盒子模型,第一件事就是顯示它是邊框和填充。 (在IE中,寬度包括填充,但在其他瀏覽器中不包括)

要解決此問題,可以使用IE條件或hacks爲IE提供自己的樣式,或者可以使用嵌套div和邊距對待更一致。 您也可以使用Dean Edwards IE7或類似的方式使用Javascript修復它。