開発時編集者が管理画面から編集してもOKなファイル
下層ページコーディング時は下記の通りに
①ファイルの作成
場所:/wp-content/themes/ydc/assets/scss/object/project
ファイル名:_pagename.scss
②style.scssにincludeさせる
場所:管理画面>外観>テーマエディタ
ファイル:assets/scss/style.scss //【import用】
CSS設計はFLOCSSを使用
https://github.com/hiloki/flocss
BEMルールで記述
block__element--modifier
block--modifier
下層ページコーディング時のclass命名ルール
原則的にページタイトルをclassに入れていく
.p-pagename
block
.p-pagename-heading (コンテンツ上部の導入部分など)
.p-pagename-visual
.p-pagename-news
element
.p-pagename-heading__inner (display flexでブロックを並べる際などコンテンツを内包する要素)
.p-pagename-visual__list (同じ要素を並べていく際の大枠)
.p-pagename-news__item (並べた要素のひとつ)
コンテンツにボリュームがない場合は下記もOK
.p-pagename__inner
.p-pagename__list
.p-pagename__item
modifier
.p-pagename-heading__inner–980
.p-pagename-visual__list–blue
.p-pagename-news__item–1
<div class="c-inner c-section">
<section class="p-about-heading">
<h2 class="c-heading-main">メインタイトル</h2>
<p>リード文リード文リード文リード文リード文リード文リード文リード文</p>
</section>
<section class="p-about-access">
<h2 class="c-heading-main">アクセス</h2>
<div class="p-about-access__inner">
<div class="p-about-access__content">
<h3 class="c-heading-color">最寄駅</h3>
<ul class="p-about-access__list">
<li class="p-about-access__item">●●線XX駅より徒歩5分</li>
<li class="p-about-access__item">●●線XX駅より徒歩15分</li>
</ul>
</div>
<div class="p-about-access__map">
<iframe>googlemap</iframe>
</div>
</div>
elementはひとつ
//NG
.p-about__list__item
.p-about__inner__box
//OK
.p-about__list
.p-about__item
.p-about__list-item(これは名前をハイフンで区切っているだけなのでOK)
c- クラス同士、p- クラス同士のカスケードは禁止
ただし同一のblock名同士で modifier や is-xxx の配下で変化をさせる要素の場合はOKとする
例 カラムやグリッドモジュール
//NG
.c-inner .c-heading-main {...}
.p-about .p-form-table{...}
.p-about .p-about-visual {...} //カスケードにする必要なし
//例外でOK
.p-design-visual__item--1 .p-design-visual__item {...}
p- クラスで c- クラスに変更を加える場合はマルチクラスを使用し、p- クラスの方で調整
projectフォルダ内のSCSSでは.c-から始まるclassの記述は避けてください。
//ページごとに修正したい.c-xxxがある場合は、下記の様に記述し、p-design-heading__ttlで調整する
あまりにも調節しないと使えなさそうな場合(例えばc-colを使って7:3のレイアウトにしようと考えた時など)はc-を使わずにp-でオリジナルで作成してください。
その際はp-col-ではなく上記の命名規則に従ってください。
<h2 class="p-about-heading__ttl c-heading-main">総合デザイン科</h2>
<div class="p-about-heading__inner">
<div class="p-about-heading__content">
7割コンテンツ
</div>
<div class="p-about-heading__img">
3割コンテンツ
</div>
HTML要素を限定するようなクラス名は禁止
特に c- クラスでは禁止します。
理由:異なるHTML要素に同一のスタイルを適用する可能性があるため
//NG
.p-xxxx__h2
.p-xxxx-dl
.p-xxxx-xxx__ul
//OK
.p-xxxx__ttl
.p-xxxx-info
.p-xxxx-xxx__list
.p-xxx-table //tableは表の意味があるのでOK
IDの使用について
IDの仕様は禁止します。
理由:詳細度をあげないため。またヘッダーやフッターなどには接頭辞「l-」を使用しているため不要。
例外
- JavaScriptで使用するためのID指定。(例)id=”js-slider”
- ページアンカーリンク id=”anchor-xxx”
スマートフォンのみで使用するブロックについては、接頭辞のさらに前に「sp-」を追加する
※PCとスマートフォンのデザインがまったく異なるなどの理由でPCとスマートフォンそれぞれで別のHTMLを記述する場合
//スマートフォンのみで表示するブロック
.p-sp-xxx-nav {
}
//スマホのみ、PCのみの表示分けは下記
.u-sp-only .u-pc-only
SASSファイル名とBlockの接頭辞を合わせる
ファイル名とそのファイルに記述するBlockの接頭辞は必ず合わせてください。ファイル内に別のBlockを含めることは禁止です。
同じファイル名のSASSファイルを同一フォルダ内に作成しようとするとバッティングして保存できなくなることを利用して別の作業者が同じBlock名を作成してしまうことを防ぐしくみです。
例:会社案内(スラッグがabout)の場合
ファイル名:/project/_about.scss
ブロック名(コード参照) ↓↓↓
//*** ファイル内の記述 ***
//「/project/_about.scss」では「.p-about...」以外ではじまるブロックを含めることは禁止
// OK
.p-about__ttl {}
.p-about-heading__ttl {}
// NG
.p-news {} // ←これは/project/news.scss に記述する
.c-heading-main {} // ←これは/component/heading.scss に記述する
ページのスラッグやカスタム投稿名をp- クラスの接頭辞にする
理由が無い限り固定ページのスラッグや投稿/カスタム投稿名を接頭辞にしてください。
親子関係のあるページなどは親のページのスラッグでもOKです。
例 : 会社案内
スラッグ about 接頭辞 .p-about
共通パーツの場合は共通パーツオリジナルの接頭辞でOKです。
例:ページ下部に共通のバナーエリアを設置
.p-footer-bannar
例:トップお知らせ
.p-tmp-news
セクションを1つのBlockとしてSASSファイルに階層記述する
ボリュームが「小さい」または「シンプル」なページなどはページ全体をBlockとしてもOKです。
//コンテンツのボリュームが普通〜膨大なページの場合
.p-about-heading {
//エレメント
&__list {
}
//エレメント
&__item {
}
}
//ブロックグループ
.p-design-visual {
//エレメント
&__inner {
}
//エレメント
&__content {
border: 1px solid #bfbfbf;
}
}
//コンテンツのボリュームがシンプルな場合
.p-sitemap{
&__list{
}
&__item{
}
}
.p- .c- .l- .u- の違い
接頭辞の頭にある頭文字は
p→project
c→component
u→utility
l→layout
の略です。
componentはページを跨いで共通で使用するclassを設定しています。(c-headingやc-btnなど)
utilityはtaxt-alignやmargin-topなどよく使うスタイルを設定しています。1つのclassに1つの要素しか設定できません。
layoutはコンテンツ部分外にあるheaderやfooterなどのページを構成するパーツのスタイルを指定します。
projectフォルダ内にあるsassは主に1つのページでしか使わないclassのスタイルを指定します。
componentやutility、layountは主にメインコーダーしか触りません。
他の人がページのコーディングをする際はprojectフォルダ内に格納してください。
SASSフォルダ構造
scss/
├── foundation/ //←mixinやbody、変数、resetなどのベースになるscsssが格納してあります
├── layout/ //←headerやfooterなどのパーツに関するscssが格納してあります
├── object/
│ ├── component/ //←ページを跨いで使える共通パーツに関するscssが格納してあります
│ ├── project/ //←個々のページで使用するscssが格納してあります
│ └── utility/ //←ちょっとしたスタイルを変更したい場合に使うscssが格納してあります
└── style.scss //←上部のフォルダをincludeさせてstyle.cssをコンパイルするためのscss