この節について
これまでmodulesディレクトリの中にモジュールのファイルを作成してきましたが、この節ではlayoutsディレクトリの中にレイアウトのファイルを作成します。
レイアウトのクラスの作り方については、接頭辞がmod-ではなくl-になるだけで、モジュールと同じです。
この節ではまずl-body-inner-0001クラスとHTML文書構造を作成して、次の節でその役割や特徴について説明します。
Block名を決める
今回のBlock名は l-body-inner-0001
にします。
モジュールのクラスの接頭辞はmod-でしたが、レイアウトのクラスの接頭辞はl-です。
scssファイルの作成
ファイル名の命名規則はモジュールと同じで _Block名.scss
です。
先ほど決めたBlock名の先頭にアンダースコア(_)を足したものがファイル名になりますので src/scss/layouts/_l-body-inner-0001.scss
を作成します。
src/scss/blog-service-top.scssの編集
src/scss/blog-service-top.scssに @import "./layouts/l-body-inner-0001.scss";
を追記して、以下のようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // base @import "./base/global-variables/media-queries/media-queries.scss"; @import "./base/default.scss";
// layouts @import "./layouts/l-body-inner-0001.scss";
// modules @import "./modules/mod-button-0001.scss"; @import "./modules/mod-container-0001.scss"; @import "./modules/mod-footer-0001.scss"; @import "./modules/mod-header-0001.scss"; @import "./modules/mod-heading-0001.scss"; @import "./modules/mod-media-0001.scss"; @import "./modules/mod-media-0002.scss";
|
blog-service-top.htmlの編集
blog-service-top.htmlのbodyタグの中に以下のように追記します。
bodyタグから外側は略して、追記分だけを記述しています。
1 2 3 4 5 6 7 8 9 10 11 12 13
| 〜略〜 <div class="l-body-inner-0001"> <div class="l-body-inner-0001__header-wrapper"> ここにヘッダーのモジュールが入ります。 </div> <div class="l-body-inner-0001__contents-wrapper"> ここにコンテンツ領域のレイアウトが入ります。 </div> <div class="l-body-inner-0001__footer-wrapper"> ここにフッターのモジュールが入ります。 </div> </div> 〜略〜
|
_l-body-inner-0001.scssの編集
_l-body-inner-0001.scss に以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| .l-body-inner-0001 { position: relative; min-height: 100vh; padding-bottom: 41px; box-sizing: border-box; background-color: #f7f7f7; @media #{$g__is-md} { min-height: 0; } .l-body-inner-0001__header-wrapper { } .l-body-inner-0001__contents-wrapper { } .l-body-inner-0001__footer-wrapper { position: absolute; left: 0; bottom: 0; width: 100%; } }
|
module-list.htmlに作成しておいたmod-header-0001をblog-service-top.htmlにコピー&ペーストして以下のようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <div class="l-body-inner-0001"> <div class="l-body-inner-0001__header-wrapper"> <header class="mod-header-0001"> <div class="mod-header-0001__inner"> <div class="mod-header-0001__logo-area"> <a href="#" class="mod-header-0001__logo"> ロゴ </a> </div> <ul class="mod-header-0001__button-group"> <li class="mod-header-0001__login-button-wrapper"> <a href="#" class="mod-button-0001 mod-button-0001--size-sm">ログイン</a> </li> <li class="mod-header-0001__sign-up-button-wrapper"> <a href="#" class="mod-button-0001 mod-button-0001--size-sm mod-button-0001--secondary">新規登録</a> </li> </ul> </div> </header> </div> <div class="l-body-inner-0001__contents-wrapper"> ここにコンテンツ領域のレイアウトが入ります。 </div> <div class="l-body-inner-0001__footer-wrapper"> ここにフッターのモジュールが入ります。 </div> </div>
|
module-list.htmlに作成しておいたmod-footer-0001をblog-service-top.htmlにコピー&ペーストして以下のようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <div class="l-body-inner-0001"> <div class="l-body-inner-0001__header-wrapper"> <header class="mod-header-0001"> <div class="mod-header-0001__inner"> <div class="mod-header-0001__logo-area"> <a href="#" class="mod-header-0001__logo"> ロゴ </a> </div> <ul class="mod-header-0001__button-group"> <li class="mod-header-0001__login-button-wrapper"> <a href="#" class="mod-button-0001 mod-button-0001--size-sm">ログイン</a> </li> <li class="mod-header-0001__sign-up-button-wrapper"> <a href="#" class="mod-button-0001 mod-button-0001--size-sm mod-button-0001--secondary">新規登録</a> </li> </ul> </div> </header> </div> <div class="l-body-inner-0001__contents-wrapper"> ここにコンテンツ領域のレイアウトが入ります。 </div> <div class="l-body-inner-0001__footer-wrapper"> <footer class="mod-footer-0001"> <div class="mod-footer-0001__copy-area"> <a href="#" class="mod-footer-0001__copy"> ©中野ピク氏 </a> </div> </footer> </div> </div>
|
この節で編集したファイルの全容
src/scss/blog-service-top.scss
は以下の通りになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // base @import "./base/global-variables/media-queries/media-queries.scss"; @import "./base/default.scss";
// layouts @import "./layouts/l-body-inner-0001.scss";
// modules @import "./modules/mod-button-0001.scss"; @import "./modules/mod-container-0001.scss"; @import "./modules/mod-footer-0001.scss"; @import "./modules/mod-header-0001.scss"; @import "./modules/mod-heading-0001.scss"; @import "./modules/mod-media-0001.scss"; @import "./modules/mod-media-0002.scss";
|
public/html/blog-service-top.html
は以下の通りになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>中野ピク氏流CSS設計</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="../stylesheets/html5reset-1.6.1.css"> <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous" /> <link rel="stylesheet" href="../stylesheets/blog-service-top.css"> </head> <body> <div class="l-body-inner-0001"> <div class="l-body-inner-0001__header-wrapper"> <header class="mod-header-0001"> <div class="mod-header-0001__inner"> <div class="mod-header-0001__logo-area"> <a href="#" class="mod-header-0001__logo"> ロゴ </a> </div> <ul class="mod-header-0001__button-group"> <li class="mod-header-0001__login-button-wrapper"> <a href="#" class="mod-button-0001 mod-button-0001--size-sm">ログイン</a> </li> <li class="mod-header-0001__sign-up-button-wrapper"> <a href="#" class="mod-button-0001 mod-button-0001--size-sm mod-button-0001--secondary">新規登録</a> </li> </ul> </div> </header> </div> <div class="l-body-inner-0001__contents-wrapper"> ここにコンテンツ領域のレイアウトが入ります。 </div> <div class="l-body-inner-0001__footer-wrapper"> <footer class="mod-footer-0001"> <div class="mod-footer-0001__copy-area"> <a href="#" class="mod-footer-0001__copy"> ©中野ピク氏 </a> </div> </footer> </div> </div> </body> </html>
|
src/scss/layouts/_l-body-inner-0001.scss
は以下の通りになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| .l-body-inner-0001 { position: relative; min-height: 100vh; padding-bottom: 41px; box-sizing: border-box; background-color: #f7f7f7; @media #{$g__is-md} { min-height: 0; } .l-body-inner-0001__header-wrapper { } .l-body-inner-0001__contents-wrapper { } .l-body-inner-0001__footer-wrapper { position: absolute; left: 0; bottom: 0; width: 100%; } }
|
表示確認
public/html/blog-service-top.html
をブラウザで開いて確認してみてください。
この節のおわりに
l-body-inner-0001クラスとHTML文書構造を作成して、その中にmod-header-0001とmod-footer-0001を設置することによって、全てのページに共通利用できる外枠部分ができました。
次の節ではこのコードを読み返しながら、l-body-inner-0001の役割や特徴について解説していきます。
続きはこちら
とてもやさしいCSS設計チュートリアルの目次へ戻る