第3章 9節 mod-media-0001を作ろう

この節について

この節では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ディレクトリ内で以下のコマンドを実行するとディレクトリが作成できます。

1
mkdir public\images

Macのターミナルで作成する場合

tutorialディレクトリ内で以下のコマンドを実行するとディレクトリが作成できます。

1
mkdir public/images

画像ファイルの準備

どんな画像でも良いので、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設計チュートリアルの目次へ戻る