问题描述
我正在使用 Bootstrap 4 提供的导航栏,并开始通过使用 Intersection Observer 突出显示其链接,因为我还应用了一些 scroll-snap 在我的 CSS - reference img1 中。
我这样做是为了每当我单击一个链接并使其变为活动状态时,然后我将快照滚动到其他部分,它会使它们的链接变为活动状态,同时还删除前一个的 ".active" 类。
问题是之前活动链接的颜色变成了我为 $navbar-light-hover-color 设置的颜色,但我希望它只是非活动颜色 - {{ 3}}。
这只发生在我点击然后滚动捕捉时,当我点击链接而不滚动捕捉时一切正常。
我怀疑这是我的 JS,因为我已经检查了 DOM 更新,所以我怀疑是引导程序导致了问题。
有没有办法阻止我的链接获得我设置的导航栏悬停颜色?
顺便说一句,当我点击我网站的任何其他部分时,悬停颜色会消失,如图 reference img2。
我正在使用的脚本:
$(document).ready(function() {
// smooth scrolling
$(".navbar a").click(function(e) {
e.preventDefault();
document.querySelector(this.hash).scrollIntoView({
behavior: "smooth"
});
});
// link highlighting
const linkOne = document.querySelector(".home-link");
const linkTwo = document.querySelector(".products-link");
const sectionOne = document.querySelector(".home");
const sectionOneOptions = {rootMargin: "-200px 0px 0px 0px"};
const sectionOneObserver = new IntersectionObserver(function(entries,sectionOneObserver) {
entries.forEach(entry => {
if (!entry.isIntersecting) {
linkOne.classList.remove("active");
linkTwo.classList.add("active");
document.querySelector(".navbar").classList.add("navbar-shadow");
}
else {
linkOne.classList.add("active");
linkTwo.classList.remove("active");
document.querySelector(".navbar").classList.remove("navbar-shadow");
}
});
},sectionOneOptions);
sectionOneObserver.observe(sectionOne);
});
滚动捕捉:
body,html {
scroll-snap-type: y mandatory;
scroll-padding-top: 89.8px; // height of my navbar
}
section {
scroll-snap-align: start;
}
为我的导航栏编辑 Bootstrap 变量:
$navbar-light-hover-color: rgba($yellow,.7);
$navbar-light-active-color: rgba($yellow,.9);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)