现在我有一个位于顶部的栏,这是CSS
它的:
#header_bar {
background: #000000;
height: 60px;
position: fixed;
top: 0px;
width: 100%;
z-index: 10020;
}
我的问题是,当页面滚动时,如何让这个栏变得透明?
我应该以某种方式使用不透明度选项吗?
提前致谢!
现在我有一个位于顶部的栏,这是CSS
它的:
#header_bar {
background: #000000;
height: 60px;
position: fixed;
top: 0px;
width: 100%;
z-index: 10020;
}
我的问题是,当页面滚动时,如何让这个栏变得透明?
我应该以某种方式使用不透明度选项吗?
提前致谢!
我喜欢这里的 JQuery 解决方案,但为了完整起见,我希望包含一个 JavaScript 解决方案,以防万一有人在寻找它。
下面将导航栏不在顶部时淡化,在顶部时返回纯色。
function fadeNav(){
var offset = getScrollXY();
//if y offset is greater than 0, set opacity to desired value, otherwise set to 1
offset[1] > 0 ? setNavOpacity(0.5) : setNavOpacity(1.0);
}
function setNavOpacity(newOpacity){
var navBar = document.getElementById("header_bar");
navBar.style.opacity = newOpacity;
}
function getScrollXY() {
var scrOfX = 0, scrOfY = 0;
if( typeof( window.pageYOffset ) == 'number' ) {
//Netscape compliant
scrOfY = window.pageYOffset;
scrOfX = window.pageXOffset;
} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
//DOM compliant
scrOfY = document.body.scrollTop;
scrOfX = document.body.scrollLeft;
} else if( document.documentElement && ( document.documentElement.scrollLeft ||
document.documentElement.scrollTop ) ) {
//IE6 standards compliant mode
scrOfY = document.documentElement.scrollTop;
scrOfX = document.documentElement.scrollLeft;
}
return [ scrOfX, scrOfY ];
}
你们中的一些人会通过在页面上的脚本块中添加它来调用它(底部是最佳实践):
<script type="text/javascript">
window.onscroll = fadeNav;
</script>
该功能的功劳getScrollXY()
归于:此站点-功能位于底部
你不能只用 CSS 来做,你需要 JavaScript/jQuery。这是一个小的 jQuery 代码片段,它将淡入淡出:
var opacity = 1;
var lastScrollTop = 0;
$(window).scroll(function(){
var st = $(this).scrollTop();
if(st == 0)
$('#header_bar').css('opacity','1');
if (opacity > 0.5 && (st > lastScrollTop)){
$('#header_bar').css('opacity','-=0.01');
opacity -= 0.01;
}
else if(opacity < 1)
{
$('#header_bar').css('opacity','+=0.01');
opacity += 0.01;
}
lastScrollTop = st;
});
使用纯 css 将无法实现此效果,但使用 jQuery 操作 css 则可以。
jQuery
$(window).scroll(function() {
$('#header_bar').css({opacity: 0});
});
$(window).scroll(function() {
$('#header_bar').animate({opacity: 0});
});
如果您希望它在您再次到达顶部后回来,请告诉我!
在顶部淡入(似乎淡入非常缓慢)
$(window).scroll(function() {
$('#header_bar').animate({opacity: 0});
if ($(window).scrollTop() === 0) {
$('#header_bar').animate({opacity: 1});
}
});
隐藏和显示
$(window).scroll(function() {
$('#header_bar').hide(500);
if ($(window).scrollTop() === 0) {
$('#header_bar').show(500);
}
});
这对我来说非常有用,您可以将fadeTo 更改为动画,效果也一样好。
var scroll_transparency = false; $(window).scroll(function() { // $('div.navbar-main-top').hide(500); if ($(window).scrollTop() == 0) { scroll_transparency = false; $('div.navbar-main-top').fadeTo( "fast", 1 ); } else { if (scroll_transparency == false) { $('div.navbar-main-top').fadeTo( "fast", .9 ); scroll_transparency = true; } } });