私は最近、古いブラウザを使用してbackground-attachment: local
のような動作を「トリックする」必要があるため、ここに投稿しています。
this tableが指摘しているように、IE8とFirefoxはlocal
をサポートしていませんが、IE6-7では間違った理由があります。
HTML::
<div id="main">
...
</div>
そうでない場合は(十分に決定した誰かによって純粋なJavaScriptで書き換えることができます)少しjQueryの策略で、我々は
local
要素でサポートされているかどうかを検出し、スクロールの背景をシミュレートすることができます
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ハックはサポートされていない場合にのみ追加されます。
position: relative
をCSSに追加しなければならなかった理由は、this questionを参照してください。
どちらの例も同じように見えます。どのブラウザを使用していますか? IIRCは、すべてのブラウザ(もちろんIEを意味する)では動作しません。 – Carpetsmoker
これまでのところ私はIE8上でしか動作しませんでした.FD5とChromeはどちらも失敗します。最初のページの両方の例は同じように動作しています。 'background-attachment:scroll;'(これは通常はデフォルトのプロパティです)はdivで動作しません( 'fixed'のように動作します)。興味深い - 理由がわからない! –
@Tim:「FF5でうまくレンダリングする」と言うと、背景画像が実際にスクロールしていて、固定されていないということですか? –