markdown 样式
·
这是一个为你准备的通用 Markdown 内容样式 CSS。它专为文章阅读优化,采用了类似“GitHub”和“Medium”的极简风格,排版清晰,非常适合博客文章(如你之前的 BlogDetail 组件)使用。
你可以直接将这段 CSS 复制到你的 Vue 组件的 <style> 标签中,或者全局样式文件中。
🎨 极简阅读风 CSS
/* Markdown 内容容器基础样式 */
.markdown-body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.8;
color: #24292e;
background-color: #ffffff;
padding: 20px;
max-width: 900px; /* 限制最大宽度,提升阅读体验 */
margin: 0 auto;
box-sizing: border-box;
}
/* 标题样式 */
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 24px;
margin-bottom: 16px;
font-weight: 600;
line-height: 1.25;
color: #1f2328;
}
.markdown-body h1 {
font-size: 2em;
border-bottom: 1px solid #eaecef;
padding-bottom: 0.3em;
}
.markdown-body h2 {
font-size: 1.5em;
border-bottom: 1px solid #eaecef;
padding-bottom: 0.3em;
}
.markdown-body h3 { font-size: 1.25em; }
.markdown-body h4 { font-size: 1em; }
/* 段落与文本 */
.markdown-body p {
margin-top: 0;
margin-bottom: 16px;
}
.markdown-body strong {
font-weight: 600;
color: #24292e;
}
.markdown-body em {
font-style: italic;
}
/* 链接样式 */
.markdown-body a {
color: #0366d6;
text-decoration: none;
background-color: transparent;
}
.markdown-body a:hover {
text-decoration: underline;
}
/* 代码块样式 */
.markdown-body code {
padding: 0.2em 0.4em;
margin: 0;
font-size: 85%;
background-color: rgba(27, 31, 35, 0.05);
border-radius: 6px;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
color: #24292e;
}
.markdown-body pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f6f8fa;
border-radius: 6px;
margin-bottom: 16px;
}
.markdown-body pre code {
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
color: #24292e;
}
/* 引用块样式 */
.markdown-body blockquote {
padding: 0 1em;
color: #6a737d;
border-left: 0.25em solid #dfe2e5;
margin: 0 0 16px 0;
}
/* 列表样式 */
.markdown-body ul,
.markdown-body ol {
padding-left: 2em;
margin-top: 0;
margin-bottom: 16px;
}
.markdown-body li {
margin-bottom: 4px;
}
.markdown-body li > p {
margin-top: 16px;
}
/* 表格样式 */
.markdown-body table {
display: block;
width: 100%;
width: max-content;
max-width: 100%;
overflow: auto;
border-spacing: 0;
border-collapse: collapse;
margin-bottom: 16px;
}
.markdown-body table th,
.markdown-body table td {
padding: 6px 13px;
border: 1px solid #dfe2e5;
}
.markdown-body table tr {
background-color: #fff;
border-top: 1px solid #c6cbd1;
}
.markdown-body table tr:nth-child(2n) {
background-color: #f6f8fa;
}
/* 图片样式 */
.markdown-body img {
max-width: 100%;
box-sizing: border-box;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
/* 分割线 */
.markdown-body hr {
height: 0.25em;
padding: 0;
margin: 24px 0;
background-color: #e1e4e8;
border: 0;
}
🚀 如何在 Vue 中使用
假设你的组件结构如下,你只需要给渲染 HTML 的容器加上 class="markdown-body" 即可。
<template>
<div class="blog-detail">
<h1>{{ title }}</h1>
<!-- 关键:在这里加上 markdown-body 类名 -->
<div class="markdown-body" v-html="content"></div>
</div>
</template>
<script>
export default {
data() {
return {
title: "我的博客文章",
content: `<p>这是一个测试段落。<strong>加粗文字</strong> 和 <code>代码片段</code>。</p>`
}
}
}
</script>
<style scoped>
/* 引入上面的 CSS 代码 */
.markdown-body {
/* ...粘贴上面的 CSS 内容... */
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
/* ...省略其他属性... */
}
/* 注意:如果使用 scoped,可能需要使用 ::v-deep (Vue 2) 或 :deep() (Vue 3) 来穿透样式 */
</style>
💡 提示
如果你的内容是动态渲染的 HTML(使用 v-html),在 Vue 2 中如果使用了 scoped,你可能需要使用深度选择器来确保样式生效:
/* Vue 2 scoped 写法 */
<style scoped>
::v-deep .markdown-body {
/* 样式内容 */
}
</style>
更多推荐

所有评论(0)