---
title: 马克笔
icon: mingcute:mark-pen-line
createTime: 2025/02/23 10:46:17
permalink: /guide/markdown/mark/
---

## 概述

==马克笔== 是对 Markdown 中的的标记语法 `==Mark==` 的扩展，支持在内容中使用多种不同的颜色来标记文本，
还可以方便灵活的自定义更多不同的马克笔颜色。

## 语法

### 常规

使用 `== ==` 进行标记。请注意两边需要有空格。

**输入：**

```md
vuepress-theme-plume 是一个 ==简洁美观== 的 主题
```

**输出：**

vuepress-theme-plume 是一个 ==简洁美观== 的 主题

### 配色

不同颜色的马克笔通过 [Markdown 属性语法](./extensions.md#属性支持) 进行设置。

在 标记语法 `==Mark==` 之后紧跟 `{.classname}`，可以为马克笔设置不同的颜色。

**输入：**

```md
==一个提示=={.tip} ==一个警告=={.warning} ==一个错误=={.danger} ==重要内容=={.important}
```

**输出：**

==一个提示=={.tip} ==一个警告=={.warning} ==一个错误=={.danger} ==重要内容=={.important}

## 内置配色

主题内置了以下的配置方案：

- **default**: `==Default==` - ==Default==
- **info**: `==Info=={.info}` - ==Info=={.info}
- **note**: `==Note=={.note}` - ==Note=={.note}
- **tip**: `==Tip=={.tip}` - ==Tip=={.tip}
- **warning**: `==Warning=={.warning}` - ==Warning=={.warning}
- **danger**: `==Danger=={.danger}` - ==Danger=={.danger}
- **caution**: `==Caution=={.caution}` - ==Caution=={.caution}
- **important**: `==Important=={.important}` - ==Important=={.important}

## 自定义配色

马克笔可以通过 [自定义样式](../custom/style.md) 的方式进行自定义。

你可以完全自定义你的马克笔颜色，包括内置的配置方案也可以进行修改。

在主题内部，马克笔通过 `类名` + `CSS 变量` 的方式进行设置。

以下是与马克笔相关的 `CSS 变量`：

- `--vp-mark-text` - 马克笔的文本颜色
- `--vp-mark-bg` - 马克笔的背景颜色
- `--vp-mark-linear-color` - 渐变颜色，仅用于内置的 `--vp-mark-bg-image` 中
- `--vp-mark-bg-shift` - 马克笔的内置渐变背景偏移
- `--vp-mark-bg-image` - 马克笔的背景图片

### 修改内置配色

以下是主题内置的马克笔颜色配置，你可以把它们复制到你的 [样式文件](../custom/style.md#style-文件) 中进行修改。

```css :collapsed-lines
mark {
  --vp-mark-text: currentcolor;
  --vp-mark-bg: transparent;
  --vp-mark-bg-shift: 0.55lh;
  --vp-mark-linear-color: var(--vp-c-brand-3);
  --vp-mark-bg-image: linear-gradient(to right, var(--vp-mark-linear-color) 50%, transparent 50%);
  animation: var(--vp-mark-animation, mark-highlight 1.5s 0.5s forwards);
}

[data-mark-mode="lazy"] mark {
  --vp-mark-animation: none;
}

[data-mark-mode="lazy"] mark.vp-mark-visible {
  animation: mark-highlight 1.5s 0.2s forwards;
}

mark.note {
  --vp-mark-linear-color: #ff0;
}

mark.info {
  --vp-mark-linear-color: var(--vp-c-default-1);
}

mark.tip {
  --vp-mark-linear-color: #39ff14;
}

mark.warning {
  --vp-mark-linear-color: #fc0;
}

mark.caution, mark.danger {
  --vp-mark-linear-color: #f99;
}

mark.important {
  --vp-mark-linear-color: #ccf;
}

[data-theme="dark"] mark.note {
  --vp-mark-linear-color: #660;
}

[data-theme="dark"] mark.tip {
  --vp-mark-linear-color: #063;
}

[data-theme="dark"] mark.warning {
  --vp-mark-linear-color: #c60;
}

[data-theme="dark"] mark.caution,
[data-theme="dark"] mark.danger {
  --vp-mark-linear-color: #c66;
}

[data-theme="dark"] mark.important {
  --vp-mark-linear-color: #66c;
}
```

### 添加配色

在 [样式文件](../custom/style.md#style-文件) 中，通过以下格式添加新的配色:

```css
mark.classname {
  --vp-mark-text: marktext;  /* 文本颜色 */
  --vp-mark-bg-image: none;  /* 背景图片 */
  --vp-mark-bg: mark;        /* 背景颜色 */
  --vp-mark-linear-color: mark;  /* 渐变颜色 */
}
```

然后在 Markdown 中使用 `==Mark=={.classname}` 进行标记。

你可以随意命名 `classname`，除了修改 CSS 变量，也可以添加其他的 CSS 样式属性。

## 动画模式

默认情况下，马克笔会在页面渲染时立即播放描线动画。

如果希望在滚动到可视区域后再播放动画，可以在主题配置中将 `markdown.mark` 设置为 `'lazy'`：

```ts title=".vuepress/config.ts" {5}
export default defineUserConfig({
  theme: plumeTheme({
    markdown: {
      mark: 'lazy',
    },
  }),
})
```
