JS实现导航吸顶的效果

实现思路:
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。这毕竟是学习中走过的坑。
一个自学前端的小白,文章中如果有不对或者错误的情况,还请大神批评改正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值