【CSS】注釈(※、*1)を記載するときのインデント合わせ(頭合わせ)

デザオ
あのー、注釈の時に頭を合わせてって言われたんですけどどうしたらいいですかー?
デザコト
では2パターン紹介しますねー、お好きな方でー

ul(リスト)とtableの仕組みを使って揃えるパターン

ulをtableにしてリスト化して揃えてみましょう。
(olでもオッケーです。)

コードを見る(HTML・CSS)

HTML

<ul class="notes">
  <li>
    <div class="notes_head">*1</div>
    <div class="notes_body">赤い服を着てる。青い服を着てる。赤というよりもオレンジに近い。青というよりも優しいブルー。男の口調は柔らかい、女は小さく笑う。少し雨が降ってきた。近くのスーパーで雨宿りをすることにした。飴でも買おうかと男が言った。女は「うん」と言った。</div>
  </li>
  <li>
    <div class="notes_head">*2</div>
    <div class="notes_body">明日は図書館に行こうと決めていた。あ、月曜日は休館日だったっけ。インターネットで調べてみた。「第2・4月曜日は開館」、よしよし、と思った。ひさしぶりの自転車は少し埃がかぶっていた。館内をぐるぐるまわり5冊の本を借りると外は雨が降っていた。帰ることにした僕たちは、よしよし、と思った。</div>
  </li>
  <li>
    <div class="notes_head">*3</div>
    <div class="notes_body">部屋の居心地が良過ぎる今冬、レスポンシブにした。いろいろ良いなと思うけど改行が難しいよねって思う。ということで改行を控えめにしようと思う。デザインは少しポップにしようと始めたけどどんどんシンプルになっていく。で結局白黒グレーな空間になる。いろんなサイズでの確認、タブレットそろそろ買おうかな。普通。普通って何?最近の口癖。レスポンシブな日常。</div>
  </li>
  <li>
    <div class="notes_head">※</div>
    <div class="notes_body">引越してきて1年が経った。ペンキ塗りから始めたから次の月まで住める状態じゃなかった。雪が結構降った。あー、引っ越すんじゃなかったなって思った。屋上に行ってみた。寒かったけど寝転がった。来年のことを思った。雪が降った翌日は空が綺麗だった。カメラを買おうと思った。</div>
  </li>
</ul>

CSS

/* ---------- 01 ul と table の仕組みで揃える ---------- */
ul.notes {
  display: table;
  width: 100%;
  margin: 0;
  padding-left: 0;
}
ul.notes li {
  list-style: none;
  font-size: 12px;
  line-height: 1.6;
}
ul.notes li .notes_head {
  display: table-cell;
  vertical-align: top;
  white-space: nowrap;
  padding-right: 0.5em;
}
ul.notes li .notes_body {
  display: table-cell;
  vertical-align: top;
}

text-indentとpadding-leftで揃えるパターン

text-indentとpadding-leftを使って揃えてみましょう。
このパターンだとフォント次第で少しズレるのが懸念点ですね。
フォント次第で少々調整が必要です。
ただ、HTML、CSSの書き方はいたってシンプルです。

コードを見る(HTML・CSS)

HTML

<p class="ind_a">*1 赤い服を着てる。青い服を着てる。赤というよりもオレンジに近い。青というよりも優しいブルー。男の口調は柔らかい、女は小さく笑う。少し雨が降ってきた。近くのスーパーで雨宿りをすることにした。飴でも買おうかと男が言った。女は「うん」と言った。</p>
<p class="ind_a">*2 明日は図書館に行こうと決めていた。あ、月曜日は休館日だったっけ。インターネットで調べてみた。「第2・4月曜日は開館」、よしよし、と思った。ひさしぶりの自転車は少し埃がかぶっていた。館内をぐるぐるまわり5冊の本を借りると外は雨が降っていた。帰ることにした僕たちは、よしよし、と思った。</p>
<p class="ind_a">*3 部屋の居心地が良過ぎる今冬、レスポンシブにした。いろいろ良いなと思うけど改行が難しいよねって思う。ということで改行を控えめにしようと思う。デザインは少しポップにしようと始めたけどどんどんシンプルになっていく。で結局白黒グレーな空間になる。いろんなサイズでの確認、タブレットそろそろ買おうかな。普通。普通って何?最近の口癖。レスポンシブな日常。</p>
<p class="ind_b">※ 引越してきて1年が経った。ペンキ塗りから始めたから次の月まで住める状態じゃなかった。雪が結構降った。あー、引っ越すんじゃなかったなって思った。屋上に行ってみた。寒かったけど寝転がった。来年のことを思った。雪が降った翌日は空が綺麗だった。カメラを買おうと思った。</p>

