この投稿では見出しタグに連番をふったり、装飾したりして手順をいいかんじに表現する方法を紹介します。
実現したいこと
次のようななんの変哲もないHTMLにスタイルを当てて、
<h1>カレーライスの作り方</h1>
<div class="steps">
<h2>野菜と肉を切る</h2>
<p>いい感じの大きさに野菜と肉を切ります。</p>
<h2>煮込む</h2>
<p>切った具材を鍋に入れて煮込みます。</p>
<h2>味付け</h2>
<p>カレールーなど調味料を入れて完成です。</p>
</div>
下のように各ステップに1,2,3と連番がついた表示になるようにしたいと思います。
見出しに連番をつけたり、装飾したりして「手順」を表現する方法
いきなりですが、完成形のCSSを示します。細かい説明はコード内にコメントで書いてあるのでご覧ください。
.steps {
/* 連番カウンター名の定義 */
counter-reset: step-counter;
/* 縦棒との位置関係に必要 */
position: relative;
/* 縦棒と連番のためのスペースを左に確保 */
padding-left: 2rem; /* 連番(1.5rem) + 余白 */
}
/* 縦棒 */
.steps:before {
content: "";
/* 幅と色 */
background-color: #d59533;
width: 2px;
/* 位置 */
position: absolute;
top: 0.7rem; /* 円のwidthの半分 */
left: 0.7rem; /* 円のwidthの半分 */
height: calc(100% - 0.7rem); /* 100% - top */
/* 連番より後ろに表示するため */
z-index: 0;
}
.steps > h2 {
/* 連番カウンターを+1する */
counter-increment: step-counter;
/* 連番カウンターを垂直方向に中央揃えで表示する */
display: flex;
align-items: center;
}
/* ①②③など連番 */
.steps > h2:before {
/* 連番カウンターの値を表示する */
content: counter(step-counter);
/* フォントと色 */
background: #d59533;
color: white;
font-size: 0.8rem;
font-weight: normal;
/* 文字を中央に表示する */
line-height: 1.5rem;
text-align: center;
/* 円で表示する */
width: 1.5rem;
height: 1.5rem;
border-radius: 1.5rem;
/* .stepsでmargin-left +2rem したぶん左に戻す */
position: absolute;
left: 0;
/* 縦棒より手前に表示するため */
z-index: 1;
}
どうやって連番を表示しているか?
連番を表示するためにcounter-reset
、counter-increment
、content: counter(step-counter)
を使っています。
- counter-reset - CSS: カスケーディングスタイルシート | MDN
- counter-increment - CSS: カスケーディングスタイルシート | MDN
- counter() - CSS: カスケーディングスタイルシート | MDN
動作デモ
一応動くデモとしてCodePenを貼っておきます:
See the Pen CSSで見出しに連番をつけたり、装飾したりして「手順」を表現する by suin (@suin) on CodePen.
最後までお読みくださりありがとうございました。Twitterでは、Qiitaに書かない技術ネタなどもツイートしているので、よかったらフォローしてもらえると嬉しいです→Twitter@suin