2011-07-31 138 views
2

我想在divs滾動(不固定)的背景圖像。無法獲取背景圖像滾動使用CSS內容(背景附件:滾動)

我試圖複製示例2:(通常工作......如IE9)

http://www.codertools.com/css_help_guide/css_background-attachment.aspx

這裏是我的版本:(有時不工作)

http://sky-walker.net/temp/panning/panning2.html

我已經基本上覆制和粘貼的代碼(除了圖像文件的路徑),但背景圖像保持固定,如果我滾動div ...

我想要背景圖像滾動,如示例2.

我的問題發生在IE9(Windows 7)和Chrome 12(Windows 7和Windows XP)中,但不是IE6(Windows XP)。 在Chrome 12 for Vista中,第一個鏈接(示例2)也不起作用。

+0

這兩個例子對我來說都是一樣的。你使用的是什麼瀏覽器? IIRC它不適用於所有瀏覽器(當然是IE)。 – Carpetsmoker

+0

目前爲止,IE8只對我有效 - FF5和Chrome都失敗了。第一頁中的兩個示例的行爲方式都是相同的。似乎'background-attachment:scroll;'(通常是默認屬性)無法在div上工作(像'fixed'),但是''body''可以工作。有趣 - 不知道爲什麼! –

+0

@Tim:當你說「在FF5中呈現很好」時,你的意思是背景圖像的確在滾動,而不是固定的? –

回答

3

爲什麼要背景圖像滾動? 你的兩個例子對我來說都是一樣的。

CSS2 specs

如果一個元件具有滾動機制(見「溢出」),一個「固定」的背景不與所述元件移動,和一個「滾動」背景不與移動滾動機制

CSS3 specs

滾動
背景固定相對於元件本身和不與它的內容滾動。 (它有效地連接到元素的邊界。)

背景不滾動與視雖然。


編輯:我想你真正想要的是CSS3的local背景附件:

本地
背景是固定相對於元素的內容:如果該元素有一個滾動機制, 背景將滾動顯示元素內容

+0

有趣的...在我提供的第一個鏈接,「固定「如果你滾動整個網頁......例子是固定的......(示例2爲許多瀏覽器(例如IE8)使用本地視口滾動)。 「本地」似乎是我正在尋找的,雖然它可能不支持在一些舊的瀏覽器。 –

+0

我認爲問題在於CSS2瀏覽器(例如IE6)不支持「本地」,對於他們來說,「滾動」就像「本地」一樣。 CSS3瀏覽器對待「滾動」的方式不同......我認爲有些瀏覽器將例子2視爲CSS2網頁,因此將「滾動」視爲「本地」。在下面的鏈接中,IE8將像在示例2中那樣處理滾動... http://sky-walker.net/temp/panning/panning3.html它認爲它是CSS2,因爲我刪除了「!DOCTYPE html」 –

+0

Yea ,可能。當涉及到不同標準之間的切換時,瀏覽器非常有創意;) – user123444555621

1

我在這裏發佈,因爲我最近有一種情況,需要我「欺騙」舊版瀏覽器,生成類似background-attachment: local的行爲。

由於this table指出,IE8和Firefox不支持local,而IE6-7由於錯誤的原因正確解決問題。隨着一點點的jQuery權謀(可在純JavaScript有人足夠決心重寫),我們可以檢測local是否支持元素和模擬滾動背景,如果它不是:

HTML:

<div id="main"> 
... 
</div> 

CSS:

#main { 
    background-attachment: local; 
    overflow: auto; 
    position: relative; /* IE7 wants this for unrelated reasons */ 
    ... 
} 

的jQuery:

if ($('#main').css('background-attachment')!=="local") { 
    // will return the default value of 'scroll' in older browsers 
    $('#main').on('scroll',function() { 
     $main = $(this); 
     $main.css({ 
      'background-attachment': 'fixed', 
      'background-position': '0px '+(0-$main.scrollTop())+'px' 
      // firefox doesn't support 'background-position-y' 
     }); 
    }); 
}; // end if 

如果支持,則使用CSS local,如果不支持,則僅添加JavaScript hack。

請參閱this question爲什麼我必須在CSS中添加position: relative

+0

你有這樣的演示嗎?我有一個與此問題有關的賞金問題,我認爲你可以解決它http://stackoverflow.com/questions/21164303/background-attachment-local-how-to-have-child-elements-with-背景顏色 – 2ne