CSS

/* ---------- 02 text-indent と padding-left で揃える ---------- */
p.ind_a {
  font-size: 12px;
  line-height: 1.6;
  text-indent: -1.4em;
  padding-left: 1.4em;
  margin: 0;
}
p.ind_b {
  font-size: 12px;
  line-height: 1.6;
  text-indent: -1.3em;
  padding-left: 1.3em;
  margin: 0;
}

どっちがいいですかー?

うーん、ul(リスト)とtableの仕組みを使って揃えるパターンのほうが綺麗ですね。
フォントが変わってもズレることがないですし。
あといろんな場面で応用が効くので個人的には好きですね。

こんな感じでも使えます。

コードを見る(HTML・CSS)

HTML

<ul class="notes_date">
  <li>
    <div class="notes_date_head">8月12日</div>
    <div class="notes_date_body">赤い服を着てる。青い服を着てる。赤というよりもオレンジに近い。青というよりも優しいブルー。男の口調は柔らかい、女は小さく笑う。少し雨が降ってきた。近くのスーパーで雨宿りをすることにした。飴でも買おうかと男が言った。女は「うん」と言った。</div>
  </li>
  <li>
    <div class="notes_date_head">10月5日</div>
    <div class="notes_date_body">明日は図書館に行こうと決めていた。あ、月曜日は休館日だったっけ。インターネットで調べてみた。「第2・4月曜日は開館」、よしよし、と思った。ひさしぶりの自転車は少し埃がかぶっていた。館内をぐるぐるまわり5冊の本を借りると外は雨が降っていた。帰ることにした僕たちは、よしよし、と思った。</div>
  </li>
  <li>
    <div class="notes_date_head">12月19日</div>
    <div class="notes_date_body">部屋の居心地が良過ぎる今冬、レスポンシブにした。いろいろ良いなと思うけど改行が難しいよねって思う。ということで改行を控えめにしようと思う。デザインは少しポップにしようと始めたけどどんどんシンプルになっていく。で結局白黒グレーな空間になる。いろんなサイズでの確認、タブレットそろそろ買おうかな。普通。普通って何?最近の口癖。レスポンシブな日常。</div>
  </li>
  <li>
    <div class="notes_date_head">1月10日</div>
    <div class="notes_date_body">引越してきて1年が経った。ペンキ塗りから始めたから次の月まで住める状態じゃなかった。雪が結構降った。あー、引っ越すんじゃなかったなって思った。屋上に行ってみた。寒かったけど寝転がった。来年のことを思った。雪が降った翌日は空が綺麗だった。カメラを買おうと思った。</div>
  </li>
</ul>

CSS

/* ---------- 03 応用・日付と文を揃える ---------- */
ul.notes_date {
  display: table;
  width: 100%;
  margin: 0;
  padding-left: 0;
}
ul.notes_date li {
  list-style: none;
  font-size: 12px;
  line-height: 1.6;
  margin-bottom: 20px;
}
ul.notes_date li:last-child {
  margin-bottom: 0;
}
ul.notes_date li .notes_date_head {
  display: table-cell;
  vertical-align: top;
  white-space: nowrap;
  padding-right: 1.5em;
  min-width: 60px;
  text-align: right;
}
ul.notes_date li .notes_date_body {
  display: table-cell;
  vertical-align: top;
}

いまの書き方

