关于在Vue使用mavonEditor组件,自制文章目录

本文介绍了如何在Vue项目中利用mavonEditor组件创建自定义文章目录,并实现目录跳转功能,避免使用jQuery直接操作DOM。通过在mavonEditor标签上设置ref,在组件挂载后获取DOM,然后遍历目录,结合$nextTick处理DOM更新。同时定义了scrollToPosition和scrollToToc方法,实现在不同目录间平滑滚动的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

使用mavonEditor组件的文章目录:navigation时,该导航目录在当前组件所在的位置。我想将他移出或者干脆自己写目录导航效果。写了个不使用JQuery的方法。
毕竟在vue内在用jquery操作dom有点太大了。所以我使用了refs这个属性


提示:以下是本篇文章正文内容,下面案例可供参考

一、通过ref操作Dom

1.在mavonEditor标签内加入ref

<!-- markdown内容 -->
<!-- https://github.com/hinesboy/mavonEditor/blob/master/README.md -->
<!-- :navigation="isPC"导航栏不需要我自己做 -->
<!-- :toolbarsFlag="false"隐藏编辑栏 -->
<!-- :subfield="false" 显示一个 -->
<!-- defaultOpen="preview"显示预览 -->
<!-- codeStyle="tomorrow-night-eighties" 代码样式 -->
<!-- 如不需要hightlight代码高亮显示,你应该设置ishljs为false -->
<!--ref: vShowContent-->
<mavonEditor
  v-model="content"
  :toolbarsFlag="false"
  :subfield="false"
  defaultOpen="preview"
  :ishljs="false"
  ref="markdown"
/>

2.在挂载完成并dom更新后获取dom

通过使用$nextTick使回调延迟到下次DOM更新循环之后执行
for循环遍历nodelist对象获取id存在的值。因为在文档中每个目录小节的a标签有着自己的独特id
并取出父节点大概是h3标签的内容赋给data()中的tocs值存储了id的值和内容
当然也可以存储节点元素,这样操作dom不需再次遍历

mounted() {
   
   
    //   $nextTick 将回调延迟到下次DOM更新循环之后执行。在修改数据之后立即使用它,然后等待DOM更新。
    this.$nextTick(() => {
   
   
      const aArr = this.$refs.markdown.$refs.vShowContent.querySelectorAll(
Vue 3.2.13和Mavon Editor是两个不同的库,它们可以在Vue项目中一起使用来实现富文本编辑器的功能。 首先,你需要在你的Vue项目中安装Vue 3.2.13和Mavon Editor。你可以使用npm或yarn来安装它们。在命令行中运行以下命令: ```shell npm install vue@3.2.13 npm install mavon-editor ``` 安装完成后,你需要在你的Vue项目中引入VueMavon Editor。在你的Vue组件中,可以按照以下方式引入它们: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import MavonEditor from 'mavon-editor'; import 'mavon-editor/dist/css/index.css'; const app = createApp(App); app.use(MavonEditor); app.mount('#app'); ``` 在上面的代码中,我们首先引入了VueMavon Editor。然后,我们使用`app.use(MavonEditor)`来注册Mavon Editor插件。最后,我们使用`app.mount('#app')`将Vue应用挂载到HTML页面上的一个元素上。 现在,你可以在你的Vue组件使用Mavon Editor了。在模板中,你可以使用`<mavon-editor></mavon-editor>`标签来渲染Mavon Editor组件。例如: ```html <template> <div> <mavon-editor v-model="content"></mavon-editor> </div> </template> <script> export default { data() { return { content: '' }; } }; </script> ``` 在上面的代码中,我们使用`v-model`指令将Mavon Editor的内容绑定到了`content`属性上。这样,当用户在编辑器中输入内容时,`content`属性的值也会相应地更新。 这就是使用Vue 3.2.13和Mavon Editor实现富文本编辑器的基本步骤。你可以根据自己的需求进一步定制和配置Mavon Editor的功能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值