Typora的Github主題美化

[!note]

Typora的Github主題進行一些自己喜歡的修改,主要包括:字體、代碼塊、表格樣式

美化前:

美化前

美化后:
在這里插入圖片描述


一、字體更換

之前便看上了「中文網字計劃」的「朱雀仿宋」字體,于是一直想更換字體,奈何自己拖延癥作祟,直到今天才開始行動。


關于「中文網字計劃」

「中文網字計劃」是一個致力于優化中文字體在互聯網中應用的開源項目,通過Web Font技術為開發者提供便捷、免費的中文字體解決方案。其核心特點包括:

  1. 字體分包技術:將龐大的字體文件切割為小型靜態分包,利用全球CDN加速加載,解決中文字體文件體積大、加載慢的問題;
  2. 豐富字體庫:收錄了霞鹛文楷、京華老宋體等眾多字體,支持在線預覽和按需調用;
  3. 開源工具鏈:提供字體分析工具(如font-analyze)、在線分包工具(在線切割)及NPM包(@konghayao/cn-font-split),方便開發者自定義字體優化;
  4. 全字符集渲染:支持OpenType特性,可自動按頁面內容加載所需字符區間,兼顧渲染速度與完整性。

項目官網為https://chinese-font.netlify.app/,GitHub倉庫見chinese-free-web-font-storage。

需注意部分字體授權信息需自行確認,建議優先選用明確開源授權的字體(如霞鹛文楷)。


中文網字計劃是支持直接使用它提供的CDN的,但是由于不知道怎么在主題的CSS中使用,于是選擇使用更為直接的方法:從中文網字計劃的Github倉庫中下載下來這個字體的.ttf文件,然后在CSS中使用該字體。

具體實現步驟

  1. 下載字體文件
  • 下載自己想要的字體文件,例如朱雀仿宋;

  • 并將字體文件放到合適的目錄位置,這個文件路徑之后要用得到,例如我就是直接放到主題css文件的同一目錄下,故引用的時候就直接使用相對路徑./字體文件名

  1. 修改主題的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;
}

可以根據自己的需要自行設置

  1. 重啟Typora

不出意外的話,重啟便能看到更換好字體之后的效果了


二、代碼塊裝飾

希望能添加仿mac窗口風格的代碼塊上檐,覺得很好看。

類似下圖:

仿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 相關樣式,替換或修改為上述代碼。以下是主要修改點說明:

  1. 定位上下文
    添加 position: relative 為偽元素定位提供基準

  2. 窗口按鈕實現
    使用 ::before 偽元素創建三個圓形按鈕,通過:

    • box-shadow 創建多個按鈕
    • 精確的定位調整按鈕位置
    • z-index 確保按鈕可見
  3. 樣式覆蓋
    使用 !important 覆蓋 Typora 默認樣式:

    border-radius: 5px !important;
    box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4) !important;
    
  4. 布局調整

    • 增加 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; 的解釋:

給元素添加一個向下偏移半透明模糊陰影,具體參數解析如下:

  1. 0:水平偏移量(h-shadow)
    表示陰影在水平方向不偏移

  2. 10px:垂直偏移量(v-shadow)
    表示陰影向下偏移10像素(負值會向上偏移)

  3. 30px:模糊半徑(blur)
    陰影邊緣會產生30像素的模糊漸變效果,數值越大越模糊

  4. 0:擴散半徑(spread)
    陰影大小與元素原始尺寸一致(正值擴大陰影,負值收縮)

  5. rgba(0, 0, 0, .4):陰影顏色
    使用黑色(#000)且透明度為40%(0.4),通過透明度實現陰影深淺控制

  6. !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;
}

關鍵修改說明