この記事を書いたあと、CSS でできることが増えました。いまなら、注釈の種類に合わせて次の 3 つから選ぶのがおすすめです。

Grid と subgrid で揃える(table の代わり)

上の table の仕組みは、いまは Grid で書けます。ul を 2 列のグリッドにして、li に『grid-template-columns: subgrid;』を付けると、どの行も ul と同じ 2 列にそろいます。左の列は、いちばん長い記号(※、*1、日付など)に自動で合わせてくれます。

コードを見る(HTML・CSS)

HTML

<ul class="notes_grid">
  <li>
    <div class="notes_grid_head">*1</div>
    <div class="notes_grid_body">赤い服を着てる。青い服を着てる。赤というよりもオレンジに近い。青というよりも優しいブルー。男の口調は柔らかい、女は小さく笑う。少し雨が降ってきた。近くのスーパーで雨宿りをすることにした。飴でも買おうかと男が言った。女は「うん」と言った。</div>
  </li>
  <li>
    <div class="notes_grid_head">*2</div>
    <div class="notes_grid_body">明日は図書館に行こうと決めていた。あ、月曜日は休館日だったっけ。インターネットで調べてみた。「第2・4月曜日は開館」、よしよし、と思った。ひさしぶりの自転車は少し埃がかぶっていた。館内をぐるぐるまわり5冊の本を借りると外は雨が降っていた。帰ることにした僕たちは、よしよし、と思った。</div>
  </li>
  <li>
    <div class="notes_grid_head">*3</div>
    <div class="notes_grid_body">部屋の居心地が良過ぎる今冬、レスポンシブにした。いろいろ良いなと思うけど改行が難しいよねって思う。ということで改行を控えめにしようと思う。デザインは少しポップにしようと始めたけどどんどんシンプルになっていく。で結局白黒グレーな空間になる。いろんなサイズでの確認、タブレットそろそろ買おうかな。普通。普通って何?最近の口癖。レスポンシブな日常。</div>
  </li>
  <li>
    <div class="notes_grid_head">※</div>
    <div class="notes_grid_body">引越してきて1年が経った。ペンキ塗りから始めたから次の月まで住める状態じゃなかった。雪が結構降った。あー、引っ越すんじゃなかったなって思った。屋上に行ってみた。寒かったけど寝転がった。来年のことを思った。雪が降った翌日は空が綺麗だった。カメラを買おうと思った。</div>
  </li>
</ul>

CSS

/* ---------- 04 いま:Grid と subgrid で揃える ---------- */
ul.notes_grid {
  display: grid;
  grid-template-columns: auto 1fr; /* 左は記号のいちばん長いものに合わせる */
  gap: 0 0.5em;
  margin: 0;
  padding-left: 0;
  list-style: none;
}
ul.notes_grid li {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: subgrid; /* どの行も、ul の 2 列にそろう */
  font-size: 12px;
  line-height: 1.6;
}

「※」だけなら list-style

記号が『※』だけなら、HTML に ※ を書かなくても大丈夫です。『list-style: “※”;』で、リストの記号を ※ にできます。2 行目からの頭も、ふつうのリストと同じように自動で揃います。

コードを見る(HTML・CSS)

HTML

<ul class="notes_kome">
  <li>赤い服を着てる。青い服を着てる。赤というよりもオレンジに近い。青というよりも優しいブルー。男の口調は柔らかい、女は小さく笑う。少し雨が降ってきた。近くのスーパーで雨宿りをすることにした。飴でも買おうかと男が言った。女は「うん」と言った。</li>
  <li>明日は図書館に行こうと決めていた。あ、月曜日は休館日だったっけ。インターネットで調べてみた。「第2・4月曜日は開館」、よしよし、と思った。ひさしぶりの自転車は少し埃がかぶっていた。館内をぐるぐるまわり5冊の本を借りると外は雨が降っていた。帰ることにした僕たちは、よしよし、と思った。</li>
  <li>部屋の居心地が良過ぎる今冬、レスポンシブにした。いろいろ良いなと思うけど改行が難しいよねって思う。ということで改行を控えめにしようと思う。デザインは少しポップにしようと始めたけどどんどんシンプルになっていく。で結局白黒グレーな空間になる。いろんなサイズでの確認、タブレットそろそろ買おうかな。普通。普通って何?最近の口癖。レスポンシブな日常。</li>
  <li>引越してきて1年が経った。ペンキ塗りから始めたから次の月まで住める状態じゃなかった。雪が結構降った。あー、引っ越すんじゃなかったなって思った。屋上に行ってみた。寒かったけど寝転がった。来年のことを思った。雪が降った翌日は空が綺麗だった。カメラを買おうと思った。</li>
