javascript - 如何让我的导航栏在滚动经过 anchor 时更改 CSS 类?

标签 javascript css twitter-bootstrap navigation twitter-bootstrap-3

我正在使用 Bootstrap 3 并希望实现 this effect当用户滚动经过我页面上的大标题图像时。我需要导航栏的背景从透明变为白色。我查看了他们的代码,我知道它是用 javascript 完成的,甚至还看到了 WHERE我认为它正在发生(在该 JS 中查找 ID“#main-header”)...

除了不了解高级 Javascript 之外,我正在寻找一种方法,以便在滚动到某个点时将其应用于我的导航栏。我的代码的类称为“导航栏”,我希望它在通过“#main”时变成白色。如果您需要更多信息,请告诉我,如果有人愿意提供帮助,请提前致谢!

最佳答案

完成您尝试做的事情的最简单方法是结合一些简单的 javascript(在本例中为 jQuery 提供支持)和 CSS3 转换。

我们将使用 JS 检查每个滚动事件的窗口滚动位置,并将其与 #main 元素底部的距离进行比较 - 如果滚动位置更大,那么我们将应用一个类到body 表示我们已经滚动到 #main,然后我们将使用 CSS 定义该“状态”的导航样式。


因此,我们的基本标记:

<nav class="nav">
    <a href="#" class="logo">[logo]</a>
</nav>
<div id="main">#main</div>
<div id="below-main">#below-main</div>

还有我们的 javascript:

// get the value of the bottom of the #main element by adding the offset of that element plus its height, set it as a variable
var mainbottom = $('#main').offset().top + $('#main').height();

// on scroll, 
$(window).on('scroll',function(){

    // we round here to reduce a little workload
    var stop = Math.round($(window).scrollTop());

    if (stop > mainbottom) {
        $('.nav').addClass('past-main');
    } else {
        $('.nav').removeClass('past-main');
    }

});

还有,我们的风格:

.nav {
    background-color:transparent;
    color:#fff;
    transition: all 0.25s ease;
    position:fixed;
    top:0;
    width:100%;
    background-color:#ccc;
    padding:1em 0;
    /* make sure to add vendor prefixes here */
}

.nav.past-main {
    background-color:#fff;
    color:#444;
}

#main {
  height:500px;
  background-color:red;
}

#below-main {
  height:1000px;
  background-color:#eee;
}

关于 Codepen 的工作示例

我就是这样做的here .我还采用了一些滚动节流和更复杂的样式语义,但这是它的要点。

关于javascript - 如何让我的导航栏在滚动经过 anchor 时更改 CSS 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20276166/

相关文章:

HTML 列表 5 列

CSS ul li 高度不覆盖内容

jquery - slider 高度技术

javascript - 如何在 AngularJS 中使用 ngTable 搜索过滤日期对象

javascript - HTML - 从 JavaScript 中的 URL 位置读取 .txt 文件

javascript - jQuery 在 append 项目上单击操作

javascript - 如何删除选定的文本区域

css - 边框图像重复 : space not working

javascript - 在断点处将 img 移动到不同的 bootstrap col

javascript - jQuery 验证不适用于 Bootstrap 3 选项卡式表单