Typora的Github主题美化
[!note]
Typora的Github主题进行一些自己喜欢的修改,主要包括:字体、代码块、表格样式
美化前:

美化后:

一、字体更换
之前便看上了「中文网字计划」的「朱雀仿宋」字体,于是一直想更换字体,奈何自己拖延症作祟,直到今天才开始行动。
关于「中文网字计划」
「中文网字计划」是一个致力于优化中文字体在互联网中应用的开源项目,通过Web Font技术为开发者提供便捷、免费的中文字体解决方案。其核心特点包括:
- 字体分包技术:将庞大的字体文件切割为小型静态分包,利用全球CDN加速加载,解决中文字体文件体积大、加载慢的问题;
- 丰富字体库:收录了霞鹛文楷、京華老宋体等众多字体,支持在线预览和按需调用;
- 开源工具链:提供字体分析工具(如
font-analyze)、在线分包工具(在线切割)及NPM包(@konghayao/cn-font-split),方便开发者自定义字体优化; - 全字符集渲染:支持OpenType特性,可自动按页面内容加载所需字符区间,兼顾渲染速度与完整性。
项目官网为https://chinese-font.netlify.app/,GitHub仓库见chinese-free-web-font-storage。
需注意部分字体授权信息需自行确认,建议优先选用明确开源授权的字体(如霞鹛文楷)。
中文网字计划是支持直接使用它提供的CDN的,但是由于不知道怎么在主题的CSS中使用,于是选择使用更为直接的方法:从中文网字计划的Github仓库中下载下来这个字体的.ttf文件,然后在CSS中使用该字体。
具体实现步骤
- 下载字体文件
-
下载自己想要的字体文件,例如朱雀仿宋;
-
并将字体文件放到合适的目录位置,这个文件路径之后要用得到,例如我就是直接放到主题css文件的同一目录下,故引用的时候就直接使用相对路径
./字体文件名。
- 修改主题的css文件
- 引入本地字体
/* 添加以下代码,引入本地字体 */
@font-face {/* 自定义字体名称 */font-family: "自定义字体";/* 字体文件路径 */src: url('./ZhuqueFangsong-Regular.ttf') format('truetype');font-weight: normal;font-style: normal;
}
- 将需要的内容设置成自定义字体
/* 将 body 设置为自定义字体 */
body {font-family: "自定义字体", "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;color: rgb(51, 51, 51);line-height: 1.6;
}/* 将标题设置为自定义字体 */
h1,
h2,
h3,
h4,
h5,
h6 {position: relative;margin-top: 1rem;margin-bottom: 1rem;font-weight: bold;line-height: 1.4;cursor: text;font-family: "自定义字体", "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;
}/* 将段落、表格文字设置成自定义字体 */
p,
blockquote,
ul,
ol,
dl,
table {margin: 0.8em 0;font-family: "自定义字体", "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;
}
可以根据自己的需要自行设置
- 重启Typora
不出意外的话,重启便能看到更换好字体之后的效果了
二、代码块装饰
希望能添加仿mac窗口风格的代码块上檐,觉得很好看。
类似下图:

