仅使用原生JavaScript的粘性导航条
Sticky nav bar with native JavaScript only
如何在不使用jQuery的情况下制作一个粘性导航条?
我想这样做:
if (scrollheight == x)
navbar.addclass "sticky"
我最近用EmberJS做了一个sticky侧边栏导航。
无论如何,最后我决定将解决方案提取到香草javascript为基础的笔,因为它似乎粘导航是相当常见的功能。
你可以在这里看到:http://codepen.io/moubi/pen/ALpmwy
Github项目:https://github.com/moubi/sticky-nav
这是我使用的功能的js代码:
// https://github.com/moubi/sticky-nav
const NAV_OFFSET = 30;
class StickyNav {
constructor() {
this.el = null;
this.anchor = null;
this.removedScrollClass = '';
this.events();
}
didRender() {
this.el = document.getElementsByTagName('nav')[0];
this.anchor = document.getElementsByClassName('nav-anchor')[0];
this.removedScrollClass = this.el.className;
this.onResize();
}
onResize() {
var { paddingLeft, paddingRight } = window.getComputedStyle(this.el.parentNode),
parentWidth = this.el.parentNode.offsetWidth - parseInt(paddingLeft) - parseInt(paddingRight);
this.el.style.width = `${parentWidth}px`;
}
onScroll() {
var scroll = Math.max(document.documentElement.scrollTop, document.body.scrollTop),
topOffset = this.anchor.offsetTop - NAV_OFFSET;
if (this.el.className.indexOf('scroll') != -1) {
if (scroll <= topOffset) {
this.el.className = this.removedScrollClass;
}
} else if (scroll >= topOffset) {
this.el.className += ' scroll';
}
}
events() {
window.addEventListener('load', () => { this.didRender(); });
window.addEventListener('scroll', () => { this.onScroll(); });
window.addEventListener('resize', () => { this.onResize(); });
}
}
new StickyNav();
这个解决方案应该适用于顶部导航栏,也有一些小的调整。在代码中,我实际上添加了scroll
类,但在您的情况下,它应该是sticky
-在最后"粘性"听起来更合理。
相关文章:
- MVC 3页面导航和使用javascript传递参数
- 为什么可以't我在JavaScript中获取导航器对象的属性计数
- (html/css/javascript)试图使导航栏中的“当前页面”链接变成不同的颜色
- 导航到新url时,Javascript在Safari中不起作用
- Wordpress 3级水平导航-需要jquery/javascript帮助进行对齐
- 使用选项卡导航到不同的html文件(html、JavaScript)
- Javascript/Css导航未显示在jquery文档上,仅在ie中准备就绪
- Javascript散列导航&外部js文件
- 如何在javascript中检测客户端上的反向导航
- 使用数据幻灯片到和javascript将类添加到转盘导航
- javascript confirm()取消导航
- 直接导航到chrome中的页面时未加载Javascript脚本
- IE7在带有Javascript选项卡导航的页面上误读CSS
- 使用 CSS 或 javascript/jQuery,我会使用哪种方法来使我的网站的导航栏看起来更 3d-ish
- WebBrowser DocumentText 无法在不提供完整路径的情况下导航 javascript
- 导航javascript上的红线悬停效果
- 如何动态导航javascript多维数组
- 页面滚动活动导航javascript
- 解决方案的服务器端网页抓取/导航(JavaScript支持)
- 引导导航Javascript不工作