javascript 目录效果

admin3个月前软件教程34
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 样式来美化目录部分,将其放置在页面的固定位置,使其在页面滚动时始终可见即可。通过设置目录项激活状态的不同样式,还可以让用户更方便地区分当前所在的部分。综上所述,通过上述代码实现方式,我们可以很方便地添加目录效果到我们的页面中。这个功能不仅方便用户快速导航到指定的内容,而且可以增强页面的交互性和美观性,提高用户的使用体验。 免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

拼多多店铺审核要多久

拼多多平台会在2个工作日内审核,如果通过审核,商家会收到平台发送的审核通过信息,及缴纳保证金提醒。拼多多于2015年9月正式成立时间,它是一家专注于C2B拼团的第三方社交电商平台。用户通过发起和朋友、...

美拍视频播放失败怎么回事

美拍视频播放失败的原因如下:1、首先应该是网络问题,换个网络环境试试;2、然后,如果还是不行的话,重启下手机;3、以上两种方法还是不行,就请卸载重装美拍试试。美拍是厦门美图网科技有限公司于2014年5...

闲鱼确认收货后追回

闲鱼确认收货后追回一般是需要和卖家协商,如果卖家不想退,就需要说明理由。闲鱼确认收货了如果没有遇到质量和欺诈行为是不可以退款的,在决定购买时,一定要三思而后行,以免买回来后造成不必要的问题。闲鱼是阿里...

手机potato软件是干嘛的

手机potato软件是一款专注于安全的即时聊天工具。它更快、更安全、更开放而且完全免费。用最先进的安全技术,来保证你的信息不被窃取。potato官网下载软件风格和音乐都不错,属于感官系的用户可以一试,...

小说APP设计过程怎样的

看小说是几乎大家在闲暇之余都爱做的事,或者在闲暇之余学习一些知识来充实自己。在以前,人们基本只能通过书本来阅读,外出旅行往往都会带上一两本喜欢的书供自己阅读。随着互联网信息化的普及以及移动互联网的深入...

网易云举报人会被对方知道吗

网易云举报人不会被对方知道。被举报人是不能通过系统来查看是谁举报了自己。网易云音乐是一款由网易开发的音乐产品,是网易杭州研究院的成果,依托专业音乐人、DJ、好友推荐及社交功能,在线音乐服务主打歌单、社...