最近要做一个侧边目录的功能,没有找到类似的组件,索性自己写了一个供大家参考
vue-side-catalog
一个基于vue的侧边目录组件。
源码地址:https://github.com/yaowei9363/vue-side-catalog
安装
npm install vue-side-catalog -S
开始
<template> <div id="app"> <div class="demo"> <h1>JavaScript</h1> <h2>历史</h2> <h3>肇始于网景</h3> <h3>微软采纳</h3> <h3>标准化</h3> <h2>概论</h2> <h2>特性</h2> </div> <side-catalog v-bind="catalogProps" ></side-catalog> </div> </template> import SideCatalog from 'vue-side-catalog' import 'vue-side-catalog/lib/vue-side-catalog.css' export default { components: { SideCatalog, }, data() { return { catalogProps:{ containerElementSelector: '.demo', }, }; }, }
注意: containerElementSelector
属性是必需的,指定文章的容器。
效果如下图:
示例
自定义目录标签
组件默认会把containerElementSelector
元素的直接子集的header
标签作为目录内容,
对应规则为:
h2
=> 一级目录
h3
=> 二级目录
h4
=> 三级目录
h5
=> 四级目录
要修改这一规则可以使用 headList
属性,这个属性的默认值为["h2", "h3", "h4", "h5"]
对应上述规则
注意:自定义题目标签目前只支持containerElementSelector
元素的直接子集的html标签
data(){ return { catalogProps:{ headList: ["h1", "h2", "h3", "h4", "h5"], // 使h1作为一级目录 // headList: ["h3", "h1", "p", "span"], // 指定不同的标签为目录 }, }; },
自定义目录元素
跟上面的自定义目录标签不同,自定义目录元素可以支持任意层级
的含有ref属性的元素
,也可以支持组件
需要用到 refList
属性
<template> <h1>JavaScript</h1> <h2 ref="t1">历史</h2> <h3 ref="t1-1">肇始于网景</h3> <h3 ref="t1-2">微软采纳</h3> <h3 ref="t1-3">标准化</h3> <h2 ref="t2">概论</h2> <h2 ref="t3">特性</h2> <version ref="t4"/> <!-- ... --> </template>
//... import Version from './components/Version'; export default { components: { // ... Version, }, data() { return { catalogProps:{ containerElementSelector: '.demo', refList:[ { ref: 't1' }, { ref: 't1-1', level: 2 // 指定为二级目录 }, { ref: 't1-2', level: 2 }, { ref: 't1-3', level: 2 }, { ref: 't2' }, { ref: 't3' }, { ref: 't4', title: '版本' // 组件需要单独设置title(默认取innerText) }, ] }, }; }, }
效果如下图:
注意:headList
和refList
同时设置的话,会忽视headList
指定元素滚动
也可以使用 scrollElementSelector
对固定元素的内容生成目录,如果不指定该属性则默认监听Window
的scroll事件
data(){ return { catalogProps:{ scrollElementSelector: '.demo', }, }; },
.demo { height: 400px; overflow: auto; }
效果如下图:
在线示例
点击这里
Props
Name
Type
Default
Description
headList
Array
["h2", "h3", "h4", "h5"]
为每级目录指定标签
refList
Array
-
为每级目录指定ref元素,数组每项为对象,包含两个属性<ul><li>ref(必需)该行目录对象的refName</li><li>title该行目录的名称(默认取innerText)</li><li>level(默认为1)该行目录级别</li></ul>
containerElementSelector
String
-
(必需)指定文章的容器
scrollElementSelector
String
Window
需要添加scroll事件的css选择器,默认监听window的scroll事件
openDomWatch
Boolean
false
是否开启dom监听,如果containerElementSelector中有dom变化会重新计算每级目录的offsetTop
Methods
Name
Parameters
Description
initActive
-
使目录第一行处于active状态
setRefList
-
计算每级目录的offsetTop
Slot
Name
Description
-
目录的题目
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】