Markdown中如何设置图片居中

Markdown默认并不支持排版,排版需要借助HTML/CSS来实现

遇到这个问题时,网上搜索发现很多人都有相同需求,但看到的答案却大多不怎么满意,因此这里整理一下。说是Markdown中图片居中,但此处针对的是Markdown转化的网页图片居中,更具体的是针对Hexo写博客情况。
Markdown默认并不支持排版,排版需要借助HTML/CSS来实现,如果你不懂HTML/CSS,也不想去了解,那么最直接的方法是换一个Hexo主题,很多主题中图片默认都是居中的。
这里总结了常见的图片居中办法,如果想要更详细的了解代码的具体意义,可以查看网页排版以及文末的参考链接。

<center>标签
实现图片居中,最简单的方法是使用HTML的center标签<center>...</center>,网上可以看到不少这个答案。但注意该标签在HTML5中已移除,因此不建议使用。

inline样式
网上常见的第二种做法是使用内联样式:

1
2
3
4
5
6
7
8
<div style="text-align: center;">

![Picture](/path/to/image)
</div>

<span><div style="text-align: center;">
![Picture](/path/to/image)
</div></span>

在VSCode中预览时确实有效,需要注意的是插入图片行与<div>起始标签间要有空行,否则图片无法正常显示。不过在使用Hexo的tranquilpeak主题时,上述做法居然无效,如果换用<figure>标签,有效果但也不是居中。出现这种情况是由于Markdown与HTML混排的限制,具体可参考网页排版:Markdown混排,总之同样不推荐这种方法。

内部样式表(推荐)
由于转换为网页时,Markdown插入图片的语句会对应于img元素,因此我们可以直接调整img元素样式。
在Markdown文档中插入以下HTML/CSS代码,便可使文章中所有插入的图片都居中:

1
2
3
<style type="text/css">
img{text-align: center; margin: 0 auto;}
</style>

图片的其他属性如大小/宽度等都可以在此处统一调整,如width: 80%;
当然也可以吧这几行规则保存到单独的CSS文件,作为外部样式表使用资源链接<link>引入;又或者修改所用主题页面主体(body)部分的CSS设置,对整个站点的所有图片都生效。

img标签(推荐)
上述方法会改变全文所有图片排版,如果只想调整个别图片,我们可以使用<img>标签,直接用HTML代码插入图片:

1
<img style="display: block; margin: 0 auto;" src="/path/to/image" alt="" />

Hexo标签插件
最后,对于Hexo还可以使用img标签插件,该插件支持设置类名,从而控制图片排版:

1
{% img center /path/to/image %}

同时在文章中加入以下HTML/CSS代码,定义center类

1
2
3
4
5
6
<style>
.center {
text-align: center;
margin: 0 auto;
}
</style>

参考链接
使用css让markdown生成的网页里图片居中
You Can’t Float Center with CSS