在自己的本地(localhost:8080)是正常的,如下图:
部署到服务器后,就都变成一个h1标签了,如下图:
有人知道这是为什么吗?
按F12查看一下样式,调试一下,这样看不出问题
可能样式没打包进去
markdown 语法写错了 比如少换行或者少空格
<template>
<div class="versSion">
<div class="verSion-body">
<div class="menu">
<ul class="menu-list">
<li
v-for="(nav, index) in navList"
:key="index"
:class="{ on: activeIndex === index }"
@click="currentClick(index)"
>
<a href="javascript:;" @click="pageJump(nav.index)" class="title">{{
nav.title
}}</a>
<div v-if="nav.children.length > 0" class="menu-children-list">
<el-tree
ref="selectTree"
:data="navList"
:props="defaultProps"
:node-key="defaultProps.value"
@node-click="handleNodeClick"
default-expand-all
></el-tree>
</div>
</li>
</ul>
</div>
<article
class="help-center-content markdown-body"
v-html="compiledMarkdown"
ref="helpDocs"
@scroll="docsScroll"
></article>
</div>
</div>
</template>
<script>
import marked from 'marked';
import hljs from 'highlight.js'
import 'highlight.js/styles/magula.css';
// import dvmV220 from '@/assets/md/help/dvm_v.text'
let rendererMD = new marked.Renderer();
marked.setOptions({
renderer: rendererMD,
gfm: true,
tables: true,
breaks: false,
pedantic: false,
sanitize: false,
smartLists: true,
smartypants: false,
highlight: function(code) {
return hljs.highlightAuto(code).value;
}
});
export default {
props: ['mdContent'],
props: {
defaultProps: {
type: Object,
default: () => {
return {
value: "index", // ID字段名
label: "title", // 显示名称
children: "children", // 子级字段名
};
},
},
},
data () {
return {
content: '',
navList: [],
activeIndex: 0,
docsFirstLevels: [],
docsSecondLevels: [],
childrenActiveIndex: 0
}
},
beforeRouteEnter(to, from, next) {
const templateId = to.query.templateId;
next((vm) => {
vm.init(templateId)
});
},
mounted () {},
methods: {
init (templateId) {
this.content = require(`@/assets/md/SupermarketMd/${templateId}.text`)
this.navList = this.handleNavTree();
this.getDocsFirstLevels(0);
},
handleNodeClick(data){
this.titleClickScroll = true;
this.$refs.helpDocs.scrollTop = this.$el.querySelector(`#data-${data.index}`).offsetTop - 45;
setTimeout(() => this.titleClickScroll = false, 100);
},
childrenCurrentClick (index) {
// this.childrenActiveIndex = index
},
getDocsFirstLevels (times) {
// 解决图片加载会影响高度问题
setTimeout(() => {
let firstLevels = [];
Array.from(document.querySelectorAll('h1'), element => {
firstLevels.push(element.offsetTop - 60)
})
this.docsFirstLevels = firstLevels;
if (times < 8) {
this.getDocsFirstLevels(times + 1);
}
}, 500);
},
getDocsSecondLevels (parentActiveIndex) {
let idx = parentActiveIndex;
let secondLevels = [];
let navChildren = this.navList[idx].children
if (navChildren.length > 0) {
secondLevels = navChildren.map((item) => {
return this.$el.querySelector(`#data-${item.index}`).offsetTop - 60
})
this.docsSecondLevels = secondLevels;
}
},
docsScroll () {
if (this.titleClickScroll) {
return;
}
let scrollTop = this.$refs.helpDocs.scrollTop
let firstLevelIndex = this.getLevelActiveIndex(scrollTop, this.docsFirstLevels)
this.currentClick(firstLevelIndex)
let secondLevelIndex = this.getLevelActiveIndex(scrollTop, this.docsSecondLevels)
this.childrenCurrentClick(secondLevelIndex)
},
getLevelActiveIndex (scrollTop, docsLevels) {
let currentIdx = null;
let nowActive = docsLevels.some((currentValue, index) => {
if (currentValue >= scrollTop) {
currentIdx = index
return true
}
})
currentIdx = currentIdx - 1
if (nowActive && currentIdx === -1) {
currentIdx = 0
} else if (!nowActive && currentIdx === -1) {
currentIdx = docsLevels.length - 1
}
return currentIdx
},
pageJump (id) {
// console.log('id', id, this.$el.querySelector(`#data-${id}`).offsetTop)
this.titleClickScroll = true;
this.$refs.helpDocs.scrollTop = this.$el.querySelector(`#data-${id}`).offsetTop - 45;
setTimeout(() => this.titleClickScroll = false, 100);
},
currentClick (index) {
this.activeIndex = index
this.getDocsSecondLevels(index)
},
getTitle (content) {
let nav = [];
let tempArr = [];
// /[^\n\s](#+)[^#][^\n]*?(?:\n)/g
content.replace(/(#+)[^#][^\n]*?(?:\n)/g, function(match, m1, m2) {
let title = match.replace('\n', '');
let level = m1.length;
tempArr.push({
title: title.replace(/^#+/, '').replace(/\([^)]*?\)/, ''),
level: level,
children: [],
});
});
// 只处理一级二级标题,以及添加与id对应的index值
// nav = tempArr.filter(item => item.level <= 2);
nav = tempArr
// console.log('nav1', nav)
let index = 0;
nav = nav.map(item => {
item.index = index++;
return item;
});
// console.log('nav', nav)
return nav
},
// 将一级二级标题数据处理成树结构
handleNavTree () {
let navs = this.getTitle(this.content)
let navLevel = [1, 2, 3, 4];
let retNavs = [];
let toAppendNavList;
// console.log('navs', navs)
navLevel.forEach(level => {
// 遍历一级二级标题,将同一级的标题组成新数组
toAppendNavList = this.find(navs, {
level: level
});
if (retNavs.length === 0) {
// 处理一级标题
retNavs = retNavs.concat(toAppendNavList);
} else {
// 处理二级标题,并将二级标题添加到对应的父级标题的children中
toAppendNavList.forEach(item => {
item = Object.assign(item);
let parentNavIndex = this.getParentIndex(navs, item.index);
return this.appendToParentNav(retNavs, parentNavIndex, item);
});
}
});
return retNavs;
},
find (arr, condition) {
return arr.filter(item => {
for (let key in condition) {
if (condition.hasOwnProperty(key) && condition[key] !== item[key]) {
return false;
}
}
return true;
});
},
getParentIndex (nav, endIndex) {
for (var i = endIndex - 1; i >= 0; i--) {
if (nav[endIndex].level > nav[i].level) {
return nav[i].index;
}
}
},
appendToParentNav (nav, parentIndex, newNav) {
let index = this.findIndex(nav, {
index: parentIndex
});
if (index >= 0) {
nav[index].children = nav[index].children.concat(newNav);
}
},
findIndex (arr, condition) {
let ret = -1;
arr.forEach((item, index) => {
for (var key in condition) {
if (condition.hasOwnProperty(key) && condition[key] !== item[key]) {
return false;
}
}
ret = index;
});
return ret;
},
},
computed: {
// content () {
// console.log(`@/assets/md/help/${this.$route.params.name}.text`,require(`@/assets/md/help/${this.$route.params.name}.text`))
// return require(`@/assets/md/help/${this.$route.params.name}.text`)
// },
compiledMarkdown: function() {
let index = 0;
rendererMD.heading = function(text, level) {
if (level <= 3) {
return `<h${level} id="data-${index++}">${text}</h${level}>`;
} else {
return `<h${level}>${text}</h${level}>`;
}
};
rendererMD.image = function(src) {
src = src.replace('..', '')
src = require('@/assets/md' + src)
return `<img src="${src}" alt/>`;
};
// rendererMD.code = function(code, language) {
// console.log('代码信息',code)
// code = code.replace(/\r\n/g, "<br>")
// code = code.replace(/\n/g, "<br>");
// return `<p>${code}</p>`;
// };
return marked(this.content);
}
},
watch: {
'$route.params.name' () {
this.$refs.helpDocs.scrollTop = 0
this.init()
}
}
}
</script>
<style scoped>
*::-webkit-scrollbar-thumb{
background-color:transparent;
}
.el-tree{
background-color: transparent;
}
</style>
<style lang="scss" scoped>
@import "@/assets/scss/_themeify.scss";
.versSion {
height: 100%;
text-align: left;
@include text-color("text-color-menu");
background-color: #ffffff;
img {
@include box-shadow(0px 6px 16px 2px, "login-page-shadow-color");
}
.verSion-body {
height: calc(100% - 45px);
display: flex;
.menu {
width: 270px;
font-family: Source Sans Pro, Helvetica Neue, Arial, sans-serif;
overflow-y: auto;
background-color: #F7F7F7;
margin-left: 10%;
margin-top: 2%;
height: 50%;
ul {
padding-left: 20px;
}
.menu-list {
list-style: none;
li {
list-style: none;
margin: 6px 0;
.title{
color: rgba(16, 16, 16, 100);
font-size: 18px;
text-align: left;
font-family: "SourceHanSansSC-bold";
font-weight: bolder;
}
}
a {
// color: #364149;
@include text-color("text-color-menu");
font-size: 15px;
line-height: 30px;
}
li a:hover {
text-decoration: underline;
}
}
}
.markdown-body {
width:50%;
padding: 0 80px;
overflow: auto;
padding-top: 2%;
// background-color: antiquewhite;
@include text-color("text-color-mian");
h1{
padding: 0!important;
border:none!important;
}
}
}
}
</style>
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y