</ul>

CSS

/* ---------- 05 いま:※ だけなら list-style ---------- */
ul.notes_kome {
  margin: 0;
  padding-left: 1em; /* ※ の幅のぶん */
  list-style: "※";
}
ul.notes_kome li {
  font-size: 12px;
  line-height: 1.6;
}

「*1、*2」は ol と @counter-style

*1、*2 … と番号をふるなら ol にして、『@counter-style』で番号の形(前に * を付ける)を決めます。番号は自動でふられるので、注釈を足したり消したりしても書き直さなくて大丈夫です。

コードを見る(HTML・CSS)

HTML

<ol class="notes_num">
  <li>赤い服を着てる。青い服を着てる。赤というよりもオレンジに近い。青というよりも優しいブルー。男の口調は柔らかい、女は小さく笑う。少し雨が降ってきた。近くのスーパーで雨宿りをすることにした。飴でも買おうかと男が言った。女は「うん」と言った。</li>
  <li>明日は図書館に行こうと決めていた。あ、月曜日は休館日だったっけ。インターネットで調べてみた。「第2・4月曜日は開館」、よしよし、と思った。ひさしぶりの自転車は少し埃がかぶっていた。館内をぐるぐるまわり5冊の本を借りると外は雨が降っていた。帰ることにした僕たちは、よしよし、と思った。</li>
  <li>部屋の居心地が良過ぎる今冬、レスポンシブにした。いろいろ良いなと思うけど改行が難しいよねって思う。ということで改行を控えめにしようと思う。デザインは少しポップにしようと始めたけどどんどんシンプルになっていく。で結局白黒グレーな空間になる。いろんなサイズでの確認、タブレットそろそろ買おうかな。普通。普通って何?最近の口癖。レスポンシブな日常。</li>
  <li>引越してきて1年が経った。ペンキ塗りから始めたから次の月まで住める状態じゃなかった。雪が結構降った。あー、引っ越すんじゃなかったなって思った。屋上に行ってみた。寒かったけど寝転がった。来年のことを思った。雪が降った翌日は空が綺麗だった。カメラを買おうと思った。</li>
</ol>

CSS

/* ---------- 06 いま:*1、*2 は ol と @counter-style ---------- */
@counter-style notes-asterisk {
  system: extends decimal; /* 1, 2, 3 … と数える */
  prefix: "*";
  suffix: " ";
}
ol.notes_num {
  margin: 0;
  padding-left: 2em; /* *1 の幅のぶん。*10 からは 2.5em くらい */
  list-style: notes-asterisk;
}
ol.notes_num li {
  font-size: 12px;
  line-height: 1.6;
}

どれを使う?

  • 記号が「※」だけ → list-style: "※";
  • 「*1、*2」の番号つき → ol と @counter-style
  • 「※」と「*1」がまざる、日付など左の長さがばらばら → Grid と subgrid

どれも、いまのブラウザ(Chrome・Edge・Safari・Firefox)で使えます。subgrid は Safari 16、@counter-style は Safari 17 から。もっと古いブラウザにも対応したいときは、上の table の方法が安心です。

さいごに

デザオ
あ、頭が揃いましたー
デザコト
この注文はよくあるのでブックマークですねー

ふたりの小言

デザコトauthor

あ、いいな、と思うWebデザインを紹介しています。デザインの参考に。やさしいデザインが多いです。Webデザインギャラリー『デザインのこと - Web design gallery』を運営しています。