javascript 目录效果

admin3个月前软件教程41
Javascript 目录效果实现方式目录效果是我们在浏览网页时常常会遇到的一个功能,它可以帮助我们快速地浏览并跳转到页面的不同部分。今天我们就来探讨一下如何通过 Javascript 的实现方式来设计一个带有目录效果的网页布局。这里我们使用 HTML/CSS/JavaScript 进行实现。首先,我们需要在 HTML 文档中创建一个目录列表,并且为每一个标题添加 a 标签,该标签的 href 属性指向对应标题的 id,类似于下面这样:
<div ><ul ><li><a href="">Title 1</a></li><li><a href="">Title 2</a></li><li><a href="">Title 3</a></li><li><a href="">Title 4</a></li><li><a href="">Title 5</a></li></ul></div><h2 id="title1"> Title 1 </h2><p>This is the content of Title 1</p><h2 id="title2"> Title 2 </h2><p>This is the content of Title 2</p><h2 id="title3"> Title 3 </h2><p>This is the content of Title 3</p><h2 id="title4"> Title 4 </h2><p>This is the content of Title 4</p><h2 id="title5"> Title 5 </h2><p>This is the content of Title 5</p>
接下来,我们需要用 JavaScript 编写相应的逻辑代码,实现点击目录项时自动滚动到指定的内容,并在目录项上添加一个激活样式,用于标记当前所在的部分。我们可以通过获取对应标题和目录项的 DOM 节点来实现。具体的代码实现如下:
var nav = document.querySelector('.nav');var navList = nav.querySelectorAll('a');var contents = document.querySelectorAll('h2');function getRectTop(elem) {var rect = elem.getBoundingClientRect();return rect.top + window.pageYOffset;}// 地址栏中的hash变化时,跳转到相应的标题部分window.addEventListener('hashchange', function() {var target = document.querySelector(location.hash);if(target) {window.scrollTo(0, getRectTop(target));}});// 监听目录项的点击事件,跳转到相应的内容部分navList.forEach(function(item) {item.addEventListener('click', function(e) {e.preventDefault();// 移除所有目录项的激活状态navList.forEach(function(nav) {nav.classList.remove('active');});item.classList.add('active');var target = document.querySelector(item.getAttribute('href'));if(target) {window.scrollTo(0, getRectTop(target));window.location.hash = item.getAttribute('href');}});});// 监听滚动事件,设置目录项的激活状态window.addEventListener('scroll', function() {for (var i = contents.length - 1; i >= 0; i--) {var content = contents[i];if(getRectTop(content)< window.pageYOffset + 100) {navList.forEach(function(item) {item.classList.remove('active');if('#' + content.id === item.getAttribute('href')) {item.classList.add('active');}});break;}}});
最后,我们需要添加 CSS 样式来美化目录部分,将其放置在页面的固定位置,使其在页面滚动时始终可见即可。通过设置目录项激活状态的不同样式,还可以让用户更方便地区分当前所在的部分。综上所述,通过上述代码实现方式,我们可以很方便地添加目录效果到我们的页面中。这个功能不仅方便用户快速导航到指定的内容,而且可以增强页面的交互性和美观性,提高用户的使用体验。 免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

b站历史记录在哪

b站历史记录在:1、首先我们进入手机桌面,打开哔哩哔哩。2、点击左上角的头像。3、就可以看见历史记录。bilibili(哔哩哔哩,又称:B站)是2009年6月推出的一个ACG相关的弹幕视频分享网站,其...

西瓜视频是不是腾讯旗下的

西瓜视频不是腾讯公司旗下的软件。西瓜视频是字节跳动旗下的个性化推荐短视频平台,通过人工智能帮助每个人发现自己喜欢的视频,并帮助视频创作人们轻松地向全世界分享自己的视频作品。“西瓜视频”是今日头条旗下独...

腾讯会议可以录音录像吗

截止2020年6月11日腾讯会议本身没有录功能制,但是可以使用手机自带的录屏功能来录制会议。腾讯会议是腾讯云旗下的一款音视频会议产品,于2019年12月底上线。具有300人在线会议、全平台一键接入、音...

php mysql加速

对于大部分网站来说,PHP 和 MySQL 是极为常见且常用的技术栈。使用 PHP 和 MySQL 搭建出来的网站,无论是小型的博客网站还是大型电商平台,都需要考虑到网站的性能问题,以确保用户能够快速...

美团无门槛红包怎么用

美团APP版本为v10.10.201.59960,美团无门槛红包的使用方法如下:1、首先打开美团;2、接着点击外卖按钮;3、找到想要点餐的店家,点进去;4、选购好饭菜后,点击右下角的去结算按钮;5、在...

钉钉是否可以登录两个账号呢

大家好,我是80知识网,上述问题将由我为大家进行解答。以钉钉5.1.16版本为例,钉钉是不可以登录两个账号的,不管是电脑客户端还是手机客户端只能登录一个钉钉账号,若想登录第二个账号需要先退出登录中的账...