javascript - 使用航点滚动时如何更改固定导航菜单上的背景颜色(JS ES6)
问题描述
当有人使用航点滚动它时,我试图更改我的导航菜单(导航栏)的背景颜色。问题是,它没有用。因为“我认为”,是因为我看的视频教程过时了?或者我的代码似乎有问题?我审查了 10 次代码,就像我几乎有交叉眼视力一样。
这是我观看的视频教程的最终代码。
import $ from 'jquery';
import waypoints from '../../../../node_modules/waypoints/lib/noframework.waypoints';
class StickyHeader {
constructor() {
this.siteHeader = $(".site-header");
this.headerTriggerElement = $(".large-hero__title");
this.createHeaderWaypoint();
}
createHeaderWaypoint() {
var that = this;
new Waypoint({
element: this.headerTriggerElement,
handler: function() {
that.siteHeader.addClass("site-header--dark");
}
});
}
}
export default StickyHeader;
如果有人可以帮助我,我将不胜感激。这是我的 App.js
import MobileMenu from './modules/MobileMenu';
import RevealOnScroll from './modules/RevealOnScroll';
import $ from 'jquery';
import StickyHeader from './modules/StickyHeader';
var mobileMenu = new MobileMenu();
var revealOnScroll($(".feature-item"), "85%");
var revealOnScroll($(".testimonial"), "60%");
var stickyHeader = new StickyHeader();
解决方案
如果你想废弃航点插件,你可以使用 vanilla javascript 来做到这一点,只需使用getBoundingClientRect
每个元素。
class StickyHeader {
constructor() {
var that = this;
this.siteHeader = document.querySelector(".site-header");
this.headerTriggerElement = document.querySelector(".large-hero__title");
window.addEventListener('scroll', function() {
that.createHeaderWaypoint();
});
}
createHeaderWaypoint() {
var that = this;
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var headPosition = this.siteHeader.getBoundingClientRect();
var screenPosition = this.headerTriggerElement.getBoundingClientRect();
if (headPosition.bottom >= screenPosition.top) {
this.siteHeader.classList.add("active");
} else {
this.siteHeader.classList.remove("active");
}
}
}
temp = new StickyHeader();
html,
body {
height: 100px;
}
body {
padding: 0;
margin: 0;
}
.site-header {
background: red;
height: 100px;
position: fixed;
top: 0;
width: 100%;
}
.large-hero__title {
background: blue;
height: 100px;
margin: 1400px 0;
}
.site-header.active {
background: black
}
<div class="site-header">header</div>
<div class="large-hero__title">hero!</div>
推荐阅读
- xcode - 在 jenkins 机器中使用 xcode 从 xcarchive 文件导出 ipa 的问题
- react-native - 尝试在 React-Native 中调用虚方法
- angular - 装饰器不支持函数表达式考虑将函数表达式更改为导出函数
- python-3.x - 在 python 中获取所有亚马逊 EC2 实例属性
- python - 如何正确应用类方法?
- javascript - 试图在 JS 中按类隐藏元素,但收到“无法设置未定义的属性‘类’”错误
- angular - 带有拦截器的 Angular ngrx 无限循环
- watchkit - 在 Apple Watch 中使用 Apple 登录
- c# - 有没有办法访问 WPF WebBrowser 控件不支持的网页?
- flutter - Flutter Drive 测试在 OS pop-ip 上崩溃(例如通知同意)