完成PostEdit的图片显示,但是代码高亮显示还是有问题

main
abab2320 3 weeks ago
parent f4a16c5ed1
commit 17653ef774

@ -38,7 +38,7 @@ async function renderMarkdown() {
watch(() => props.content, renderMarkdown, { immediate: true }) watch(() => props.content, renderMarkdown, { immediate: true })
</script> </script>
<style scoped> <style>
.markdown-body { .markdown-body {
font-size: 16px; font-size: 16px;
line-height: 1.8; line-height: 1.8;

@ -58,6 +58,14 @@ const routes:Array<RouteRecordRaw> = [
name:'PostDetail', name:'PostDetail',
component: () => import('@/views/PostDetailPage.vue'), component: () => import('@/views/PostDetailPage.vue'),
}, },
{
path: '/postEdit',
name: 'PostEdit',
component: () => import('@/views/PostEditView.vue'),
meta:{
hideHeader: true,
}
}
]; ];
const router = createRouter({ const router = createRouter({

@ -3,7 +3,9 @@
<div class="post-editor"> <div class="post-editor">
<!-- 顶部工具栏 --> <!-- 顶部工具栏 -->
<div class="toolbar"> <div class="toolbar">
<router-link to = '/personal'>
<el-button :icon="ArrowLeft" circle></el-button> <el-button :icon="ArrowLeft" circle></el-button>
</router-link>
<el-select v-model="selectedCategory" placeholder="选择分区" class="category-select" size="large"> <el-select v-model="selectedCategory" placeholder="选择分区" class="category-select" size="large">
<el-option <el-option
v-for="item in categories" v-for="item in categories"
@ -40,7 +42,6 @@
<el-icon size = 30px v-else><Plus/></el-icon> <el-icon size = 30px v-else><Plus/></el-icon>
</el-upload> </el-upload>
<template #footer> <template #footer>
<button class = "btn btn-primary" @click="uploadPictureDialog = false,previewUrl = ''">取消</button>
<button class = "btn btn-primary" @click="uploadPictureDialog = false ,previewUrl = ''">确定</button> <button class = "btn btn-primary" @click="uploadPictureDialog = false ,previewUrl = ''">确定</button>
</template> </template>
</el-dialog> </el-dialog>
@ -70,10 +71,7 @@
<!-- 右侧Markdown预览框 --> <!-- 右侧Markdown预览框 -->
<div class="preview-pane card"> <div class="preview-pane card">
<div class="editor-title">{{ title || '请输入文章标题' }}</div> <div class="editor-title">{{ title || '请输入文章标题' }}</div>
<div <MarkdownRender :content="markdownText" />
class="markdown-preview"
v-html="DOMPurify.sanitize(compiledMarkdown)"
></div>
</div> </div>
</div> </div>
@ -88,6 +86,8 @@ import type { UploadFile } from 'element-plus'
import { markedHighlight } from 'marked-highlight' import { markedHighlight } from 'marked-highlight'
import 'highlight.js/styles/github.css' import 'highlight.js/styles/github.css'
import { ArrowLeft, Document, Picture, ArrowRight } from '@element-plus/icons-vue' import { ArrowLeft, Document, Picture, ArrowRight } from '@element-plus/icons-vue'
import MarkdownRender from '@/components/MarkdownRender.vue'
import { useRoute } from 'vue-router'
import DOMPurify from 'dompurify' import DOMPurify from 'dompurify'
const title = ref('') const title = ref('')
@ -251,14 +251,15 @@ function insertAtCursor(text: string) {
display: flex; display: flex;
flex-direction:row; flex-direction:row;
justify-content: space-between; justify-content: space-between;
align-items: flex-start;
gap: 16px; gap: 16px;
margin-top:20px; margin-top:20px;
min-height: 100%; min-height: 100%;
.editor-pane, .editor-pane,
.preview-pane { .preview-pane {
min-height:93%;
width:50%; width:50%;
height:auto;
padding: 16px; padding: 16px;
background: #fff; background: #fff;
border-radius: 8px; border-radius: 8px;
@ -275,17 +276,11 @@ function insertAtCursor(text: string) {
.markdown-input { .markdown-input {
font-size:20px; font-size:20px;
width: 100%; width: 100%;
::v-deep(.el-textarea__inner) {
border:none !important;
box-shadow:none !important;
}
} }
}
.markdown-preview {
padding-top: 10px;
img {
max-width: 50%;
height: auto;
display: block;
margin: 0.5rem 0;
}
}
}
</style> </style>

Loading…
Cancel
Save