この節について
この節ではmediaのモジュールを作成します。
今回もModifierクラスは無く、少し多めのElementクラスがあるだけです。
第3章で作成してきた4つのモジュールのうち2つにModifierクラスがあったため、Modifierクラスは頻繁に定義するものと勘違いをさせてしまっているかもしれませんが、実際にWebサイトを作成していくと、Modifierクラスを定義することはそれほど多くありません。
今回も基本に忠実にBlockクラスとElementクラスでモジュールを作成していきましょう。
Block名を決める
今回のBlock名は mod-media-0001
にします。
scssファイルの作成
ファイル名の命名規則は _Block名.scss
です。
先ほど決めたBlock名の先頭にアンダースコア(_)を足したものがファイル名になりますので src/scss/modules/_mod-media-0001.scss
を作成します。
画像ディレクトリの作成
publicディレクトリの中にimagesディレクトリを作成します。
コマンドで作成しても良いですし、右クリックなどで開くコンテキストメニューなどからでも良いです。
Windowsのコマンドプロンプトで作成する場合
tutorialディレクトリ内で以下のコマンドを実行するとディレクトリが作成できます。
Macのターミナルで作成する場合
tutorialディレクトリ内で以下のコマンドを実行するとディレクトリが作成できます。
画像ファイルの準備
どんな画像でも良いので、sample-0001.png
を準備してください。
こだわりの無い方はこちらからサンプル画像がダウンロードできます。
準備した画像ファイルは以下のパスに格納します。
public/images/sample-0001.png
モジュールの作成
今回は完成形のコードだけを載せておこうと思います。
ざっくり丸ごとコピー&ペーストするのも良いと思いますし、付与されているクラス名を一つひとつ確認しながら進めるのも良いと思います。
それぞれの習熟度に合わせて進めてください。
section要素を同じ記述内容で2回繰り返しているので、2回目は単純にコピー&ペーストをしてください。
public/html/module-list.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
| <div class="mod-media-0001"> <section class="mod-media-0001__item"> <a href="#" class="mod-media-0001__item-inner"> <div class="mod-media-0001__text-area"> <h2 class="mod-media-0001__heading"> <span class="mod-media-0001__main-heading">記事タイトル</span> <span class="mod-media-0001__sub-heading">ブログタイトル</span> </h2> <p class="mod-media-0001__main-text"> あああああいいいいいうううううえええええおおおおおかかかかかきききききくくくくくけけけけけこここここさささささしししししすすすすすせせせせせそそそそそ </p> <div class="mod-media-0001__sub-text"> 13時間前 </div> </div> <div class="mod-media-0001__image-area"> <img src="../images/sample-0001.png" alt="" class="mod-media-0001__image"> </div> </a> </section> <section class="mod-media-0001__item"> <a href="#" class="mod-media-0001__item-inner"> <div class="mod-media-0001__text-area"> <h2 class="mod-media-0001__heading"> <span class="mod-media-0001__main-heading">記事タイトル</span> <span class="mod-media-0001__sub-heading">ブログタイトル</span> </h2> <p class="mod-media-0001__main-text"> あああああいいいいいうううううえええええおおおおおかかかかかきききききくくくくくけけけけけこここここさささささしししししすすすすすせせせせせそそそそそ </p> <div class="mod-media-0001__sub-text"> 13時間前 </div> </div> <div class="mod-media-0001__image-area"> <img src="../images/sample-0001.png" alt="" class="mod-media-0001__image"> </div> </a> </section> </div>
|
src/scss/modules/_mod-media-0001.scss
に以下のように記述します。
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| .mod-media-0001 { .mod-media-0001__item { @media #{$g__is-sm} { margin-top: 40px; } & + .mod-media-0001__item { margin-top: 16px; } } .mod-media-0001__item-inner { padding: 8px 0; display: flex; flex-direction: row-reverse; text-decoration: none; @media #{$g__is-sm} { flex-direction: column-reverse; } } .mod-media-0001__text-area { max-width: 60%; flex: 0 0 60%; padding-left: 20px; box-sizing: border-box; @media #{$g__is-sm} { max-width: 100%; flex: 0 0 auto; margin-top: 8px; padding-left: 0; } } .mod-media-0001__image-area { flex: 0 0 40%; background: #eeeeee; height: 120px; overflow: hidden; @media #{$g__is-sm} { flex: 0 0 auto; height: 200px; } } .mod-media-0001__heading-area { } .mod-media-0001__main-heading { display: block; font-size: 24px; font-weight: 700; color: #222222; @media #{$g__is-sm} { font-size: 20px; } } .mod-media-0001__sub-heading { display: block; font-size: 20px; font-weight: 700; color: #555555; @media #{$g__is-sm} { font-size: 18px; } } .mod-media-0001__main-text-area { margin-top: 8px; font-size: 16px; overflow: hidden; width: 100%; } .mod-media-0001__main-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #222222; } .mod-media-0001__sub-text { font-size: 12px; color: #555555; } .mod-media-0001__image { object-fit: cover; height: 100%; width: 100%; } }
|
表示確認
public/html/module-list.html
をブラウザで開いて確認してみてください。
この節のおわりに
今回もElementクラスの数が多いだけで基本的な構成になりました。
少し退屈した方もいると思いますし、良い練習になったという方もいると思います。
続きはこちら
とてもやさしいCSS設計チュートリアルの目次へ戻る