如果你使用CSS不透明度,你仍然需要一個javascript fallback來支持它在老版本的IE中不存在。所以我會去用CSS和JavaScript後備,或只是JavaScript。
FULL EDIT
$(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上方,仍然可能在頂部有點bug,但我沒有完成它,因爲我認爲其他方式更好。
$(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/
你沒有回答這個問題。 – dezman 2013-02-28 17:13:32
我想這個問題是:「我在網上搜索它,但不確定使用CSS或jQuery來完成這一點。「 – Leeish 2013-02-28 17:14:38
Leeish已經解決了我的問題,謝謝你們 – dodgerblue 2013-02-28 17:19:11