通過 三層結構 實現分層控制:

  1. 頂部深色背景條 (::after 偽元素)

    • 高度與容器的 padding-top 一致(30px)
    • 僅設置頂部圓角,與容器圓角匹配
    • 使用 z-index: 0 作為底層
  2. Mac 風格按鈕 (::before 偽元素)

    • 提升 z-index: 2 確保按鈕顯示在頂部背景條之上
    • 保持原有定位和樣式
  3. 代碼內容區域 (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::afterheight 值(需同步調整容器的 padding-top
  • 代碼區域邊距:調整 .md-fences prepadding
  • 圓角一致性:檢查 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;
}

修改要點說明:

  1. 明確三條線的實現方式:

    • 頂線:table元素的頂部邊框(2px)
    • 中間線:表頭單元格(th)的底部邊框(1.5px)
    • 底線:table元素的底部邊框(2px)
  2. 顏色層級:

    • 頂/底線使用深灰色(#333)
    • 中間線使用稍淺的灰色(#666)
  3. 增強可讀性:

    • 表頭文字加粗(600字重)
    • 表頭文字顏色加深(#2c3e50)
    • 單元格增加橫向間距(8px→12px)

實際效果預覽:

__________________________ 頂線(2px)姓名    年齡    職位
__________________________ 中間線(1.5px)張三     28    工程師李四     35    設計師
__________________________ 底線(2px)

驗證方法:

  1. 在Typora中插入3行2列的表格
  2. 觀察是否呈現:
    • 頂部粗線
    • 表頭下方細線
    • 底部粗線
  3. 檢查是否沒有其他干擾線條

如果希望調整線條粗細,可以修改以下參數:

  • 頂/底線粗細:2px → 推薦范圍 1.5px-3px
  • 中間線粗細:1.5px → 推薦范圍 1px-2px

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896537.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896537.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896537.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用大白話解釋搜索引擎Elasticsearch是什么,有什么用,怎么用

Elasticsearch是什么? Elasticsearch(簡稱ES)就像一個“超級智能的圖書館管理系統”,專門幫你從海量數據中快速找到想要的信息。它底層基于倒排索引技術(類似書籍的目錄頁),能秒級搜索和分析萬…

神經網絡 - 激活函數(Sigmoid 型函數)

激活函數在神經元中非常重要的。為了增強網絡的表示能力和學習能力,激活函數需要具備以下幾點性質: (1) 連續并可導(允許少數點上不可導)的非線性函數。可導的激活函數可以直接利用數值優化的方法來學習網絡參數. (2) 激活函數及其導函數要盡可能的簡單&#xff0…

Spring 源碼硬核解析系列專題(六):Spring MVC 的請求處理源碼解析

在前幾期中,我們探討了 Spring 的 IoC 容器、Bean 創建、AOP、事務管理以及 Spring Boot 的自動裝配,這些為 Spring MVC 的運行奠定了基礎。作為 Spring 生態中處理 Web 請求的核心模塊,Spring MVC 通過 DispatcherServlet 實現了靈活的請求分發與處理。本篇將深入 Dispatch…

Docker容器日常維護常用命令大全

友情提示:本文內容由銀河易創(https://ai.eaigx.com)AI創作平臺deepseek-v3模型生成,文中所有命令未進行驗證,僅供參考。請根據具體情況和需求進行適當的調整和驗證。 引言 Docker作為當前最流行的容器化技術&#xf…

Pytest測試用例執行跳過的3種方式

文章目錄 1.前言2.使用 pytest.mark.skip 標記無條件跳過3.使用 pytest.mark.skipif 標記根據條件跳過4. 執行pytest.skip()方法跳過測試用例 1.前言 在實際場景中,我們可能某條測試用例沒寫完,代碼執行時會報錯,或者是在一些條件下不讓某些…

GitHub 語析 - 基于大模型的知識庫與知識圖譜問答平臺

語析 - 基于大模型的知識庫與知識圖譜問答平臺 GitHub 地址:https://github.com/xerrors/Yuxi-Know 📝 項目概述 語析是一個強大的問答平臺,結合了大模型 RAG 知識庫與知識圖譜技術,基于 Llamaindex VueJS FastAPI Neo4j 構…

vue學習七

十四 pinia 官網:安裝 | Pinia 中文文檔 集中式狀態管理,與vuex相似,提供變量存儲便于數據共享。 從概念上類似于php中的session吧…… 適用于少量數據的共享,可操作數據都是先定義后使用。 適用于判斷用戶是否登錄&#xff…

【Prometheus】prometheus服務發現與relabel原理解析與應用實戰

?? 歡迎大家來到景天科技苑?? ???? 養成好習慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構師,華為云開發者社區專家博主,阿里云開發者社區專家博主,CSDN全棧領域優質創作者,掘金優秀博主,51CTO博客專家等。 ??《博客》:Python全…

【折線圖 Line】——1

?? 解鎖數據可視化的魔法鑰匙 —— pyecharts實戰指南 ?? 在這個數據為王的時代,每一次點擊、每一次交易、每一份報告背后都隱藏著無盡的故事與洞察。但你是否曾苦惱于如何將這些冰冷的數據轉化為直觀、吸引人的視覺盛宴? ?? 歡迎來到《pyecharts圖形繪制大師班》 ?…

004-利用Docker安裝Mysql

利用Docker安裝Mysql 一、在鏡像倉庫找到 Mysql1.鏡像倉庫地址2.復制命令3.下載Mysql鏡像4.查看鏡像 二、創建實例并啟動三、用本地工具連接數據庫四、設置 Mysql 配置 一、在鏡像倉庫找到 Mysql 1.鏡像倉庫地址 https://hub.docker.com 2.復制命令 docker pull mysql:8.0…

當JMeter遇見AI:性能測試進入智能時代(附實戰案例)

性能測試作為軟件開發中的關鍵環節,確保系統在高負載下仍能高效運行。JMeter 是一種廣泛使用的開源工具,用于負載測試和性能測量,但傳統方法往往效率低下。AI 的引入,為性能測試帶來了智能化升級。本文將探討 JMeter 與 AI 的結合…

DeepSeek R1 + 飛書機器人實現AI智能助手

效果 TFChat項目地址 https://github.com/fish2018/TFChat 騰訊大模型知識引擎用的是DeepSeek R1,項目為sanic和redis實現,利用httpx異步處理流式響應,同時使用buffer來避免頻繁調用飛書接口更新卡片的網絡耗時。為了進一步減少網絡IO消耗&…

多樣化的化學結構式表示法

化學結構式是用元素符號和短線表示化合物(或單質)分子中原子的排列和結合方式的式子,它具有多方面的重要含義,具體如下: 表示原子組成及種類體現原子的連接順序和方式反映分子的空間構型揭示化學性質和反應機理用于化…

Vmvare虛擬機使用代理

1. 宿主機配置 宿主機配置好網絡,能訪問google,然后開啟局域網代理 記錄下宿主機的真實網卡的ip地址及代理服務的端口號 例如 192.168.101.120:52209 2. 虛擬機配置 vmvare網絡連接設置 虛擬機網絡連接選擇nat模式 終端環境變量設置 終端只需設置以下…

Claude 3.7 Sonnet深度解析:混合推理模型如何重塑AI編程能力

引言 2025年2月25日,人工智能領域領先企業Anthropic正式發布了新一代大語言模型Claude 3.7 Sonnet。作為全球首個混合推理AI模型,Claude 3.7 Sonnet在編程開發、邏輯推理以及任務處理效率等方面實現了突破性進展。本文將從核心特性、性能評測、競品對比…

USRP6330-通用軟件無線電平臺

1、產品描述 USRP6330平臺以XILINX XCZU15EG SOC處理器為核心,搭配兩片ADI ADRV9026射頻集成芯片,提供了瞬時帶寬高達200MHz的8收8發射頻通道。通過馴服的高精度GPSDO時鐘參考方案,USRP可以支持高性能的MIMO通信系統,提供了部署大…

26.[前端開發-JavaScript基礎]Day03-循環語句

一、JavaScript循環語句 1 認識循環語句 認識循環 2 while循環 while循環 while循環的練習 3 do..while循環 do..while循環 4 for循環(循環嵌套 ) for循環 for循環的練習 for循環的嵌套 5 break 、continue 循環控制 6 綜合案例練習 猜數字游戲 循環的總結

/?/音的字母或字母組合的單詞

a. 字母i, y在閉音節和非重讀音節中發/?/,例詞: bit /b?t/ adj. 很小的kiss /k?s/ vi. 接吻list /l?st/ n. 目錄ship /??p/ n. 船kick /k?k/ vt. 踢fill /f?l/ vt. 裝滿mirror /m?r?/ n. 鏡子chicken /t??k?n/ n. 雞肉pity /p?t?/ n. 憐…

一文弄懂TCP斷開連接時候的四次揮手

部分內容來源:小林coding TCP四次揮手過程是怎樣的 天下沒有不散的宴席,對于 TCP 連接也是這樣, TCP 斷開連接是通過四次揮手方式 雙方都可以主動斷開連接,斷開連接后主機中的「資源」將被釋放,四次揮手的過程如下圖…

小程序畫帶圓角的圓形進度條

老的API <canvas id"{{canvasId}}" canvas-id"{{canvasId}}" style"opacity: 0;" class"canvas"/> startDraw() {const { canvasId } this.dataconst query this.createSelectorQuery()query.select(#${canvasId}).bounding…