温馨提示:本站仅提供公开网络链接索引服务,不存储、不篡改任何第三方内容,所有内容版权归原作者所有
AI智能索引来源:http://www.35.com/info/html/wangyezhizuo/Javascript/20181024/4601181.html
点击访问原文链接

从零开始建站(五) - 文章导航目录-站长资讯中心

站长资讯平台首页> 网页制作 > Javascript > 从零开始建站(五) - 文章导航目录 2018-10-24 08:42:25来源:博客园 阅读 ()”#2_3”/>做锚点跳转,关于锚点可以自行百度   2.分析步骤 因为我们使用的是vue做前端框架,所以无法使用锚点跳转,但我们可以使用scrollTop这个属性来使要跳转的H标签的设置到窗口的顶部位置 2.1在文章加载完成后,遍历所有的html标签,如是H标签就拼凑到一个容器中,来构成导航目录的内容。 2.2给上面拼凑的容器中的每个标签绑定一个onclick事件。 2.3点击导航目录后,触发点击事件,调用函数,通过ID来找到之前的H标签的dom对象,并把这个dom对象的距离body顶部的数值设置给domcument的scrollTop,这时候窗口会自动滚动到这个H标签到顶部的位置。 三、实现 1.引入jquery 1.1我们还是通过cdn方式引入:进入bootcdn然后复制jquery的标签,然后在index.html中引入 1.2在webpack.base.conf.js中添加:   externals: {     'vue': 'Vue',     'vue-router': 'VueRouter',     'axios': 'axios',     'vue-resource': 'VueResource',     'jquery':'jQuery'   } 1.3在main.js中 import $ from 'jquery' 2.加载文章内容后处理 2.1构造导航目录div   文章目录   2.2加载文章内容后调用函数处理H标签,构造导航目录div中的 中的子内容,这里我只筛选了一级标题和二级标题,这里有几个比较坑的地方: 2.2.1markid在两个地方中,其中一个会自动转成小写,所以我干脆都转成小写 2.2.2在处理引号的三层嵌套上,每次都很头痛,这里试了很多次才成功   loadNaviFloder:function(){ http://文章导航目录 $("#article-content").children().each(function(index, element) { var tagName=$(this).get(0).tagName; if(tagName.substr(0,1).toUpperCase()=="H"){ var contentH=$(this).text();http://获取内容 var markid="mark-"+tagName.toLowerCase()+"-"+index.toString(); $(this).attr("id",markid);http://为当前h标签设置id if(tagName.toUpperCase() == "H1"){ $(".navi-floder-content").append(''+ contentH +''); }else if(tagName.toUpperCase() == "H2"){ $(".navi-floder-content").append(''+ contentH +''); } } }); }   2.3处理点击事件,这里就是关键地方   window.goAnchor = function(selector){ var anchor = $(selector)[0]; document.documentElement.scrollTop = anchor.offsetTop; }   2.4调节一下导航目录的css,这个就省略了,然后看一下成果,虽然不能双向导航(就是文章滚动到某个位置,导航目录也自动选取某个标题作为活动状态),不过还是蛮可开心了。后续可以想一下,做个页面滚动监听事件,当标签是H标签的时候,判断一下 document.documentElement.scrollTop ==anchor.offsetTop如果这个相等,就把导航目录的对应的标题变换个颜色来反馈给读者当前文章的大体位置。不过实现起来感觉很麻烦啊,后面再慢慢改进。   网上有个anchorjs和autocjs都是做导航目录的,类似于封装好的框架,有兴趣的可以研究一下。   四、注意事项   我在2.2.2中的代码:var contentH=$(this).text();http://获取内容,这里直接取的是H标签中的内容,所以一定要保证H标签下,不在有子标签的存在   例如这里H3标签下还有个span标签,所以这里获得的contentH就是:英雄联盟“召唤师技能”而不是“召唤师技能”,所以我每次在富文本编辑器的时候都会把几个标题处理一下,比如直接从Word中粘贴过来是这样的格式,可以看到直接是标题1的格式,这是我们想要的,但是H1标签下面有子标签,这个时不想要的,所以要改成单纯的H1标签:   这个时候我们选中内容点击一下清除格式:可以看到下面变成了单纯的H1标签,同时可以看到字体变成Verdana,同时也没有了加粗的显示了,也就是说,直接从Word粘贴,它会在原H1标签上多做了一些多余的格式设置。   标签: 版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有js获取地址栏中的数据您只能在 HTML 输出流中使用 document.write,啥意思vue之手把手教你写日历组件三、VUE项目BaseCms系列文章:axios 的封装前端JS实现一键导入excel表格深度剖析Vue中父给子、子给父、兄弟之间传值!Vue.use()源码分析且执行后干什么了主机资讯注册资讯托管资讯vps资讯网站建设建站经验策划盈利搜索优化网站推广免费资源联盟新闻联盟介绍联盟点评网赚技巧搜索引擎网络游戏电子商务广告传媒Asp.Net编程Asp编程Php编程Xml编程AccessMssqlMysql其它Web服务器Ftp服务器Mail服务器Dns服务器安全防护其它软件WordExcelPowerpointGhostVistaQQ空间QQFlashGet迅雷FrontPagesDreamweaverJavascriptcssphotoshopfireworksFlashJava技术C/C++VBdelphi网络协议网络安全网络管理组网方案Cisco技术Win2000WinXPWin2003Mac OSLinuxFreeBSD什么是web前端h5页面是什么意思ps教程免费视频新手如何学习网页设计html5是什么技术淘宝网页如何制作优秀flash动画作品网页制作软件有哪些fireworks设计flash怎么用js特效js获取当前页面url网页设计软件有哪些ps鼠绘入门教程js框架有哪些前端工程师待遇企业网站设计公司ps基础教学视频Photoshop绘制立体风格的微笑表情PS文字特效教程:制作公路上个性的涂鸦Photoshop设计卷边效果的变形金刚电影PS色彩修复教程:利用色阶工具快速给红PS半透明物体抠图:利用通道选区工具抠PS海报设计技巧教程:学习制作个性的扭PS图片特效制作教程:学习给铁塔图片制学习用photoshop把浑浊的海水照片后期PS古风照片教程:给古风美女打造出女侠PS个性人物海报制作:设计创意时尚的玻用javascript实现Base64编码charles抓包出现乱码 SSL Proxying nosocket.io 出现的WebSocket is closed【运行错误】Uncaught DOMException: Becharts在地图上绘制散点图(任意点)layui table表格 表头与内容列错位问ES6 require ( 路径变量 ) 相关使用方省市区三级联动下拉列表,获取地区编号Nuxt项目搭建到发布部署最全前端资源汇总谷歌移动友好算法AVPSFTP软件IEloadimg使用POSTHTTPCOMHTMLem定义数据timwordClass网络安全运维经验IT技术分享运维随笔录鲜花东郊到家往约到家

智能索引记录