如果你使用 CSS 不透明度,你仍然需要一个 javascript 后备,因为旧版本的 IE 不支持它。所以我会选择 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/