第3章 - 0009 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 を作成します。

画像ディレクトリの作成

imagesディレクトリを作成します。
コマンドで作成しても良いですし、右クリックなどで開くコンテキストメニューなどからでも良いです。

コマンドで作成する場合(Mac)

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

1
mkdir public/images

画像ファイルの準備

どんな画像でも良いので、sample-0001.pngを準備してください。
こだわりの無い方はこちらからサンプル画像がダウンロードできます。

準備した画像ファイルは以下のパスに格納します。
tutorial/public/images/sample-0001.png

モジュールの作成

今回は完成形のコードだけを載せておこうと思います。

ざっくり丸ごとコピー&ペーストするのも良いと思いますし、付与されているクラス名を一つひとつ確認しながら進めるのも良いと思います。
それぞれの習熟度に合わせて進めてください。

以下の通り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>

以下の通り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%;
}
}

この節のおわりに

今回もElementクラスの数が多いだけで基本的な構成になりました。
少し退屈した方もいると思いますし、良い練習になったという方もいると思います。

表示確認

public/html/module-list.html をブラウザで開いて確認してみてください。

続きはこちら

とてもやさしいCSS設計チュートリアルの目次へ戻る