javascript - 导航栏内容不会在移动视图中加载
问题描述
导航栏内容在移动视图中加载正常,但是,当从内容中单击链接并且我尝试再次加载导航栏时,内容不会加载。简而言之,内容只加载一次,点击后不会再次加载。
我曾尝试编辑 JS,但由于我仍在学习 Web 开发,因此非常困难。您可以在我创建的代码笔上看到导航栏https://codepen.io/Jaderianne/pen/MMRpqa
const navSlide = () => {
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav-links');
const navLinks = document.querySelectorAll('.nav-links li');
burger.addEventListener('click', () => {
nav.classList.toggle('nav-active');
navLinks.forEach((link, index) => {
if (link.style.animation) {
link.style.animation = '';
} else {
link.style.animation = `navLinkFade 0.5s ease forwards ${index / 7 +
0.5}s`;
}
});
burger.classList.toggle('toggle');
});
const closeNav = () => {
nav.classList.toggle('nav-active');
burger.classList.toggle('toggle');
}
navLinks.forEach(link => link.addEventListener('click', closeNav));
}
navSlide();
我希望导航栏在单击“汉堡”时加载内容,即使在单击某些内容之后也是如此。
解决方案
看来这if (link.style.animation)
条线是这里的问题。您可以尝试打印link.style.visibility
forEach 循环内部,看看我在说什么。
每当您打开导航栏时,link.style.animation
都会设置,并且在导航栏关闭时不会取消设置。
要在您的代码中快速修复此问题 - 每当您关闭导航时,您都需要重置动画属性。用这个替换现有的closeNav
功能 -
const closeNav = () => {
nav.classList.toggle('nav-active');
burger.classList.toggle('toggle');
// New code
navLinks.forEach((link, index) => {
link.style.animation = '';
});
}
这是一个执行此操作的代码笔。
注意:此解决方案假定您只想使用 JS 执行此操作(因为您提到您正在学习)。我建议检查这种事情的CSS 关键帧,因为我相信这会更容易一些。
推荐阅读
- powershell - 如何循环遍历从文件中读取的字符串,分别针对一组固定的字符,如果它们匹配,则在 powershell 中打印字符串
- javascript - 如何在 ios 上获得半毫秒的振动以与 expo 本机反应?
- python - 将带有 int 和字符串的混合日期转换为日期
- python - Matplotlib 饼图显示使用切片时出错
- python-3.x - 是否可以在单行理解中将列表作为字典列表中的值制作字典?
- python - 使用频道名称向特定频道发送消息
- django - 一个路由中的会话变量存在,另一个是无
- reactjs - redux-form: REGISTER_FIELD / UNREGISTER_FIELD 在更改后被调用
- realm - 领域 - 使用除主键之外的其他键创建和更新对象
- javascript - Flask - 调用 python 函数,该函数在按钮 OnClick 事件上接受输入参数