CSSの不透明度を使用する場合でも、古いバージョンのIEにはないサポートとして、JavaScriptフォールバックが必要になります。したがって、CSSとjavascriptフォールバック、または単にjavascriptを使用します。
フルエディット
$(window).scroll(function() {
var scrollYpos = $(document).scrollTop();
if (scrollYpos > 10) {
$('#fixed').css('opacity', .1);
$('#fixed').addClass('scrolled');
} else {
$('#fixed').css('opacity', 1);
$('#fixed').removeClass('scrolled');
}
});
あなたのコメントに基づいて、このJSを追加してください:
$(document).on('mouseenter','.scrolled',function(){
$('#fixed').toggleClass('hover');
$('#fixed').css('opacity',1);
});
$(document).on('mouseleave','.scrolled',function(){
$('#fixed').toggleClass('hover');
$('#fixed').css('opacity',.1);
});
そしてこのCSS;
#fixed.hover {
background-image: url(http://i.imgur.com/XiawICH.png);
background-color: transparent;
}
http://jsfiddle.net/44qEr/7/
スクロールしないときにコードが機能するようにJavaScriptを更新しました。ホバー要素は使用できません。私は通常、可能な限り最短の方法で物事を書かないので、jqueryのプロの中には私のコードを単純化できる人もいると確信しています。
スクロールされていないかどうかを判断するためにscrollYpos
、ホバーステートメントにチェックを追加することもできます。これも機能します。たぶん、実際にはわかりません。ただし、このコードは読みやすく、長くなる可能性があると思います。
以下のコードはクラスがなくても機能しますが、スクロール時にマウスがdivの上にある場合は、上部が少しバグがある可能性があります。他の方法の方が良いと思うので、終了しませんでした。
$(window).scroll(function() {
var scrollYpos = $(document).scrollTop();
if (scrollYpos > 10) {
$('#fixed').css('opacity', .1);
} else {
$('#fixed').css('opacity', 1);
}
});
$('#fixed').hover(function(){
var scrollYpos = $(document).scrollTop();
if(scrollYpos > 0){
$('#fixed').addClass('hover');
$('#fixed').css('opacity',1);
}
}, function(){
var scrollYpos = $(document).scrollTop();
if(scrollYpos > 0){
$('#fixed').removeClass('hover');
$('#fixed').css('opacity',.1);
}
});
http://jsfiddle.net/44qEr/8/