スタイルシート(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 は最後に読み込まれ、このファイルの記述が優先される)。
- reset.css
- variables.css
- foundation.css
- layout.css
- component.css
- page-archive.css
- page-agent.css
- 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>
ベンダープレフィックスの順序
- -webkit-
- -moz-
- -ms-
- -o-
- ベンダープレフィックスなし
.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のスクリーンショットです。使いたいアイコンページに行くと、以下の赤線箇所に必要なコードを見つけることができます。

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