文章の最初の文字だけ大きくするデザインがありますが、spanタグで囲って大きくする方法もあります。
ただそれだとHTMLをいじる必要があるので、今回はHTMLはそのままでCSSだけで実現する方法を解説します。
(有料になっていたらすいません🙇♂️)
CSSのfirst-letterで最初の一文字を大きくする方法
早速ですが今回のデモのコードはこちらです。
<div class="box">
<p>愛犬撮影会に行ってきました。とても天気が良くてワンちゃん達も楽しそうにしていました。写真が出来上がるのが楽しみです。</p>
</div>
.box {
box-shadow: 1px 1px 5px 2px #ccc;
margin-inline: auto;
margin-top: 20px;
max-width: 300px;
padding: 1em;
width: 95%;
}
p {
font-size: 16px;
letter-spacing: 0.05em;
line-height: 1.5;
}
p::first-letter {
color: red;
font-size: 40px;
font-weight: 700;
}
CSSのポイントは最後のp::first-letter
で、これは擬似要素になります。
p::first-letter {
/* 最初の文字にあてるスタイル */
}
ここで最初の文字のスタイルを設定できます。
今回は大きくして色と太さも変えてみました。
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
ただ最初の文字を大きくするデザインとはちょっとイメージが違うと思うので、テキストを回り込ませてみたいと思います。
最初の文字にテキストを回り込ませる方法
テキストを回り込ませるのに必要なのはfloat
になります。
p::first-letter {
line-height: 1.2;
float: left;
padding-right: 10px;
}
ただし文字の高さや右側の余白などを調整するために、line-height
とpadding-right
も書いています。
こちらがデモです。
See the Pen
1文字目だけ大きくする:テキストを回り込ませる by junpei (@junpei-sugiyama)
on CodePen.
段落(pタグ)が複数ある場合
もしdivタグの中にpタグが複数ある場合はどうなるでしょうか。
<div class="box">
<p>愛犬撮影会に行ってきました。とても天気が良くてワンちゃん達も楽しそうにしていました。写真が出来上がるのが楽しみです。</p>
<p>愛犬撮影会に行ってきました。とても天気が良くてワンちゃん達も楽しそうにしていました。写真が出来上がるのが楽しみです。</p>
<p>愛犬撮影会に行ってきました。とても天気が良くてワンちゃん達も楽しそうにしていました。写真が出来上がるのが楽しみです。</p>
</div>
この場合、CSSが先ほどと同じならこのようになります。
See the Pen
1文字目だけ大きくする:複数の段落 by junpei (@junpei-sugiyama)
on CodePen.
もし最初の段落(pタグ)だけ適用させたい場合は、最初のpタグにだけclass名を付けそれに適用させるか、以下のように書けばOKです。
p:first-of-type::first-letter {
/* 最初の文字にあてるスタイル */
}
spanタグを使うデメリット
spanタグを使う場合は、冒頭でも書いたようにHTMLをいじる必要があります。
特に複数行ある場合は手間になりますし、見た目的にも良くないですよね。
<div class="box">
<p><span>愛</span>犬撮影会に行ってきました。</p>
<p><span>と</span>ても天気が良くてワンちゃん達も楽しそうにしていました。</p>
<p><span>写</span>真が出来上がるのが楽しみです。</p>
</div>
まとめ
今回はfirst-letter
を使って最初の一文字を大きくする方法を解説してきました。
使用頻度が低いと思いますが、これを知らないとspanタグを使ってごちゃごちゃしたHTMLを書くことになるので、覚えておくと便利かと思います。
以上になります。