vue3使用v-md-editor锚点
vue3使用v-md-editor锚点
预览模式展示了如何在预览模式下通过外部锚点来定位到文档标题位置。
官网示例
https://ckang1229.gitee.io/vue-markdown-editor/zh/senior/anchor.html
xxx.vue
<template>
<a-back-top :visibilityHeight="200" />
<div>
<div class="main">
<a-page-header :title="articleForm.title" />
<v-md-preview :text="articleForm.content" ref="preview"></v-md-preview>
</div>
<div class="anchor">
<div class="anchor-tag" v-for="anchor in state.titleData" :key="anchor" @click="handleAnchorClick(anchor)">
{{ anchor.title }}
</div>
</div>
</div>
</template>
script setup
<script lang="ts" setup>
import { articleForm } from '@/api/http/data/model/artileModel'
import { article } from '@/api/http/index'
import { getCurrentInstance } from 'vue'
const route = useRoute()
const state: any = reactive({
id: route.query.id,
titleData: []
})
const { proxy }: any = getCurrentInstance()
const preview: any = ref()
function handleAnchorClick(anchor: any) {
const { lineIndex } = anchor
const heading = preview.value.$el.querySelector(`[data-v-md-line="${lineIndex}"]`)
if (heading) {
preview.value.scrollToTarget({
target: heading,
scrollContainer: window,
top: 60
})
}
}
onMounted(async () => {
await article.GetById(state.id).then(res => {
articleForm.content = res.data.data.content
articleForm.title = res.data.data.title
})
const anchors = proxy.$refs.preview.$el.querySelectorAll('h1,h2,h3,h4,h5,h6')
// console.log('%c [ anchors ]-35', 'font-size:13px; background:pink; color:#bf2c9f;', anchors)
const title = Array.from(anchors).filter((title: any) => {
return !!title.innerText.trim()
})
if (!title.length) {
state.titleData = []
return
}
const hTags = Array.from(
new Set(
title.map((title: any) => {
return title.tagName
})
)
).sort()
state.titleData = title.map((el: any) => {
return {
title: el.innerText,
lineIndex: el.getAttribute('data-v-md-line'),
indent: hTags.indexOf(el.tagName)
}
})
})
</script>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~