固定的边栏或者导航栏貌似现在很流行,特别是边栏的广告位,老是跟着你走。这几天大修了一下主题,把顶部缩到只剩导航栏的位置,固定不动,考虑到边栏内容太小,于是边栏一起修改了,比导航栏稍微复杂一点。
效果:导航栏和边栏固定,不随页面滚动。CSS关键代码:
#header{
width:825px; //宽度需要确定
position:fixed; //固定定位
z-index:999; //解决某些情况下固定定位的内容被其他内容遮盖,值越大,表示放的位置越“上”
}
#sidebar{
width:162px;
position:fixed;
margin-right:-411px; //配合下一条right:50%,使边栏定位在页面之内,值应为网页主题宽度的一半
right:50%
}
其他说明:可以看到以上代码并没有声明定位常用的 top,因为测试发现,当声明了 top,元素就会相对于整个窗口定位,而不是父元素。例如,如果博客开启了顶部的工具栏,而导航栏在工具栏下面,当声明了 top,导航栏就会忽略工具栏所占的位置,和整个浏览器窗口坐标作定位。当然,关闭了工具栏可以临时解决,但是当垂直方向有连续的固定定位是,那就出问题了,就像导航栏和边栏同时固定定位。
附加效果(JS):导航栏遮盖正文时80%透明,鼠标选中导航栏时不透明。效果预览参照本博
jQuery 代码:
$('#header').hover(function(){ //hover函数,括号内,逗号前的函数是选中时的效果,逗号后的函数是移开时的效果
if ($(window).scrollTop()>0){ //页面有滚动,也就是说导航栏遮盖住主体内容
$(this).css("opacity","1") //透明度1,就是不透明
}},function(){ //这一行的逗号就是第一行所提到的
if ($(window).scrollTop()>0){ //无论选中还是移开,首先判断时候有滚动
$(this).css("opacity","0.8")} //非透明度80%
});
这是鼠标选中移开的效果,还有滚动时自动透明的效果
$(window).scroll(function(){ //页面滚动时自动执行
if ($(window).scrollTop() > 0 ){ //页面有滚动,也就是说导航栏遮盖住主体内容
$('#header').css("opacity","0.8"); //透明度80%
}else{
$('#header').css("opacity","1"); //非透明度100%
}});