スタイルシート(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

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

reset.css

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

variables.css

役割
カラー・余白等のデザイン設計値を管理
cssの例
:root {--color-main: #000; --space-md: 16px;}
人による編集
する(デザイナー作製したデザインに基づいて設定) / AIに色についてのアドバイスをもらうのはOK
AIによる編集
しない

foundation.css

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

layout.css

役割
枠組みのスタイル
main {display: flex;}
ルール
l- プレフィックスがつく
人による編集
する
AIによる編集
しない

component.css

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

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)

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;    
}