2010-02-22 61 views
2

IE7讓我瘋狂。我知道這是一件小事,但我不知道谷歌還有什麼,我知道我錯過了一些非常小的東西。如何克服IE7填充問題?

<div id="spotlightHolder"> 
<div id="spotlight"> 
    <div id="spotlightMessage"> 
     <h1 id="spotlightTitle">Lorem ipsum dolor sit amet.</h1> 
     <p id="spotlightDescription">Lorem ipsum dolor, consectetur adipiscing elit. Curabitur massa mi, pharetra vitae luctus at, rutrum posuere quam. Integer pharetra tincidunt vehicula. Vestibulum nec purus id purus sodales hendrerit sit.</p> 
     <a id="spotlightBotton" href="#" title="Click here to get our Special"></a> 
    </div> 
</div> 
</div> 

爲上述代碼CSS中:

div#spotlightHolder 
{ 
    background:url(../images/below-menu-gradient.jpg) repeat-x; 
    height:100%; 
    padding:34px 0 0 0; 
} 

div#spotlight 
{ 
    height:325px; 
    background-color:#00aff0; /* Sky blue */ 
    background: rgb(0,175,240) url('../images/spotlight.jpg') no-repeat center center; 
} 

div#spotlightMessage 
{ 
    width:550px; 
    height:210px; 
    /*margin:0 0 0 315px;*/ 
    /*padding:70px 0 0 315px;*/ 
    /*margin:0;*/ 
    padding-top:70px; 
    padding-left:315px; 
    text-align:left; 
} 

div#spotlightMessage p 
{ 
    font-size:22px; 
    font-weight:bolder; 
    margin:0 0 10px 0; 
} 

div#spotlightMessage h1#spotlightTitle 
{ 
    color:White; 
    font-size:35px; 
    margin:0 0 17px 0; 
} 

所有上述的是,在IE7在div ID內的文本塊=聚光燈與FF比較更遠右,鉻的結果,Safari甚至IE8。任何人都可以發現錯誤?

感謝,地理

注:我使用的YUI CSS重置庫,因爲一個SO問題提出本作類似的錯誤,但這並沒有修復錯誤。

注2:我使用的文檔類型:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

重要提示:

通過增加保證金右:在CSS 400像素到div#spotlightMessage IE7的問題已修復。由於我不知道爲什麼會發生這種行爲,因此我會將第一個以投票解釋爲接受答案的人標記出來。感謝你的幫助。

+0

還有多遠吧? 34px,還是別的? – 2010-02-22 01:20:04

+0

約193像素,給予或承擔。 holder div上的34px用於頂部填充,IE7則將文本推向右邊。 =( – Geo 2010-02-22 01:22:29

+1

你在頁面中指定了文檔類型嗎? – jimyi 2010-02-22 01:25:05

回答

0

EDIT

修復一個IE僅問題的最佳方法(並且有許多隻有IE的問題,尤指在6 + 7)是使用IE的「功能」,它允許您有條件地包括樣式信息僅適用於IE。

描述這裏的例子:http://dustinbrewer.com/css-trick-target-only-ie-with-an-if-statement/

我的回答的先前版本指出了「速戰速決黑客」的IE瀏覽器將只包含在IE中一個風格元素。正如在評論中已經指出有很多理由不去做這樣一來,它的唯一積極的方面是,它是快速:

答案之前版本如下

我會使用IE下劃線劈死解決這個問題,這裏是第一個鏈接,我發現它:

http://dustinbrewer.com/weekly-css-trick-the-ie-underscore-hack/

基本上你把下劃線的CSS屬性之前,只有IE6和IE7將使用該屬性。所以,你可以不喜歡_right -34px,它只會影響IE前的版本8

或在這種情況下,將其更改爲具有

padding-left:315px; 
    _padding-left:122px; 

,首先會影響所有其他瀏覽器和第二排將級聯只爲IE

+2

- 1使用黑客。黑客只有在目標瀏覽器的唯一方法是IE纔可以接受。您應該使用條件註釋來包裝特定的「樣式」塊或外部「鏈接」。 – prodigitalson 2010-02-22 01:40:18

+2

使用這些黑客的一個風險是,我們永遠不會知道未來的瀏覽器是否也會解析黑客隱藏的規則。 – 2010-02-22 02:07:03

+2

@Marcel ...如果黑客變得流行並且被廣泛使用,它可能實際上阻礙了新瀏覽器和/或CSS規範的創建。如果W3C因爲某種原因想要包含特殊的「下劃線語法」,它可能不會,因爲它會與受歡迎的黑客攻擊相沖突,並且會在新瀏覽器中嘗試遵循新規範的許多舊頁面造成嚴重破壞。這或多或少是因爲Quirksmode混亂而結束的。 – deceze 2010-02-22 02:15:17

0

從表面上看,你的CSS看起來很好。看看你所有的CSS,特別是適用於body的東西是有用的,但它似乎是一個父元素問題。嘗試爲您的div#spotlightHolder設置固定寬度或百分比寬度。

1

請確保您在doctpye聲明前沒有任何空格/字符。

此外,也可能是一些有關保證金崩潰(但現在我不能告訴你,我剛剛睡醒,我更喜歡殭屍現在:d)

但是,你沒不告訴我們該頁面是否有效。你可能也有一些嵌套元素。所以我認爲最好的辦法是把它放在網上,並給我們鏈接:)

0

我真的很喜歡blueprint做css重置。

它使獲得一致的佈局跨瀏覽器非常容易和相當廣泛的使用。