在Markdown中,表格的列宽默认都是按照单元格内容自适应,内容一多,排版就比较混乱。这个时候我们就很希望能调整列宽,让表格显示的美观一些,但很不幸,Markdown并没有原生提供这个功能。

因此,遇到需要调整列宽的场景,我们只能借助html来实现,下面分享几种方法,各有优劣,大家根据自己的实际情况来选用哪一种语法。

方案一:空格填充

这是设置宽度最快捷的方法,直接键入空格,但这里的空格并不是直接键入键盘上的空格键,键盘上的空格键即使键入再多,markdown也只显示为一个空格。这里的空格是指html的实体字符空格,实体字符空格表示的方式有很多种。

  •  = :空格。英文半角空格。
  •  = =  :无中断空格,英文半角空格。它就是我们使用空格键产生的空格,但使用空格键产生此空格不会累加,必须使用这个实体才能累加。
  •  = :En间隔。等同于字体字号大小的一半,例如10px字体中就是5px。
  •  = :Em间隔。等同于字体字号大小,它占据的宽度正好是1个中文宽度。例如,1em在16px的字体中就是16px。
  •  = = :En间隔。
  •  = = :Em间隔。
  •  = = :三分之一的Em间隔,它占据的宽度是三分之一的中文宽度。
  •  = = :四分之一的 Em 间隔,它占据的宽度是四分之一的中文宽度。
  •  = :六分之一的 Em 间隔,它占据的宽度是六分之一的中文宽度。
  •  = = :数字间隔。
  •  = = :标点间隔。
  •  = = = :窄间隔。
  •  = = :微间隔。
  •  = :窄的无中断空格。
  •  :中文全角空格。它占据的宽度正好是1个中文宽度。

这些是我能搜集到的空格字符,尝试了下,除了  之外都有效。瞬间觉得脑容量不够了吧,这么多空格实体字符着实眼晕,不过以我平时的经验来看,只有 常用,其它的都可以忽略。

|字段1     |字段2|字段3|
|:---|:---|:---|
|nbsp|-|-|

效果:
使用空格填充增加表格宽度.jpg

方案二:div标签

使用div包裹,写行内样式定义宽度。

|<div style="width:100px;">字段1</div>|字段2|字段3|
|:---|:---|:---|
|1|2|3|

效果:
使用div包裹填充表格宽度.jpg

推荐使用这种方式,相对来说简单,能精准定义宽度,且保留了表格的对齐方式。使用行内style样式,也容易扩展其它样式。

|<div style="width:100px;color:#f00;font-weight:normal;font-style:italic;">字段1</div>|字段2|字段3|
|:---|:---|:---|
|1|2|3|

效果:
使用div方式可以扩展.jpg

方案三:定义style样式

网上流传的一种方式,使用style样式全局定义的表格样式。

<style type="text/css">
table th:first-of-type {
    width: 100px;
}
table th:nth-of-type(2) {
    width: 200px;
}

table th:nth-of-type(3) {
    width: 200px;
}
</style>

上边的代码就是设置样式,分别找表格的第1列、第2列、第3列设置宽度。这种方式,就需要对html+css代码的文件有一定的了解了,需要知道css代码部署的位置。

不推荐使用这种方式,一来这种方式是做的全局设置,如果页面中有多个表格,不能做个性化设置;二来增添了Markdown书写的难度,我们尽量放弃这种向Markdown追加过多自定义标签或样式的操作。

结语

上边介绍了三种设置表格列宽的方式,但每一种都不尽人意,不到万不得已建议大家还是依托于Markdown解析器自动生成的表格进行排版,毕竟简单才是王道。

如果确实要设置列宽,推荐大家使用第二种,相对简单直接,就近设置便于个性化,也不会影响其它表格,如果想扩展也很简单。

当然,最后重要的一点,我们还是要看自己使用的Markdown编辑器对表格设置列宽的支持程度,或许你目前用的Markdown编辑器已经有了设置列宽的快捷方式。