实现思路:
1。获取nav元素,获取它距离顶部的值;
2.获取滚动条距离顶部的值;
3.判断,如果滚动条值大于nav距离顶部的值,改变nav的定位和他top的值;
下面贴出代码,我自己已经测试过了;
window.onload = function(){
var nav = document.getElementById("nav");//获取页面nav元素
var navTop = nav.offsetTop;//获取nav距离顶部的距离
//滚动条滚动时执行函数
window.onscroll = function(){
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;//获取滚动条距离顶部的距离,后面两条时为了兼容浏览器
if(scrollTop>navTop){
nav.style.position = "fixed";
nav.style.top = "0";
nav.style.left = "0";
}
else if(scrollTop=navTop){
nav.style.position = "";//我做的时滚动条在中部的,在加个判断
}
else{
nav.style.position = " ";
}
}
}
html,和css就不贴了 ,自己可以做个小页面试下。
有几点注意的问题,如果获取不到滚动条距离顶部的距离的话,先检查下自己得到css里面html,body是否设置了heigh设置了100%,或者overflow是否是hidden。这毕竟是学习中走过的坑。
一个自学前端的小白,文章中如果有不对或者错误的情况,还请大神批评改正。