我在這裏發佈,因爲我最近有一種情況,需要我「欺騙」舊版瀏覽器,生成類似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
。
這兩個例子對我來說都是一樣的。你使用的是什麼瀏覽器? IIRC它不適用於所有瀏覽器(當然是IE)。 – Carpetsmoker
目前爲止,IE8只對我有效 - FF5和Chrome都失敗了。第一頁中的兩個示例的行爲方式都是相同的。似乎'background-attachment:scroll;'(通常是默認屬性)無法在div上工作(像'fixed'),但是''body''可以工作。有趣 - 不知道爲什麼! –
@Tim:當你說「在FF5中呈現很好」時,你的意思是背景圖像的確在滾動,而不是固定的? –