【问题标题】:Change bootstrap navbar link color based on position on page根据页面上的位置更改引导导航栏链接颜色
【发布时间】:2015-03-26 16:21:20
【问题描述】:

我有点困惑。在使用引导程序之前,我已经创建了多个页面网站,我会在每个页面上包含导航栏标记,并将当前页面链接设置为 .active 类,以便我可以访问它并很好地突出显示它。

我现在正在开发一个单页网站,它有一个粘性(“固定”)导航栏。我将它设置为使用 jQuery 根据该部分 ID 滚动到页面下方的特定部分。但是,如何访问我当前所在的“当前”导航栏链接?

基本上,当我向下滚动页面时,我将浏览所有链接,我希望链接根据它所在的部分更改颜色。我是否需要使用 jQuery 来更改链接的类?或者引导程序是否为此内置了一些东西?

【问题讨论】:

  • 你能向我们展示代码吗(可能在 jsfiddle 中)否则很难回答你的问题
  • 用 div/content 偏移量检查页面滚动位置?
  • 没有发布任何问题/问题或源代码,我只能建议查看window.pageYOffset 和内容偏移量,例如offsetTop。我有一个使用纯 javascript 完成的相同类型菜单的网站,效果很好,但我相信 jQuery 会更容易,因为它大部分都是为你完成的。

标签: javascript jquery html css twitter-bootstrap


【解决方案1】:

我认为您正在寻找 Bootstrap 的 Scrollspy。当当前滚动位置与页面上某个元素的 id 匹配时,它将在导航栏 li 元素中设置 active 类。

首先在 BODY 标签上设置 Scrollspy。 offset 是固定导航栏的高度:

$('body').scrollspy({
  target: '#myNavbar',
  offset: 50
});

HTML:

 <div class="navbar-collapse collapse" id="myNavbar">
    <ul class="nav navbar-nav navbar-left">
       <li><a href="#section1">One</a></li>
       <li class="active"><a href="#section2">Two</a></li>
       <li><a href="#section3">Three</a></li>
       ..
    </ul>
 </div>   

 <div id="section1">Section One</div>
 <div id="section2">Section Two</div>
 <div id="section3">Section Three</div>

然后覆盖此 CSS 以更改 .active 链接颜色:

.navbar-nav li>a:hover,.navbar-nav li>a:focus,.navbar-nav li.active {
    background-color:#000;
}

示例:http://www.codeply.com/go/v1AEOlZMtC

【讨论】:

  • 这正是我想要的!谢谢!我很确定如何解释它/用词来解释它,但绝对是这样。就像我说的那样,我已经用多个页面完成了它,因为每个页面都设置了活动,但是在单页布局上,我知道活动类需要实时更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多