Inside cmn!

山本 慎二

ブログ記事にありがちな体裁まとめ —コピペで使える便利なCSSジェネレーター付き

この記事は誰向け?

この記事は次のような方を主な対象としています。

  • デザイナーにブログ本文のデザインを丸投げされたフロントエンドエンジニア
  • 読みやすいブログ本文デザインのヒントを探しているデザイナー

「ブログのCSSくらい簡単でしょ」と思われがちですが、実はそうとも言えません。コーポレートサイトのトップページや About ページはワイヤーフレームを丁寧に設計してからデザインに入りますが、ブログ本文は入力される内容が事前に想定しきれないという特性があります。また、記事を書くのはHTML/CSSに詳しくない担当者であることが多く、classを付与してもらうのが難しい。つまり「クラスレス・タグベース」でのスタイリングが基本になるわけです。

この記事では、ブログ本文で使われる代表的なHTMLタグの整理から、グローバルCSSを汚染しない書き方、さらに最新の @scope ルールまでを順を追って解説します。

最後にコピペで使える「ブログ本文CSSジェネレーター」も用意しましたので、この記事と合わせて利用してみてくださいね!

意外と奥深いブログ記事の本文のスタイル

コーポレートサイトにも欠かせない情報発信のためのブログ機能ですが、デザインの解像度が低くなりがちなのが現実です。しかしながら、ブログはお客様に向けて言葉やメッセージを発信するための重要なメディアです。そのスタイルは、

  • 太めの文字で力強い印象
  • 広めに取った行間やレタースペーシングで涼やかな印象
  • 整理されたヘッドラインや引用で知的な印象

…のように、伝えたいメッセージの手触り感・温度感・テンション感を非言語的な側面から文章を補強してくれる重要なファクターです。

顔ぶれ充実 — hX、a、strong、mark、code に blockquote など

WordPress などの WYSIWYG エディタ(ブロックエディタ含む)だけでも、多彩なHTMLを出力させることが可能です。使いこなせればメリハリのある読みやすい記事になります。ブログ記事でよく使うHTMLタグを整理しました。

タグ 役割と使いどころ
h1h6 ヘッドラインタグ。さまざまなレベルのタイトルに使用。アウトラインをはっきりさせ、ページ全体を読みやすくする。SEOにも直結するため、h1 は1ページに1回が原則。
p 段落タグ。エディタで Enter キーを押すと挿入されることが多い。br とは異なり、段落間に意味的な区切りを生む。スタイルでしっかりマージンをつけることが重要。
br 改行タグ。「Shift + Enter」で入力。同じ段落の中での改行に使う。p タグとのマージン差をつけることで文章にリズムが生まれる。
a アンカータグ。ハイパーリンクに使用。色・下線・ホバー時の変化をさりげなくスタイルするだけで文章全体の品質感が上がる。
strong / b 強調・太字。strong は意味的な重要性を示し、b は視覚的な太字を指す。スクリーンリーダーの読み上げにも影響するため使い分けを意識したい。
em / i 斜体。em は強調のイタリック、i は専門用語や外国語など視覚的なイタリックに。日本語フォントではイタリックが効かないことも多いため、代替スタイルも検討する。
mark マーカータグ。「ここ重要!」という箇所のハイライトに。デフォルトは黄色背景だが、ブランドカラーに合わせてカスタマイズすると統一感が出る。
code インラインコードタグ。関数名・タグ名・コマンドなどを本文中で示す際に使用。等幅フォントと背景色で本文と区別しやすくする。
pre 整形済みテキスト。コードブロックの表示に使う(pre > code の組み合わせが定番)。SyntaxHighlight 系のライブラリと組み合わせると一気にカッコよくなります。
blockquote 引用タグ。誰かの発言・名言・他サイトからの引用などに使用。左ボーダーや背景色でひと目で「引用」とわかるスタイルにするのが定番。
ul / ol / li リストタグ。情報を箇条書きにして整理するのに不可欠。デフォルトのリストマーカーをカスタムアイコンに差し替えると簡単に個性が出せます。
hr 水平線タグ。セクションの区切りに使用。デフォルトの線より、細くシンプルにスタイルするのがおすすめ。

行間と段落 — br と p の使い分け、マージン感の重要性

WYSIWYG エディタでは、Enter キー → p タグ(段落)Shift + Enter → br(改行)が挿入されることが一般的です。文章の組み立て方の話は省きますが、CSSの観点で重要なのは、この2つのマージンを必ず区別することです。

もし p タグと br タグによる改行が同じ余白になってしまうと、文章全体がのっぺりとして読みにくくなります。実際の見え方を比較してみましょう。

【OK】例のように段落間(p)に十分な余白を与えると、文章が「ブロック」として認識しやすくなり、読み進めやすくなります。

