跳过正文

Obsidian主题的美学进化与自定义实践

·795 字·2 分钟·
Application Obsidian Theme
Hariketsu
作者
Hariketsu
ハロー・ワールド

Border是一款我很喜欢的主题,它支持丰富的UI自定义,配合Style Settings插件,可以自由调整界面风格。它内置了自动隐藏侧边栏、卡片式布局、悬停线指示器等功能,并提供多套预设配色方案,涵盖浅色、暗色、拟物、半透明等多种风格。

image.png

Akifyss/obsidian-border

A theme for obsidian.md

CSS
2039
67

最近我切换到了Velocity,它以极致的UI工艺和专业排版为核心,融合了苹果设计哲学和当代网页美学,甚至隐约致敬了2000年代赛车游戏的界面风格。作者为不同操作系统定制了字体权重,微调标题缩进,使界面细节达到近乎苛刻的完美。

image.png

Gonzalo-D-Sales/obsidian-velocity

A radically modern theme for Obsidian.

CSS
605
16

Velocity的统一美学令人惊艳,但我始终怀念Border主题下Header的彩色竖线。为此,我编写了一段CSS,将Border的Header视觉元素无缝移植到Velocity:

image.png

/* --- 定义标题颜色变量 (来自Border主题) --- */
:root {
  --h1-accent-color: #d32f2f;
  --h2-accent-color: #f57c00;
  --h3-accent-color: #fbc02d;
  --h4-accent-color: #388e3c;
  --h5-accent-color: #1976d2;
  --h6-accent-color: #7b1fa2;
}


/* --- 1. 实时预览 (Live Preview) 模式下的标题样式 --- */

/* 为所有非代码块的标题行伪元素应用基础样式 */
.is-live-preview .cm-line:not(.HyperMD-codeblock).HyperMD-header::before {
  content: " ";
  display: inline-block;
  width: 3px;
  margin-right: 6px;
  border-radius: 4px;
  transform: translateY(4px);
}

/* 为各级标题的伪元素设置不同的背景色和精确的高度 */
.is-live-preview .cm-line:not(.HyperMD-codeblock).HyperMD-header-1::before { background-color: var(--h1-accent-color); height: calc(1.2em - 8px); }
.is-live-preview .cm-line:not(.HyperMD-codeblock).HyperMD-header-2::before { background-color: var(--h2-accent-color); height: calc(1.2em - 8px); }
.is-live-preview .cm-line:not(.HyperMD-codeblock).HyperMD-header-3::before { background-color: var(--h3-accent-color); height: calc(1.3em - 8px); }
.is-live-preview .cm-line:not(.HyperMD-codeblock).HyperMD-header-4::before { background-color: var(--h4-accent-color); height: calc(1.4em - 8px); }
.is-live-preview .cm-line:not(.HyperMD-codeblock).HyperMD-header-5::before { background-color: var(--h5-accent-color); height: calc(1.5em - 8px); }
.is-live-preview .cm-line:not(.HyperMD-codeblock).HyperMD-header-6::before { background-color: var(--h6-accent-color); height: calc(1.5em - 8px); }


/* --- 2. 阅读 (Reading) 模式下的标题样式 --- */

/* 为阅读模式下的标题启用相对定位,并设置左边距 */
.markdown-reading-view h1,
.markdown-reading-view h2,
.markdown-reading-view h3,
.markdown-reading-view h4,
.markdown-reading-view h5,
.markdown-reading-view h6 {
  position: relative;
  padding-left: 15px;
  border-bottom: none !important;
}

/* 使用伪元素绝对定位创建竖线 */
.markdown-reading-view h1::before,
.markdown-reading-view h2::before,
.markdown-reading-view h3::before,
.markdown-reading-view h4::before,
.markdown-reading-view h5::before,
.markdown-reading-view h6::before {
  content: '';
  position: absolute;
  left: 0px;
  width: 3px;
  border-radius: 4px;
  top: 4px;
}

/* 为各级标题的伪元素设置不同的背景色和精确的高度 */
.markdown-reading-view h1::before { background-color: var(--h1-accent-color); height: calc(1.2em - 8px); }
.markdown-reading-view h2::before { background-color: var(--h2-accent-color); height: calc(1.2em - 8px); }
.markdown-reading-view h3::before { background-color: var(--h3-accent-color); height: calc(1.3em - 8px); }
.markdown-reading-view h4::before { background-color: var(--h4-accent-color); height: calc(1.4em - 8px); }
.markdown-reading-view h5::before { background-color: var(--h5-accent-color); height: calc(1.5em - 8px); }
.markdown-reading-view h6::before { background-color: var(--h6-accent-color); height: calc(1.5em - 8px); }


/* --- 3. 优化:字体粗细与间距 (同时应用到两种视图) --- */

/* 引用 Velocity 主题的字重变量,确保风格统一 */
.HyperMD-header-1, .markdown-rendered h1 { font-weight: var(--h1-weight); }
.HyperMD-header-2, .markdown-rendered h2 { font-weight: var(--h2-weight); }
.HyperMD-header-3, .markdown-rendered h3 { font-weight: var(--h3-weight); }
.HyperMD-header-4, .markdown-rendered h4 { font-weight: var(--h4-weight); }
.HyperMD-header-5, .markdown-rendered h5 { font-weight: var(--h5-weight); }
.HyperMD-header-6, .markdown-rendered h6 { font-weight: var(--h6-weight); }