当前位置:网站首页>Milkdown 控件图标
Milkdown 控件图标
2022-07-07 11:08:00 【Cliven_】
现象说明
在vite + vue3的项目中,使用Milkdown作为Markdown编辑框
Milkdown.vue
<template>
<VueEditor :editor="editor" />
</template>
<script setup> import {
Editor, rootCtx, defaultValueCtx } from "@milkdown/core"; import {
nord } from "@milkdown/theme-nord"; import {
VueEditor, useEditor } from "@milkdown/vue"; import {
commonmark } from "@milkdown/preset-commonmark"; import {
emoji } from "@milkdown/plugin-emoji"; import {
history } from '@milkdown/plugin-history'; import {
tooltip } from '@milkdown/plugin-tooltip'; import {
menu } from "@milkdown/plugin-menu"; const {
editor } = useEditor((root) => Editor.make() .config((ctx) => {
ctx.set(rootCtx, root); ctx.set(defaultValueCtx, "# Milkdown Vue"); }) .use(nord) .use(emoji) .use(commonmark) .use(history) .use(menu) .use(tooltip) ); </script>
显示效果如图
所有图标区域都变为了文字,并且挤在一起非常难看,这是因为 milkdown/theme-nord
主题使用了google提供的 Google material icons
从 Milkdown官方给出的示例 可以看到
在index.html
文件中是引入了Google图标字体库的。
解决
方式一 在线引入
这里我们的空间没有显示图标的原因就是没有Google图标字体库导致,我们可以和官方一样,直接在index.html
文件中增加一行CSS文件的引用就可以。
index.html
<html>
<head>
...
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons+Outlined" />
...
</head>
...
</html>
该种方式将会使用Google的CSS2 API自动引用并相关字体和配置,该方式有个问题就是在网络条件不不允许时,会导致图标依然无法加载。
方式二 离线引入
根据 Google material icons#setup_method_2_self_hosting 中描述,我们可以下载相关字体文件,然后手动配置css使用字体文件。
我这里简单起见直接访问了Google的
拿到了CSS配置文件以及字体文件。
CSS如下所示
/* fallback */
@font-face {
font-family: 'Material Icons Outlined';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/materialiconsoutlined/v106/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUce.woff2) format('woff2');
}
.material-icons-outlined {
font-family: 'Material Icons Outlined';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
-webkit-font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased;
}
这里还出现了一个字体文件
这里我也手动下载并把该文件放置于项目的public/
目录下。
然后修改了Milkdown.vue,添加了上面的CSS,并且替换了字体文件的地址为本地的地址,修改后的文件如下所示。
<template>
<VueEditor :editor="editor" />
</template>
<script setup> import {
Editor, rootCtx, defaultValueCtx } from "@milkdown/core"; import {
nord } from "@milkdown/theme-nord"; import {
VueEditor, useEditor } from "@milkdown/vue"; import {
commonmark } from "@milkdown/preset-commonmark"; import {
emoji } from "@milkdown/plugin-emoji"; import {
history } from '@milkdown/plugin-history'; import {
tooltip } from '@milkdown/plugin-tooltip'; import {
menu } from "@milkdown/plugin-menu"; const {
editor } = useEditor((root) => Editor.make() .config((ctx) => {
ctx.set(rootCtx, root); ctx.set(defaultValueCtx, "# Milkdown Vue"); }) .use(nord) .use(emoji) .use(commonmark) .use(history) .use(menu) .use(tooltip) ); </script>
<style> @font-face {
font-family: 'Material Icons Outlined'; font-style: normal; font-weight: 400; src: url(./gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUce.woff2) format('woff2'); } .material-icons-outlined {
font-family: 'Material Icons Outlined'; font-weight: normal; font-style: normal; font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap; word-wrap: normal; direction: ltr; -webkit-font-feature-settings: 'liga'; -webkit-font-smoothing: antialiased; } </style>
在加入了CSS和字体后可以看到控件上的图标已经正常。
参考文献
[1]. milkdown . demo . https://milkdown.dev/online-demo
[2]. milkdown . Integrations vue. https://milkdown.dev/vue
[3]. google . fonts . Material Icons Guide . 2022.03 . https://developers.google.com/fonts/docs/material_icons
边栏推荐
- JNA学习笔记一:概念
- Enterprise custom form engine solution (XII) -- experience code directory structure
- How does MySQL create, delete, and view indexes?
- 非分区表转换成分区表以及注意事项
- 3D content generation based on nerf
- API query interface for free mobile phone number ownership
- What if the xshell evaluation period has expired
- xshell评估期已过怎么办
- Day21 multithreading
- 关于 appium 启动 app 后闪退的问题 - (已解决)
猜你喜欢
关于 appium 启动 app 后闪退的问题 - (已解决)
. Net ultimate productivity of efcore sub table sub database fully automated migration codefirst
Importance of database security
TPG x AIDU|AI领军人才招募计划进行中!
Sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
Awk of three swordsmen in text processing
Per capita Swiss number series, Swiss number 4 generation JS reverse analysis
飞桨EasyDL实操范例:工业零件划痕自动识别
【学习笔记】AGC010
详细介绍六种开源协议(程序员须知)
随机推荐
《开源圆桌派》第十一期“冰与火之歌”——如何平衡开源与安全间的天然矛盾?
Leetcode question brushing: binary tree 26 (insertion operation in binary search tree)
Four functions of opencv
About the problem of APP flash back after appium starts the app - (solved)
Leetcode brush question: binary tree 24 (the nearest common ancestor of binary tree)
[untitled]
Cmu15445 (fall 2019) project 2 - hash table details
详解ThinkPHP支持的URL模式有四种普通模式、PATHINFO、REWRITE和兼容模式
Analysis of DHCP dynamic host setting protocol
Awk of three swordsmen in text processing
Visual stdio 2017 about the environment configuration of opencv4.1
Day-24 UDP, regular expression
layer弹出层的关闭问题
Day22 deadlock, thread communication, singleton mode
[untitled]
AUTOCAD——大于180度的角度标注、CAD直径符号怎么输入?
Adopt a cow to sprint A shares: it plans to raise 1.85 billion yuan, and Xu Xiaobo holds nearly 40%
红杉中国完成新一期90亿美元基金募集
Day21 multithreading
Common text processing tools