Obsidian中<img>需改文件后缀为.html或开启“Always render HTML”;路径须用相对路径(以HTML文件为基准);对齐须用CSS(如style="display:block; margin:0 auto;"居中);避免align属性和绝对路径。

Obsidian里<img>标签不显示或错位怎么办
Obsidian默认不解析HTML标签里的<img>,直接写<img src="xxx.jpg">会被当成纯文本——这是最常卡住人的第一步。它只渲染Markdown语法的图片(),HTML需额外条件才能触发渲染。
- 必须把文件后缀改为
.html(不是.md),Obsidian才会启用HTML解析器 - 即使改了后缀,
<img>仍可能因路径错误、相对路径解析规则不同而404——Obsidian对.html文件的资源路径是相对于该HTML文件本身,而非Vault根目录 - 若想在
.md文件里混用HTML图片,得开启「Always render HTML」设置(设置 → 外观 → 勾选Always render HTML),但此举有安全风险,且部分内联样式(如style="float:right")仍可能被CSS重置
怎么让<img>在Obsidian中水平居中或右对齐
Obsidian的HTML渲染走的是标准浏览器流程,但它的CSS默认样式表(如obsidian/snippets/下的自定义CSS)会覆盖部分原生行为。单纯用align="right"属性已基本失效,必须用CSS。
- 推荐用
style内联样式:<img src="a.png" style="display:block; margin:0 auto;">实现居中;<img src="b.png" style="float:right; margin-left:1em;">实现右对齐 - 避免用
<center>或text-align包裹<img>——<img>是行内元素,text-align对其无效,除非先设display:block - 如果用了
float,后续内容会环绕图片,需加<div style="clear:both"></div>阻断,否则排版容易乱
src路径写相对路径还是绝对路径更稳
Obsidian里HTML图片的src必须用相对路径,且起点是当前.html文件所在目录——这点和Markdown图片(以Vault根为基准)完全不同,极易搞混。
- 假设HTML文件在
notes/daily/2024-06-15.html,图片在assets/cat.jpg,则src应写../assets/cat.jpg,不是assets/cat.jpg或/assets/cat.jpg - 绝对路径(以
/开头)会被浏览器按HTTP根目录解析,在本地文件协议(file://)下必然失败,直接显示“找不到图像” - Obsidian不支持
data:URI嵌入图片,Base64编码的src在.html里也无法渲染
为什么开了Always render HTML,<img>还是不响应CSS
因为Obsidian在渲染时会给所有HTML内容套一层<div class="markdown-source-view">容器,它的CSS规则(比如img { max-width: 100%; })优先级高于你的内联style,尤其当用了!important时反而可能被更高权重的规则压制。
立即学习“前端免费学习笔记(深入)”;
- 检查开发者工具(Ctrl+Shift+I)看
<img>实际生效的样式,大概率发现max-width或height被重写了 - 临时解决:在
style里加max-width:none !important;或height:auto !important;,但长期建议用CSS snippet统一控制 - 真正可靠的对齐方式是用Flex布局:
<div style="display:flex; justify-content:center"><img src="x.png"></div>,比margin:auto更少受外层限制
Obsidian对HTML图片的支持本质是“放行浏览器原生行为”,不是自己实现一套渲染引擎。路径、CSS作用域、文件类型这三关没对齐,再怎么调align或float都没用。