さらに一歩進んで、隣り合うタグの組み合わせによってマージンをコントロールするとより精緻な本文デザインが実現できます。たとえば:

  • h2 の直後の p は上マージンを小さくする(h2 + p { margin-top: 0.6em; }
  • h3 の直前の p は下マージンを大きくする(p:has(+ h3) { margin-bottom: 2em; }
  • リスト直後のリストは間隔をつめる(ul + ul { margin-top: -0.8em; }

こうした細かいコントロールの積み重ねが、「丁寧に装丁された本」のような読みやすい本文を生み出します。

classを使わずにCSSを指定しよう(※ラッパーを除く)

通常のHTML/CSSコーディングでは classid を使って狙った要素にスタイルを当てていきます。しかしブログ記事は、HTML/CSSの知識がない担当者が執筆するケースが大半です。毎回 class="highlight" のようなクラスを付けてもらうのは現実的ではありません。

そこで活躍するのが要素セレクタ(タグ名)ベースのCSSです。ただし、ページ全体の ph2 に直接スタイルを当ててしまうとグローバルのCSSが汚染されてしまいます。そのため、ブログ本文を包むラッパー要素を1つだけ用意し、その子孫要素として指定するのが定石です。

グローバルのCSSを汚染しないラッパー子孫セレクタ

まず、ブログ本文のHTMLをひとつのクラスで囲います。

<article class="blog-body">
  <h2>見出しテキスト</h2>
  <p>本文テキスト</p>
</article>

次に、CSS側では .blog-body を起点にした子孫セレクタで各要素をスタイルします。

/* ラッパー子孫セレクタで指定 */
.blog-body h2 {
  font-size: 1.5rem;
  border-bottom: 2px solid #333;
  padding-bottom: 0.5em;
  margin-bottom: 1em;
}

.blog-body p {
  line-height: 1.9;
  margin-bottom: 1.6em;
}

/* 隣接セレクタで余白を調整 */
.blog-body h2 + p {
  margin-top: 0.6em;
}

.blog-body blockquote {
  border-left: 4px solid #b7e4c7;
  padding: 12px 20px;
  background: #f6fdf8;
  color: #555;
}

この方法のポイントは、CSS のネストや +(隣接兄弟)・~(一般兄弟)セレクタを組み合わせることです。たとえば .blog-body h3 + p なら「h3 の直後にある p」だけを狙えるので、class を一切使わずに文脈に応じた細かい余白コントロールが実現できます。

【最新】@scope ルールを使った記述方法

Chrome 118 / Safari 17.4 以降では、CSS の @scope ルールが使えるようになりました。これは「このセレクタはこのスコープ内にのみ適用する」という宣言を CSS 側だけで完結できる仕組みです。ラッパークラスを使う従来の書き方と似ていますが、より宣言的で意図が明確になります。

@scope (.blog-body) {

  h2 {
    font-size: 1.5rem;
    border-bottom: 2px solid #333;
  }

  p {
    line-height: 1.9;
    margin-bottom: 1.6em;
  }

  blockquote {
    border-left: 4px solid #b7e4c7;
    padding: 12px 20px;
  }

}

@scope (.blog-body) の中に書いたセレクタは、自動的に .blog-body の子孫にのみ適用されます。さらに @scope にはスコープの上限と下限を指定する機能もあります。

/* .blog-body の中の、.no-style 以外の範囲だけに適用 */
@scope (.blog-body) to (.no-style) {
  p {
    line-height: 1.9;
  }
}

上記のように書くと、.blog-body の中であっても .no-style という要素の中は除外されます。コンポーネントの「穴」を柔軟に空けられるのが @scope 最大の特徴です。

⚠️ ブラウザ対応状況(2025年6月時点):@scope は Chrome 118 以上・Safari 17.4 以上・Firefox 128 以上で利用可能です。対応範囲は急速に広がっていますが、社内ツールなど特定環境向けでなければ、従来のラッパーセレクタ方式と組み合わせて使うのが安全です。

まとめ(おまけの「ブログ本文CSSジェネレーター」はこちら!)

ブログ記事の本文スタイリングは、「どうせテキストだから簡単」と思われがちですが、実際には多種多様なHTMLタグへの対応・classに頼れないセレクタ設計・グローバルCSSの汚染防止など、考えることが意外と多い領域です。

「HTMLタグの種類と意味を理解する」、「p タグと br タグのマージンを区別する」、「隣接・兄弟セレクタでコンテキストに応じた余白コントロールをする」、「ラッパークラスの子孫セレクタか @scope で範囲を限定する」などのポイントを押さえることで「読みやすい・伝わる」本文デザインが近づきます!

ブログ本文CSSジェネレーター

さて、お待ちかね(?)のブログ本文CSSジェネレーターは上記リンク先にご用意しました。
よく見るブログ本文の体裁をイメージした4つのテーマ「Minimal」「Magazine」「Tech」「Natural」を用意し、ボタンのクリックで切り替え、サイトのイメージに合わせてアクセント色や文字サイズを変更できる機能を実装しており、CSSはコピペでコピーしてなるべくそのまま使えるようになっています。(ラッパーのクラスは必要に応じて変更してください)

この記事やCSSジェネレーターを参考に、「読みやすい・伝わる」本文デザインのために、ぜひ今日のコーディングから意識して素敵な記事ページをコーディングしていただければ幸いです!

Written by

山本 慎二 Shinji Yamamoto

front-end engineer

1987年に東京で生まれたが、1歳からは北海道で育つ。
2010年に札幌市立大学デザイン学部製品デザインコースを卒業後、イベント運営を行う会社に勤務し業務の一環でHTML/CSSに触れる。
2016年にcommono立ち上げ時から参加し、フロントエンドエンジニアとして学びながら現在に至る。

Q1. commonoに参加した理由
矢野さんが立ち上げメンバーを探しているときに、知人の紹介でお会いし、ここでなら前向きにワクワクできるようなことができると感じて参加させていただきました。
Q2. わたしの偏愛
マイホーム(今年こそピザ窯を)
Q3. 今後commonoというフィールドでやりたいこと
クライアント様やデザイナーと一緒にユーザーの心に残るような体験をWEBで表現する手伝いをしていきたいです。

お問い合わせ

    個人情報利用目的への同意

    ※このサイトはCloudflare Turnstileよって保護されています。
    ※お客様が入力した個人情報はSSL暗号化信号によって保護されています。

    COMMONO株式会社
    E-mail:info@commono.co.jp
    個人情報保護方針、個人情報の取扱いについて
    PRIVACY POLICY

    お気に入り

    お気に入りから削除

    選択したアイテムをお気に入りから削除しますか?