スタイルシート(CSS)マニュアル・ガイド

公開後のメンテナンスでも特にスタイルシート(css)の一貫性は重要です。公開後も管理がしやすい、ルールに沿ったスタイルシートにしてください。

CSSファイルの種類

主要なCSSファイルは8つです。/libs/freo/common.php にて各CSSファイルの更新日時(filemtime)を取得し、その値をクエリパラメータとして付与することで、CSSが更新された場合のみブラウザキャッシュを無効化する仕組みを採用しています。

 .com ルートディレクトリー
└ css
  ├ reset.css----------:【編集不要】リセット
  ├ variables.css------:【編集必要】CSS変数(カラー・余白等)
  ├ foundation.css-----:【編集不要】基盤スタイル
  ├ layout.css---------:【編集必要】レイアウト
  ├ component.css------:【編集不要】共通コンポーネント
  ├ page-archive.css---:【編集不要】ページ別スタイル(エリアページ、業種別ページなど 編集をしない内部ページ用)
  ├ page-agent.css-----:【AI編集】ページ別スタイル(Agentが編集をする内部ページ)
  ├ page-main.css------:【編集必要】ページ別スタイル(人が編集をするトップページ、会社概要ページ等)
  └ vendor
    ├ fontawesome_all.css--------:【編集不要】
    ├ colorbox.css---------------:【編集不要】
    ├ jquery.subwindow.css-------:【編集不要】(フォーム用)
    ├ validationEngine.jquery.css:【編集不要】(フォーム用)
    └ code-prettify.css----------:【編集不要】(レギュレーション・コーディング・オーダー時のみ)

CSSファイルは下記の順序で読み込まれます。後に読み込まれるファイルが優先され上書きされます(page-main.css は最後に読み込まれ、このファイルの記述が優先される)。

  1. reset.css
  2. variables.css
  3. foundation.css
  4. layout.css
  5. component.css
  6. page-archive.css
  7. page-agent.css
  8. page-main.css

以下で、各ファイルの役割について説明します。

2026年7月27日更新:Claude CodeでHTMLテンプレートまで含めて制作する運用に変わったため、variables.csslayout.csspage-main.css をAIの編集対象に変更しました。AIが書き、人が確認するという分担です。reset.cssfoundation.csscomponent.csspage-archive.css が編集不要である点は従来どおりです。

reset.css

役割
ブラウザのスタイルをリセット
html, body, div, span{margin:0; padding:0; border:0;}
人による編集
しない
AIによる編集
しない

variables.css

役割
カラー・余白等のデザイン設計値を管理
cssの例
:root {--color-main: #000; --space-md: 16px;}
人による編集
する(デザイナー作製したデザインに基づいて設定)。AIが編集した場合は内容を確認する
AIによる編集
する。Figmaのカラー変数と1対1で対応する素の変数を先に置き、意味づけ変数(--color-main等)はそれを参照させる。変数の追加・削除は人に確認する

色・余白のほかに、foundation.css がタグに付けている見出しの装飾--h3-border-left 等)もこのファイルで管理します。詳しくは次の foundation.css を参照してください。

foundation.css

