- 一个非常常见的需求。在一个信息流中,有一个导航栏,当导航栏滑动到顶部的时候,则悬停。其他情况下,跟随文档流进行滑动
先判断滚动条的位置var scrollTop=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;
然后在判断元素的高度var elOffsetTop=document.getElementById(el).offsetTop;
当scrolltop高度大于元素高度时,添加元素的position:fiexed的样式,否则移除设置position:fiexed的样式
一般的做法是通过position: fixed;进行布局,这样可以让navigator导航相对于窗口固定,并且在scroll事件中,对导航栏进行控制,不过这种方式需要js进行配合使用。
在最新的布局方式中,有一个新的属性可以很简单的做出悬浮的导航栏。它不需要使用任何的js代码,并且会向后兼容,老版本的浏览器种导航栏会跟着文档流一起被移动。具体的做法如下:
position: sticky;
position: -webkit-sticky;
top: 20px;
使用sticky属性可以很方便的实现悬停导航栏的方案。
可以从我的codepen中看到具体实现
code of 粘性布局实现
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答2k 阅读