刚开始用Markdown写技术文档时,我以为图片插入就是简单的格式。直到有一次在GitHub上发布的README.md图片全部错位,才发现不同平台对Markdown图片的解析存在巨大差异。比如在Typora里完美居中的图片,到了Obsidian可能变成左对齐,在Notion里甚至可能丢失样式。
基础语法虽然简单,但有几个细节需要注意:
我在公司Wiki迁移时就踩过坑:用<img>标签设置的响应式图片在Confluence显示正常,迁移到GitLab后全部失效。后来发现是因为GitLab的Markdown解析器会过滤部分HTML属性。
原生Markdown标准其实没有图片位置控制语法,这是各平台自行扩展的功能。比如CSDN支持的#pic_center后缀,在其他平台可能直接被当作URL的一部分显示出来。
实测过多个平台后发现:
<center>标签包裹图片实现居中最稳定的方法是使用HTML的<div>+CSS方案。这是我常用的模板:
html复制<div style="text-align:center; margin:20px 0">
<img src="image.png" style="max-width:80%" />
</div>
这个方案的优点:
text-align控制水平位置(left/center/right)margin调整图片与周围元素的间距max-width确保大图不会撑破容器注意要避免使用float属性,在移动端显示时容易导致布局错乱。去年我在技术博客中用了float:right,结果手机访问时图片直接覆盖了正文。
需要图文混排时,可以结合HTML表格实现杂志式的环绕效果:
html复制<table>
<tr>
<td width="30%"><img src="chart.png"></td>
<td>这里是配套的文字说明内容...</td>
</tr>
</table>
在微信公众号等平台发布时,还可以用<figure>标签实现带标题的图片组:
html复制<figure style="display:flex; gap:10px">
<img src="demo1.jpg" width="45%">
<img src="demo2.jpg" width="45%">
<figcaption>图1:方案对比</figcaption>
</figure>
现代网页设计必须考虑响应式布局。这是我总结的三种适配方案:
markdown复制{: style="width:min(100%,600px)"}
html复制<picture>
<source media="(max-width:768px)" srcset="mobile.jpg">
<source media="(min-width:1200px)" srcset="desktop.jpg">
<img src="default.jpg">
</picture>
markdown复制{: srcset="logo@2x.png 2x, logo@3x.png 3x"}
最安全的等比缩放方法是只设置宽度或高度之一:
html复制<!-- 根据宽度自动计算高度 -->
<img src="photo.jpg" width="400">
<!-- 根据高度自动计算宽度 -->
<img src="photo.jpg" height="300">
对于需要精确控制比例的场合,可以用CSS的padding-bottom技巧:
html复制<div style="position:relative; padding-bottom:56.25%"> <!-- 16:9比例 -->
<img src="video_cover.jpg" style="position:absolute; width:100%">
</div>
各平台的私有语法需要特别注意:
<img>标签但不支持style属性?width=500的URL参数的简写格式{width=50%}属性撰写API文档时经常需要并排显示请求/响应示例:
html复制<div class="columns">
<div>

<center>图2:请求参数</center>
</div>
<div>

<center>图3:返回结果</center>
</div>
</div>
<style>
.columns { display:flex; gap:20px }
.columns > div { flex:1 }
</style>
技术博客常用的提示框+图片组合:
markdown复制> [!NOTE]
> 下图展示了最新架构设计:
> {: style="border:1px solid #eee"}
用Marp制作幻灯片时,可以通过CSS动画增强表现力:
markdown复制{: style="animation:zoomIn 2s"}
<!-- 在CSS中定义 -->
@keyframes zoomIn {
from { transform:scale(0.5); opacity:0 }
to { transform:scale(1); opacity:1 }
}
大图会导致Markdown文档打开缓慢,推荐三个优化技巧:
<img src="placeholder.jpg" data-src="real.jpg">配合Intersection Observer随着深色主题普及,图片需要做相应适配:
css复制@media (prefers-color-scheme: dark) {
img { filter:brightness(0.8) contrast(1.2) }
}
确保打印PDF时图片显示正常:
html复制<style>
@media print {
img { max-width:100% !important; page-break-inside:avoid }
}
</style>
实际项目中,我习惯为所有技术文档添加这个打印优化CSS,避免团队分享时出现排版问题。特别是带有流程图和架构图的文档,打印时经常出现图片被截断的情况,通过page-break-inside:avoid可以完美解决。