役割
HTMLタグの基準スタイルを管理
a {font-size: 100%; line-height: 1; color: #333; background: #fff;}
人による編集
しない
AIによる編集
しない

2026年7月27日更新:foundation.css がタグに直接付けている装飾は、値を variables.css の変数に出しました。foundation.css そのものは従来どおり編集しません。Figmaでデザインが決まっているサイトは、variables.css 側で装飾を外してください。外し忘れると、デザインにない灰色の縦棒や下線がそのまま出ます。

変数にした装飾は次の4種類です。

  • h2 の下に入る3pxの灰色ライン
  • h3h6 の左に入る灰色の縦棒
  • h1 span の文字サイズ50%・行間3倍
  • a の下線

装飾を外すときは、variables.css に次のように書きます(リンクの下線は記事本文で必要なため、外すかどうかはサイトごとに判断してください)。

:root {
    --h1-span-font-size: 100%;
    --h1-span-line-height: 1.5;
    --h2-border-bottom: none;
    --h2-padding-bottom: 0;
    --h3-border-left: none;
    --h3-padding-left: 0;
    --h4-border-left: none;
    --h4-padding-left: 0;
    --h5-border-left: none;
    --h5-padding-left: 0;
    --h6-border-left: none;
    --h6-padding-left: 0;
}

デザインなしで内部ページを量産するサイトは、variables.css の既定値のまま使えば従来どおりの見た目になります。

layout.css

役割
枠組みのスタイル
main {display: flex;}
ルール
l- プレフィックスがつく
人による編集
する。AIが編集した場合は内容を確認する
AIによる編集
する

component.css

役割
レギュレーションページで紹介されているUI部品のスタイル
.c-listing {display: inline-block; padding: 10px 20px; background: #000;}
ルール
c- プレフィックスがつく
人による編集
しない
AIによる編集
しない

2026年7月28日更新:表の見出しセル(dl.c-table dt)の背景色を variables.css--color-table-th-bg に出しました。既定値は従来と同じ #eee なので、既存サイトの見た目は変わりません。

サイトに地色があるデザインでは、既定のままだと表が背景と同化して読めなくなります。生成りや薄いグレーを全面に敷くサイトでは、必ず variables.css で色を決めてください。

:root {
    --color-table-th-bg: #EEE9D7;
}

component.css そのものは従来どおり編集しません。色を直書きしている箇所が他にも残っているため、同じ問題に当たったら変数に出す形で対応してください(サイト側のCSSで打ち消すと、次のサイトでまた同じ調査が必要になります)。

page-archive.css

役割
エリアページ、業種別ページなど 編集をしない内部ページ用のスタイルを管理
.p-area {display: flex;}
ルール
p- プレフィックスがつく
人による編集
しない
AIによる編集
しない

page-agent.css

役割
Agentが編集をする内部ページ用のスタイルを管理します。
.p-domain__active {display: inline-block;}
ルール
p- プレフィックスがつく
人による編集
しない
AIによる編集
する(cursorエージェントが自由に編集を進める)

page-main.css

役割
トップページ、会社概要ページ等の人が編集をするページ用のスタイルを管理
.p-top {display: display:flex;}
ルール
p- プレフィックスがつく
人による編集
する(微調整)。AIが編集した場合は内容を確認する
AIによる編集
する(主はAI)

vendorフォルダー

外部ライブラリのスタイルシート

役割
fontawesome、colorboxなど、外部ライブラリのスタイルシート
人による編集
しない
AIによる編集
しない

adminフォルダー

管理ページ用のスタイルシート

役割
管理ページ用のスタイルシート
人による編集
しない
AIによる編集
しない

CSSの命名規則 BEMに基づいたルール

クラス名の基本は、BEMの命名規則を一部採用し、弊社が管理をしやすいように変更しています。(2026年2月 V2の開発に伴った変更点)

BEMとは

BEMは、Block、Element、Modifierの略で、クラス名の命名規則を定めるものです。保守性の高さから1番多く使われている命名規則です。CursorAgent、Claude Codeなどを用いる際にルールを明確に伝えるため、この方法を用いて運用し、チームで保守性を高めるためにこのルールを遵守し、見やすく、探しやすく、分かりやすいことを優先してください。

Block
ブロック要素
Element
ブロック要素の子要素
Modifier
ブロック要素の状態(修飾子)
具体例
<div class="block__element–-modifier">

BEMの命名方法

  • BlockとElementはアンダースコア2つで区切る
  • ElementとModifierはハイフン2つで区切る
  • ハイフンとアンダースコアは2つ
  • Block, Element, Modifierが複数単語になる場合、単語と単語の間はハイフン1つで区切る(例:p-company-president)
  • ハイフン1つの場合はElementとModifierの区切りではなく、ただの単語の区切りとして使用

class名の付け方

トップページの場合

トップページは、p-top__about, p-top__serviceなどとクラス名を付けてください。以下に例を記載します。

<section class="p-top__about">
<section class="p-top_service">
<div class="p-top__about-container">
<ul class="p-top__about-box">

ページIDが、about の場合

ページIDのaboutが接頭辞となり、その後にコンテンツに合わせてクラス名を付けてください。以下に例を記載します。

<section class="p-about__president">
<section class="p-about__history">

ページIDが、about/term の場合

ページIDのabout/termの最後の/(スラッシュ)以降の言葉(このケースはterm)が接頭辞となり、その後にコンテンツに沿ったナンバリング、最後に要素の意味をあらわす英単語とする。

<section class="p-term__img">
<section class="p-term__txt">

ページIDが、about/term と privacy/term で重複する場合

適切な判断をして対応をお願いします。以下に例を記載します。

1. ページID変更
privacy/term → privacy/terms に変更をする
2. 親階層を含めたクラスに
p-privacy-term

about/term ページのクラスを、p-termなどで作成済みの場合

<section class="p-term__img">
<section class="p-term__txt">

HTMLの記述を簡略化する記述

HTMLをシンプルに保つため、クラス指定を最低限にしています。

具体例(避けて欲しい例)

以下は、BEMのルールとしては間違いではありませんが、HTMLをシンプルに保つため、以下のような記述は避けてください。

<section class="p-company">
    <div class="p-company__item">
        <h2 class="p-company__item-ttl">ここにタイトルが入る</h2>
        <p class="p-company__item-txt">テキストが入る。テキストが入る。</p>
        <a href="#" class="p-company__item-link p-company__item-link--red">MORE</a>
    </div>
</section>

具体例(推奨する例)

HTMLをシンプルに保つため、クラス指定を最低限にしています。親(section)だけに class を付け、子孫はタグで指定する。

<section class="p-company">
    <div>
        <h2>ここにタイトルが入る</h2>
        <p>テキストが入る。テキストが入る。</p>
        <a href="#">MORE</a>
    </div>
</section>

ベンダープレフィックスの順序

  1. -webkit-
  2. -moz-
  3. -ms-
  4. -o-
  5. ベンダープレフィックスなし
.about {
  -webkit-box-sizing: transition .3s;
  -moz-box-sizing: transition .3s;
  -ms-box-sizing: transition .3s;
  -o-box-sizing: transition .3s;
  box-sizing: transition .3s;
}

以下のサイトで、自動でベンダープレフィックスを付けてくれるので、ベンダープレフィックスなしで作成し、最後に以下のサイトでベンダープレフィックスつきのCSSを生成する。

サイズ指定

font-size
rem指定
margin, padding
px / rem / %など適宜判断
line-height
単位なしで指定

以下を、style.cssに記述することで、デバイスサイズが1,280px以上で1.6rem = 16px, 2.4rem = 24pxと同等になる。

html{
  font-size:62.5%;
}
@media screen and (max-width:1279px){
  html{
    font-size:56.25%;
  }
}
p{
  line-height:1.6;
}

間違った例

p{
    font-size:16px;
}

h1{
    font-size:40px;
}

正しい例

p{
    font-size:1.6rem;
}

h1{
    font-size:4.0rem;
}

font awesome

標準テンプレートに、font awesomeを導入しています。

アイコンの種類を参照する

以下はfont awesomeのスクリーンショットです。使いたいアイコンページに行くと、以下の赤線箇所に必要なコードを見つけることができます。

fontawesomeのスクリーンショット

cssに::beforeを使って埋め込む方法

nav ul li::before{
  content: "\f015";
  font-family: "Font Awesome 6 Free";
  font-weight:900;
  padding-right:1.0rem;
}

cssにabsoluteを使って埋め込む方法

blockquote{
  position: relative;
}
blockquote::before{
  content: "\f10d";
  font-family: "Font Awesome 6 Free";
  font-weight:900;
  position: absolute;
  top:10px;
  left:10px;
}

iタグを使用して埋め込む方法

<i class="fas fa-sort-down"></i>

その他の実例

複数指定の際の改行

#top .top-09 h2::before, #top .top-12 h2::before{
  font-size:2.0rem;
}

↓見づらいので、カンマの後に改行を入れる

#top .top-09 h2::before,
#top .top-12 h2::before{
  font-size:2.0rem;
}

一括指定

悪い例

順序がばらばらなため、制作者以外の人がCSSを編集する際にどこに何が書いてあるのか理解しづらい。

.top-03 h2,
.top-04 h2,
.top-05 h2,
.top-06 h2,
.top-07 h2,
.top-03 p {
    text-align: center;
}

.top-04 h2,
.top-06 h2,
.top-04 ul li a span {
    color: #fff;
}

良い例

HTML内に出てくる順序でCSSを記述する。どこに何が書いてあるのか、制作者以外の人でも理解しやすい。冗長的になってしまうが、自分以外の人が更新作業などをするときに迷わないようにするのが判断基準。

.top-03 h2{
    text-align: center;
}
.top-03 p {
    text-align: center;    
}

.top-04 h2{
    text-align: center;
    color:#fff;
}
.top-04 ul li a span {
    color: #fff;
}

.top-05 h2{
    text-align: center;    
}

.top-06 h2{
    text-align:center;
    color: #fff;
}

.top-07 h2{
    text-align: center;    
}