HTML:
<div id="fixed">
fixed
</div>
CSS:
body{
height: 1000px;
}
#fixed{
background-color:yellow;
width:100%;
left:0;
top:0;
height:50px;
position : fixed;
}
我想在第一次向下滚动后使div的不透明度等于0.1。 我在网上搜索过它,但不确定用css或jquery来实现这个目的。
这是我的小提琴: http://jsfiddle.net/44qEr/
谢谢。
答案 0 :(得分:1)
如果你使用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;
}
我更新了我的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);
}
});
答案 1 :(得分:1)
为了扩展@ Leeish的答案,使用animate
属性可能更好,如下所示:
此外,添加.stop
属性可防止排队的动画阻碍效果。
$(window).scroll(function() {
var scrollYpos = $(document).scrollTop();
if (scrollYpos > 10) {
$('#fixed').stop(true);
$('#fixed').animate({'opacity': .3},500);
} else {
$('#fixed').stop(true);
$('#fixed').animate({'opacity': 1},500);
}
});
答案 2 :(得分:0)
您可以使用计时器检查窗口滚动是否已更改,并根据需要设置不透明度。
(function(){
var $fixed = $('#fixed');
var $window = $(window);
var old = 0;
setInterval(function(){
var _new = $window.scrollTop();
if (old == 0 && _new > 0){
$fixed.css({opacity:0.1});
}
else if (old > 0 && _new == 0){
$fixed.css({opacity:1});
}
old = _new;
}, 50);
})()