javascript - 如何使用 javascript 创建导航菜单?单击菜单选项后如何平滑滚动到部分?

标签 javascript html css

我正在尝试仅使用 Javascript 创建一个包含 4 个选项的导航菜单。我正在尝试将其插入 id 为“navbar__list”的“ul”中,并且我想通过 JS 创建带有类和 id 的 li。这是我到目前为止所做的,但我知道我的代码似乎是重复的,并且我不确定如何使其更简洁。

const navMenu = document.querySelectorAll("section");
const navList = document.getElementById("navbar__list");

//Attempt to build the Nav Menu
const navItem1 = document.createElement("a");
navItem1.classList.add("menu-items");
navItem1.setAttribute("id", "menu-1");
navItem1.innerText = "Section 1";
navItem1.href = "#section1";
navList.appendChild(navItem1);

const navItem2 = document.createElement("a");
navItem2.classList.add("menu-items");
navItem2.setAttribute("id", "menu-2");
navItem2.innerText = "Section 2";
navItem2.href = "#section2";
navList.appendChild(navItem2);

const navItem3 = document.createElement("a");
navItem3.classList.add("menu-items");
navItem3.setAttribute("id", "menu-3");
navItem3.innerText = "Section 3";
navItem3.href = "#section3";
navList.appendChild(navItem3);

const navItem4 = document.createElement("a");
navItem4.classList.add("menu-items");
navItem4.setAttribute("id", "menu-4");
navItem4.innerText = "Section 4";
navItem4.href = "#section4";
navList.appendChild(navItem4);

我还想创建滚动效果,因此每当我单击菜单选项时,它都会平滑地滚动到 HTML 中的部分。每个部分都有标签Section1 - Section4。

最佳答案

首先,您可以使用以下代码而不是重复,它会执行相同的任务

const navList = document.getElementById("navbar__list");

for(let i=1; i<5; i++){
    const navItem = document.createElement("a");
    navItem.classList.add("menu-items");
    navItem.setAttribute("id", `menu-${i}`);
    navItem.innerText = `Section ${i}`;
    navItem.href = `#menu-${i}`;
    navList.appendChild(navItem);
}

我相信这将解决第一个问题。

其次,为了平滑滚动。在你的 css 屁股里

html,body{
   scroll-behavior: smooth;
}

有关平滑滚动的更多信息,请查看此 https://www.w3schools.com/howto/howto_css_smooth_scroll.asp

关于javascript - 如何使用 javascript 创建导航菜单?单击菜单选项后如何平滑滚动到部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61052045/

相关文章:

html - CSS 无法正常工作

用于 Project Euler 问题的 JavaScript

javascript - 为什么浏览器会两次获取 Symbol.unscopables?

javascript - 从框架中的其他 iframe 隐藏 iframe 或 div

javascript - 如何以一定 Angular 移动物体?

javascript - 根据页面位置突出显示文本中的字符

css - 多个 CSS 表 - 容器 div 背景不在顶部?

css - Rails 图像和 Assets 未正确加载

javascript - 通过悬停显示内容详细信息,如使用 javascript 的 stackoverflow

android - 移动视口(viewport)尺寸是否大于屏幕尺寸?