当前位置: 首页 > 知识库问答 >
问题:

javascript - 这种情况下怎么实现侧边导航栏滚动?

莘欣怿
2023-11-06

要实现的效果
右边内容部分滚动,左边的导航栏自动选中对应部分,导航栏点击也可以跳转到对应部分;

遇到的问题
右边内容特别多,标题大多嵌套在组件中,有些包含标题的部分还是循环出来的,不好获取标题;

目前想到的方法
在挂载完成后通过 querySelector 去获取所有的标题,

image.png

共有1个答案

闾丘山
2023-11-06

这是一种常见的网页设计模式,通常用于提供侧边导航栏,以帮助用户快速导航到网站的不同部分。以下是一种可能的实现方式:

首先,你需要有一个侧边导航栏,以及一个包含内容的主面板。在HTML中,这可能看起来像这样:

<div id="sidebar">  <ul>    <li><a href="#section1">Section 1</a></li>    <li><a href="#section2">Section 2</a></li>    <!-- More sections... -->  </ul></div><div id="content">  <div id="section1">Content 1</div>  <div id="section2">Content 2</div>  <!-- More sections... --></div>

在这个HTML结构中,侧边导航栏包含一些链接,每个链接都指向内容面板中的一个特定部分(由id属性标识)。

接下来,你需要使用JavaScript来实现滚动效果。你可以使用window.scrollTo()函数来滚动页面,并使用事件监听器来检测侧边导航栏的点击事件。以下是一个基本的实现:

// 获取侧边导航栏和内容面板const sidebar = document.getElementById('sidebar');const content = document.getElementById('content');// 为每个链接添加点击事件监听器const links = sidebar.getElementsByTagName('a');for (let i = 0; i < links.length; i++) {  links[i].addEventListener('click', function(e) {    // 阻止默认的点击事件(即打开链接)    e.preventDefault();    // 获取目标部分的ID    const targetId = this.getAttribute('href');    // 滚动到目标部分    window.scrollTo(0, document.getElementById(targetId).offsetTop);  });}

这个JavaScript代码会监听侧边导航栏中的所有链接的点击事件。当一个链接被点击时,它会阻止默认的点击事件(即打开链接),然后获取目标部分的ID,并滚动到目标部分。

 类似资料:
  • 导航和侧边栏 引用网站文档 如果你想在 docs 文件夹中引用另一个文档(或者你通过可选 customDocsPath路径站点配置选项设置的位置),那么你只需要使用你想引用的文档名称。 例如,如果你在 doc2.md 中,而你想引用 doc1.md: 这里引用了一个 [文档](doc1.md). Docusaurus 目前不支持嵌套文件夹中的文件; 只能是在一个平面文件结构中。 我们正在考虑添加

  • 本文向大家介绍bootstrap侧边栏圆点导航,包括了bootstrap侧边栏圆点导航的使用技巧和注意事项,需要的朋友参考一下 如图,随页面向下滑动,到指定页面后圆点变成白色,也可以通过点击圆点跳转到某个位置。 这是四个部分。 这是导航, 这是导航的样式,使其浮动在页面右侧。 在这种情况下,已经可以点击圆点跳转到某个页面,只是圆点的颜色还没有设定好。 select和default决定小圆点的颜色。

  • 这是一个滑动菜单。你可以增加一个下拉列表到你的侧边导航条通过使用可折叠组件。如果你想看一个示例。我们的侧边导航用于小屏幕。为了结合全屏导航,你需要拷贝两份 UL 代码。 HTML 结构 <ul id="slide-out" class="side-nav"> <li><div class="userView"> <div class="background"> <img src="ht

  • 就是鼠标点击左边的栏目,右边的缓缓的定位到栏目,这种用什么做?有相应的插件还是手写js。

  • 想问下这种样式怎么实现

  • 引入 import { createApp } from 'vue'; import { Sidebar, SidebarItem } from 'vant'; const app = createApp(); app.use(Sidebar); app.use(SidebarItem); 代码演示 基础用法 通过 v-model 绑定当前选中项的索引。 <van-sidebar v-mode