Markdownの表の幅・列幅を調整する方法
「列の幅が狭すぎて読みにくい」「1つの列だけ無駄に広い」「ハイフンを増やしても幅が変わらない」— Markdown(マークダウン)の表の幅は標準記法では指定できません。だからこそ調整にはコツがあります。このページでは、CSSが使える場合・使えない場合それぞれの調整方法をまとめました。仕上がりは無料のMarkdownビューアーで確認しながら進められます。
| やりたいこと | CSSが使える環境(ブログ等) | CSSが使えない環境(GitHub等) |
|---|---|---|
| 列幅を指定する | th:nth-child(n) に width | 不可(内容量で間接的に調整) |
| 表全体を広げる | table { width: 100% } | 不可(自動) |
| 折り返しを防ぐ | white-space: nowrap | で空白を置換 |
| 強制的に折り返す | word-break 系 | <br> を手動で入れる |
大前提:Markdownの表の幅は「内容」で決まる
Markdownの表はHTMLの <table> に変換され、各列の幅はブラウザがセルの内容量に応じて自動計算します。つまり「記法で幅を指定する」という発想自体がMarkdownにはなく、幅を制御したければ次の2択になります。
- 表示側のCSSを変える — ブログ・自サイトなど、スタイルを触れる環境向け
- 内容側を工夫する — GitHubのREADMEなど、スタイルを触れない環境向け
よくある誤解:ハイフンの数と列幅
区切り行の --- を ---------- に増やしても、表示上の列幅は1ミリも変わりません。ハイフンは1本以上あれば同じ意味で、幅の情報としては扱われないためです。
| 名前 | 説明 | | --- | --- | | A | 短い | | 名前 | 説明 | | ---------- | -------------------- | | A | 短い |
| 名前 | 説明 |
|---|---|
| A | 短い |
CSSが使える環境での列幅指定
はてなブログ・WordPress・自作サイトなど、CSSを書ける環境なら確実に制御できます。列は nth-child で指定します。
table {
width: 100%;
}
th:nth-child(1), td:nth-child(1) {
width: 120px;
white-space: nowrap;
}
table { width: 100% }で表を記事幅いっぱいに- 幅を固定したい列に
width+nowrap - 厳密に固定したいときは
table-layout: fixedを追加
table-layout: fixed を指定すると、内容量に関係なく指定幅どおりに列が固定されます(はみ出す内容は折り返し)。レイアウトが暴れる表にはこれが特効薬です。
GitHubなどCSSが使えない環境のテクニック
GitHubのREADMEやIssueでは、セキュリティ上の理由で style 属性や <style> タグが無効化されるため、CSSでの幅指定はできません。その前提での現実的なテクニックがこちらです。
1. 見出しセルに長めのテキストを入れる
列幅は内容で決まるので、ヘッダーの文言を長くすればその列は広がります。「名前」→「プロジェクト名」のように意味を保ったまま長くするのが自然です。
2. ノーブレークスペースで最低幅を確保する
| 項目 | 説明 | | --- | --- | | A | ... |
(ノーブレークスペース)は折り返されない空白として幅にカウントされるため、列の最低幅を実質的に指定できます。
3. 画像で幅を確保する
透明な画像を <img width="200"> で置いて幅を確保する古典的なハックもあります。GitHubは img の width 属性を許可しているため機能しますが、メンテナンス性は悪いので最後の手段です。
折り返しの制御(nowrap・強制改行)
折り返したくない(1行に収めたい)
- CSSが使える:対象列に
white-space: nowrap - CSSが使えない:折り返したくない語句の間の空白を
に置き換える(例:v1.2 beta)
逆に、好きな位置で折り返したい
セル内では通常の改行が使えないため、<br> タグで明示的に改行します。これはどの環境でも機能する最も確実な方法です。詳しくは表の書き方ガイドのセル内改行の節をご覧ください。
表の見た目、その場で調整しませんか?
プレビューを見ながらスタイルを調整して、ブログ用のCSSをワンクリックでコピーできます。
よくある質問
スマホで表がはみ出してしまいます
表自体を縮めるより、表を横スクロール可能なコンテナで包むのが定石です。CSSで overflow-x: auto を指定した div で表を囲むと、ページ全体を崩さずに表だけスクロールできます。
列ごとに寄せ(右寄せ・中央寄せ)は指定できますよね?
はい、寄せだけは標準記法でできます。区切り行を :---(左)・:---:(中央)・---:(右)にします。幅はできないが寄せはできる、と覚えてください。
Qiita・Zennでは幅指定できますか?
QiitaやZennも投稿内のCSS・style属性は基本的に無効です。GitHubと同じ「内容側の工夫」(ヘッダー文言・ ・br)で調整してください。
関連ガイド
- Markdownの表(テーブル)の書き方 — 基本・寄せ・セル内改行・結合の代替
- ExcelやWordの表をMarkdownに変換する方法
- Markdown記法一覧【チートシート】