已备条件
先前在美化Hexo博客站的时候子在网上找到了大佬在Hexo的Fluid主题中实现仿mac窗口风格的方法,即通过``自定义CSS,并提供了stylus代码`:
.highlightbackground: #21252bborder-radius: 5pxbox-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4)padding-top: 30px&::beforebackground: #fc625dborder-radius: 50%box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4bcontent: ' 'height: 12pxleft: 12pxmargin-top: -20pxposition: absolutewidth: 12px
有了stylus代码,直接让 AI 帮忙改一下就可以用在这里了
利用条件
我们需要将这段 Stylus 代码适配到 Typora 的 GitHub 主题中,以下是修改后的 CSS 实现和详细说明:
/* 在原有 .md-fences 样式基础上修改 */
.md-fences {background: #21252b;border-radius: 5px !important;box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4) !important;padding-top: 30px !important;position: relative; /* 新增定位上下文 */margin: 15px 0; /* 保持原有外边距 */
}/* 添加 Mac 风格窗口按钮 */
.md-fences::before {content: ' ';position: absolute;top: 15px; /* 调整垂直位置 */left: 15px; /* 调整水平位置 */width: 12px;height: 12px;border-radius: 50%;background: #fc625d;box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b;z-index: 1; /* 确保按钮显示在代码上方 */
}/* 调整代码内容位置 */
.md-fences .code-tooltip {margin-top: -20px; /* 补偿顶部 padding */
}/* 保持代码区域高度 */
.md-fences pre {padding-top: 10px; /* 调整代码与按钮的间距 */
}
需要在你原来的主题 CSS 中找到 .md-fences 相关样式,替换或修改为上述代码。以下是主要修改点说明:
-
定位上下文:
添加position: relative为伪元素定位提供基准 -
窗口按钮实现:
使用::before伪元素创建三个圆形按钮,通过:box-shadow创建多个按钮- 精确的定位调整按钮位置
- z-index 确保按钮可见
-
样式覆盖:
使用!important覆盖 Typora 默认样式:border-radius: 5px !important; box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4) !important; -
布局调整:
- 增加
padding-top为按钮预留空间 - 通过负 margin 保持代码区域位置
- 调整代码内容的 padding
- 增加
最终效果:
- 代码块顶部会有 macOS 风格的红黄绿按钮
- 代码块带有阴影和圆角
- 按钮位置适配代码块布局
- 保持原有代码高亮样式
如果需要调整按钮位置或颜色,可以修改以下参数:
top/left值:控制按钮位置background值:红色按钮颜色box-shadow值:黄色和绿色按钮颜色及位置width/height:按钮大小border-radius:按钮圆角程度
建议在修改后通过实际预览微调具体数值,不同主题可能需要不同的位置补偿值。
对
box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4) !important;的解释:给元素添加一个向下偏移的半透明模糊阴影,具体参数解析如下:
0:水平偏移量(h-shadow)
表示阴影在水平方向不偏移
10px:垂直偏移量(v-shadow)
表示阴影向下偏移10像素(负值会向上偏移)
30px:模糊半径(blur)
阴影边缘会产生30像素的模糊渐变效果,数值越大越模糊
0:扩散半径(spread)
阴影大小与元素原始尺寸一致(正值扩大阴影,负值收缩)
rgba(0, 0, 0, .4):阴影颜色
使用黑色(#000)且透明度为40%(0.4),通过透明度实现阴影深浅控制
!important:优先级标记
强制覆盖其他可能存在的阴影样式规则最终效果表现为:元素下方会呈现一个向下延伸10px、模糊范围30px、半透明黑色(类似雾状)的阴影层,常用于创建卡片浮起效果或增强界面层次感。
[!note]
2025.2.22更新
主要修改:
- 顶部仿mac的背景颜色变为深色,下方的代码部分背景颜色不变
- 上次改动使得代码块的行高发生变化,过于高了,现将行高改的合适一些
要实现 顶部仿 Mac 按钮区域为深色背景,而下方代码区域保持浅色,需要通过 分层背景控制 和 伪元素定位 来实现。以下是具体修改方案:
修改后的完整 CSS 代码
/* 核心修改部分 */
.md-fences {/* 移除整体深色背景 */background: transparent !important;/* 保持原有容器样式 */border-radius: 5px !important;box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .1) !important;padding-top: 25px !important;padding-bottom: 2px !important;position: relative;margin: 15px 0;/* 添加浅色边框分隔 */border: 3px solid #e7eaed;
}/* 新增:顶部深色背景条 */
.md-fences::after {content: '';position: absolute;top: 0;left: 0;right: 0;/* 与 padding-top 一致 */height: 25px;/* 原深色背景 */background: #21252b;/* 仅顶部圆角 */border-radius: 5px 5px 0 0;/* 确保在按钮下方 */z-index: 0;
}/* 调整 Mac 按钮层级 */
.md-fences::before {/* 原有按钮样式不变 */content: ' ';position: absolute;top: 10px;left: 10px;width: 10px;height: 10px;border-radius: 50%;background: #fc625d;box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b;margin-top: 0px;/* 提升到顶部背景条之上 */z-index: 2;
}/* 恢复代码区域背景色 */
.md-fences pre {/* 原浅色背景 */background: #f8f8f8 !important;margin: 0;padding: 10px 15px !important; /* 需删去 *//* 底部圆角 */border-radius: 0 0 5px 5px;position: relative;/* 确保在顶部背景条之上 */z-index: 1;
}
关键修改说明
通过 三层结构 实现分层控制:
-
顶部深色背景条 (
::after伪元素)- 高度与容器的
padding-top一致(30px) - 仅设置顶部圆角,与容器圆角匹配
- 使用
z-index: 0作为底层
- 高度与容器的
-
Mac 风格按钮 (
::before伪元素)- 提升
z-index: 2确保按钮显示在顶部背景条之上 - 保持原有定位和样式
- 提升
-
代码内容区域 (
pre标签)- 显式设置浅色背景
#f8f8f8 - 添加
z-index: 1覆盖顶部背景条 - 底部圆角避免背景色溢出
- 显式设置浅色背景
按照上面修改好之后,发现代码块的行高高的离谱,原本以为是行高太大的问题,于是就直接加了一行行高控制(如下所示):
/* 新增行高控制 */
line-height: 1.5 !important; /* 合适的范围:1.4-1.6*/
发现没有效果,进而才想到了可能是padding的问题,于是便尝试将代码块的padding控制元素给注释掉,发现行高恢复正常了,问题找到,只要删去padding即可。
上面的代码是先直接让deepseek帮忙写的,事实证明:AI确实能提高编程速度,但仍不能完全代替人类进行工作。
效果验证
| 区域 | 背景色 | 特性 |
|---|---|---|
| 顶部按钮区域 | 深色(#21252b) | 包含 Mac 风格红黄绿按钮 |
| 代码内容区域 | 浅色(#f8f8f8) | 保持原有代码样式和行间距 |
| 容器边框 | 浅灰色(#e7eaed) | 分隔顶部深色和代码区域 |
调整细节(按需修改)
- 顶部背景条高度:修改
.md-fences::after的height值(需同步调整容器的padding-top) - 代码区域边距:调整
.md-fences pre的padding值 - 圆角一致性:检查
border-radius数值是否与容器匹配
最终效果应实现 顶部深色按钮区 + 下方浅色代码区 的视觉分层,同时保持代码内容的原有样式。
三、表格样式修改
将原主题的表格样式改成
三线表样式
以下是修正后的三线表完整CSS代码:
将原CSS中的相关样式用以下替换即可
/* ================= 三线表完整样式 ================= */
table {border-collapse: collapse !important;border-spacing: 0 !important;border: none !important;margin: 1.5em 0 !important;
}/* 顶线 */
table {border-top: 2px solid #333 !important;
}/* 底线 */
table {border-bottom: 2px solid #333 !important;
}/* 表头线(中间线) */
thead tr:first-child th {border-bottom: 1.5px solid #666 !important;
}/* 单元格样式 */
td, th {border: none !important;padding: 8px 12px !important;background: transparent !important;
}/* 表头文字样式 */
th {font-weight: 600 !important;color: #2c3e50 !important;
}/* 移除斑马纹 */
tr:nth-child(2n) {background: transparent !important;
}/* 调整对齐方式 */
th {text-align: center !important;
}
td {text-align: left !important;
}
修改要点说明:
-
明确三条线的实现方式:
- 顶线:
table元素的顶部边框(2px) - 中间线:表头单元格(th)的底部边框(1.5px)
- 底线:
table元素的底部边框(2px)
- 顶线:
-
颜色层级:
- 顶/底线使用深灰色(#333)
- 中间线使用稍浅的灰色(#666)
-
增强可读性:
- 表头文字加粗(600字重)
- 表头文字颜色加深(#2c3e50)
- 单元格增加横向间距(8px→12px)
实际效果预览:
__________________________ 顶线(2px)姓名 年龄 职位
__________________________ 中间线(1.5px)张三 28 工程师李四 35 设计师
__________________________ 底线(2px)
验证方法:
- 在Typora中插入3行2列的表格
- 观察是否呈现:
- 顶部粗线
- 表头下方细线
- 底部粗线
- 检查是否没有其他干扰线条
如果希望调整线条粗细,可以修改以下参数:
- 顶/底线粗细:
2px→ 推荐范围 1.5px-3px - 中间线粗细:
1.5px→ 推荐范围 1px-2px
相关文章:
Typora的Github主题美化
[!note] Typora的Github主题进行一些自己喜欢的修改,主要包括:字体、代码块、表格样式 美化前: 美化后: 一、字体更换 之前便看上了「中文网字计划」的「朱雀仿宋」字体,于是一直想更换字体,奈何自己拖延症…...
2.3 变量
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 变量是用来存放某个值的数据,它可以表示一个数字、一个字符串、一个结构、一个类等。变量包含名称、类型和值。在代码中…...
Docker:Docker从入门到精通(一)- Docker简介
一、前言 通过本专栏的学习,我们将了解 1. 掌握Docker基础知识,能够理解Docker镜像与容器的概念 2. 完成Docker安装与启动 3. 掌握Docker镜像与容器相关命令 4. 掌握Tomcat Nginx 等软件的常用应用的安装 5. 掌握docker迁移与备份相…...
【复习】Redis
数据结构 Redis常见的数据结构 String:缓存对象Hash:缓存对象、购物车List:消息队列Set:点赞、共同关注ZSet:排序 Zset底层? Zset底层的数据结构是由压缩链表或跳表实现的 如果有序集合的元素 < 12…...
在Spring Boot+Vue前后端分离的项目中使用JWT实现基本的权限校验
说明 在 Spring Boot + Vue 前后端分离的项目中,如果不使用第三方服务(如 Spring Security、Shiro 等),可以通过自定义实现基本的权限校验。 使用JWT实现步骤 以下是实现步骤: 1. 设计权限模型 通常权限模型包括: 用户(User):系统的使用者。角色(Role):用户的权…...
蓝桥杯单片机组第十二届省赛第二批次
前言 第十二届省赛涉及知识点:NE555频率数据读取,NE555频率转换周期,PCF8591同时测量光敏电阻和电位器的电压、按键长短按判断。 本试题涉及模块较少,题目不难,基本上准备充分的都能完整的实现每一个功能,并…...
伪404兼容huawei生效显示404
根据上述思考,以下是详细的中文分步说明: --- **步骤 1:获取目标设备的User-Agent信息** 首先,我们需要收集目标设备的User-Agent字符串,包括: 1. **iPhone设备的User-Agent**: Mozi…...
UIAutomation开发常用方法的参考文档
简介 由于UIAutomation的官方文档只有一个github中的readme文件,只是简单的使用示例,具体使用还需要在代码中查找,非常不方便。经过我多年使用UIAutomation开发的经验和整理,把常用的功能梳理成本文档,作为我的开发参考使用,这样就不用每次都翻代码了,同时也可以使用AI…...
数据库面试题(基础常考!!!)
在数据库领域,无论是日常开发还是面试场景,都有一些高频且重要的问题需要我们深入理解和掌握。本文将对这些常见面试题进行详细阐述,帮助大家更好地应对面试和实际工作中的挑战。 面试题一:三范式详解 什么是三范式 三范式是关…...
ASP.NET Core Clean Architecture
文章目录 项目地址一、项目主体1. CQRS1.1 Repository数据库接口1.2 GetEventDetail 完整的Query流程1.3 创建CreateEventCommand并使用validation 2. EFcore层2.1 BaseRepository2.2 CategoryRepository2.3 OrderRepository 3. Email/Excel导出3.1 Email1. IEmail接口层2. Ema…...
蓝桥杯备赛-精卫填海-DP
精卫终于快把东海填平了!只剩下了最后的一小片区域了。同时,西山上的木石也已经不多了。精卫能把东海填平吗? 事实上,东海未填平的区域还需要至少体积为 v 的木石才可以填平,而西山上的木石还剩下 n 块,每块…...
Windows10配置C++版本的Kafka,并进行发布和订阅测试
配置的环境为:Release x64下的环境 完整项目:https://gitee.com/jiajingong/kafka-publisher 1、首先下载相应的库文件(.lib,.dll) 参考链接: GitHub - eStreamSoftware/delphi-kafka GitHub - cloade…...
vue3 下载文件 responseType-blob 或者 a标签
在 Vue 3 中,你可以使用 axios 或 fetch 来下载文件,并将 responseType 设置为 blob 以处理二进制数据。以下是一个使用 axios 的示例: 使用 axios 下载文件 首先,确保你已经安装了 axios: npm install axios然后在你…...
【Gin-Web】Bluebell社区项目梳理6:限流策略-漏桶与令牌桶
本文目录 一、限流二、漏桶三、令牌桶算法四、Gin框架中实现令牌桶限流 一、限流 限流又称为流量控制,也就是流控,通常是指限制到达系统的并发请求数。 限流虽然会影响部分用户的使用体验,但是能一定程度上保证系统的稳定性,不至…...
51单片机-AT24CXX存储器工作原理
1、AT24CXX存储器工作原理 1.1、特点: 与400KHz,I2C总线兼容1.8到6.0伏工作电压范围低功耗CMOS技术写保护功能当WP为高电平时进入写保护状态页写缓冲器自定时擦写周期100万次编程/擦除周期可保存数据100年8脚DIP SOIC或TSSOP封装温度范围商业级和工业级…...
突破性能极限:DeepSeek开源FlashMLA解码内核技术解析
引言:大模型时代的推理加速革命 在生成式AI大行其道的今天,如何提升大语言模型的推理效率已成为行业焦点。DeepSeek团队最新开源的FlashMLA项目凭借其惊人的性能表现引发关注——在H800 GPU上实现580 TFLOPS计算性能,这正是大模型推理优化的…...
点击修改按钮图片显示有问题
问题可能出在表单数据的初始化上。在 ave-form.vue 中,我们需要处理一下从后端返回的图片数据,因为它们可能是 JSON 字符串格式。 vue:src/views/tools/fake-strategy/components/ave-form.vue// ... existing code ...Watch(value)watchValue(v: any) …...
[AI]从零开始的树莓派运行DeepSeek模型教程
一、前言 在前面的教程中,教了大家如何在windows中使用llama.cpp来运行DeepSeek模型。根据前面的教程中,我们也了解到了,我们只需要编译好llama.cpp就可以运行DeepSeek以及类似的LLM模型。那么本次教程就来教大家如何使用树莓派来运行大模型。…...
2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(二)
2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(二) 第一部分:网络平台搭建与设备安全防护任务书第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务 1:应急响应&…...
Open WebUI本地部署教程
文章目录 1、系统环境配置2、源码下载2.1 github源码地址下载 3、环境启动3.1 后端环境3.2 前端环境 4、问题4.1 浏览器跨域问题4.2 all-MiniLM-L6-v2模型文件下载失败问题4.3 单独部署backend启动报错问题 1、系统环境配置 操作系统:windows/linux/macos Python版…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...
Angular中Webpack与ngx-build-plus 浅学
Webpack 在 Angular 中的概念 Webpack 是一个模块打包工具,用于将多个模块和资源打包成一个或多个文件。在 Angular 项目中,Webpack 负责将 TypeScript、HTML、CSS 等文件打包成浏览器可以理解的 JavaScript 文件。Angular CLI 默认使用 Webpack 进行项目…...
安宝特方案丨从依赖经验到数据驱动:AR套件重构特种装备装配与质检全流程
在高压电气装备、军工装备、石油测井仪器装备、计算存储服务器和机柜、核磁医疗装备、大型发动机组等特种装备生产型企业,其产品具有“小批量、多品种、人工装配、价值高”的特点。 生产管理中存在传统SOP文件内容缺失、SOP更新不及、装配严重依赖个人经验、产品装…...
