gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:55:15 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com