第3章 11節 mod-media-0002を作ろう

この節について

この節では2つ目のmediaモジュールを作成します。
今回もModifierクラスは無く、少し多めのElementクラスがあるだけです。

今回も基本に忠実にBlockクラスとElementクラスでモジュールを作成していきましょう。

Block名を決める

今回のBlock名は mod-media-0002 にします。

scssファイルの作成

ファイル名の命名規則は _Block名.scss です。

先ほど決めたBlock名の先頭にアンダースコア(_)を足したものがファイル名になりますので src/scss/modules/_mod-media-0002.scss を作成します。

モジュールの作成

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

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

section要素を同じ記述内容で5回繰り返しているので、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
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<div class="mod-media-0002">
<div class="mod-media-0002__inner">
<section class="mod-media-0002__item">
<a href="#" class="mod-media-0002__item-inner">
<div class="mod-media-0002__text-area">
<h2 class="mod-media-0002__heading">
<span class="mod-media-0002__main-heading">記事タイトル</span>
<span class="mod-media-0002__sub-heading">ブログタイトル</span>
</h2>
<p class="mod-media-0002__main-text">
あああああいいいいいうううううえええええおおおおおかかかかかきききききくくくくくけけけけけこここここさささささしししししすすすすすせせせせせそそそそそ
</p>
<div class="mod-media-0002__sub-text">
13時間前
</div>
</div>
<div class="mod-media-0002__image-area">
<img src="../images/sample-0001.png" alt="" class="mod-media-0002__image">
</div>
</a>
</section>
<section class="mod-media-0002__item">
<a href="#" class="mod-media-0002__item-inner">
<div class="mod-media-0002__text-area">
<h2 class="mod-media-0002__heading">
<span class="mod-media-0002__main-heading">記事タイトル</span>
<span class="mod-media-0002__sub-heading">ブログタイトル</span>
</h2>
<p class="mod-media-0002__main-text">
あああああいいいいいうううううえええええおおおおおかかかかかきききききくくくくくけけけけけこここここさささささしししししすすすすすせせせせせそそそそそ
</p>
<div class="mod-media-0002__sub-text">
13時間前
</div>
</div>
<div class="mod-media-0002__image-area">
<img src="../images/sample-0001.png" alt="" class="mod-media-0002__image">
</div>
</a>
</section>
<section class="mod-media-0002__item">
<a href="#" class="mod-media-0002__item-inner">
<div class="mod-media-0002__text-area">
<h2 class="mod-media-0002__heading">
<span class="mod-media-0002__main-heading">記事タイトル</span>
<span class="mod-media-0002__sub-heading">ブログタイトル</span>
</h2>
<p class="mod-media-0002__main-text">
あああああいいいいいうううううえええええおおおおおかかかかかきききききくくくくくけけけけけこここここさささささしししししすすすすすせせせせせそそそそそ
</p>
<div class="mod-media-0002__sub-text">
13時間前
</div>
</div>
<div class="mod-media-0002__image-area">
<img src="../images/sample-0001.png" alt="" class="mod-media-0002__image">
</div>
</a>
</section>
<section class="mod-media-0002__item">
<a href="#" class="mod-media-0002__item-inner">
<div class="mod-media-0002__text-area">
<h2 class="mod-media-0002__heading">
<span class="mod-media-0002__main-heading">記事タイトル</span>
<span class="mod-media-0002__sub-heading">ブログタイトル</span>
</h2>
<p class="mod-media-0002__main-text">
あああああいいいいいうううううえええええおおおおおかかかかかきききききくくくくくけけけけけこここここさささささしししししすすすすすせせせせせそそそそそ
</p>
<div class="mod-media-0002__sub-text">
13時間前
</div>
</div>
<div class="mod-media-0002__image-area">
<img src="../images/sample-0001.png" alt="" class="mod-media-0002__image">
</div>
</a>
</section>
<section class="mod-media-0002__item">
<a href="#" class="mod-media-0002__item-inner">
<div class="mod-media-0002__text-area">
<h2 class="mod-media-0002__heading">
<span class="mod-media-0002__main-heading">記事タイトル</span>
<span class="mod-media-0002__sub-heading">ブログタイトル</span>
</h2>
<p class="mod-media-0002__main-text">
あああああいいいいいうううううえええええおおおおおかかかかかきききききくくくくくけけけけけこここここさささささしししししすすすすすせせせせせそそそそそ
</p>
<div class="mod-media-0002__sub-text">
13時間前
</div>
</div>
<div class="mod-media-0002__image-area">
<img src="../images/sample-0001.png" alt="" class="mod-media-0002__image">
</div>
</a>
</section>
</div>
</div>

src/scss/modules/_mod-media-0002.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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
.mod-media-0002 {
.mod-media-0002__inner {
display: flex;
flex-wrap: wrap;
margin-left: -16px;
@media #{$g__is-md} {
display: block;
margin-left: 0;
}
}
.mod-media-0002__item {
max-width: 20%;
flex: 0 0 20%;
padding-left: 16px;
box-sizing: border-box;
@media #{$g__is-md} {
max-width: 100%;
margin-left: 0;
padding-left: 0;
}
& + .mod-media-0002__item {
@media #{$g__is-md} {
margin-top: 16px;
}
}
}
.mod-media-0002__item-inner {
display: flex;
flex-direction: column-reverse;
padding: 8px 0;
text-decoration: none;
@media #{$g__is-md} {
flex-direction: row-reverse;
}
}
.mod-media-0002__text-area {
flex: 0 0 auto;
padding-left: 0;
@media #{$g__is-md} {
max-width: 80%;
flex: 0 0 80%;
padding-left: 8px;
box-sizing: border-box;
}
}
.mod-media-0002__image-area {
height: 120px;
overflow: hidden;
background: #f7f7f7;
@media #{$g__is-md} {
height: 104px;
}
}
.mod-media-0002__heading-area {
}
.mod-media-0002__main-heading {
display: block;
font-size: 20px;
font-weight: 700;
color: #222222;
@media #{$g__is-md} {
font-size: 20px;
}
}
.mod-media-0002__sub-heading {
display: block;
font-size: 18px;
font-weight: 700;
color: #555555;
@media #{$g__is-md} {
font-size: 18px;
}
}
.mod-media-0002__main-text-area {
margin-top: 8px;
font-size: 16px;
overflow: hidden;
width: 100%;
}
.mod-media-0002__main-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #222222;
}
.mod-media-0002__sub-text {
font-size: 12px;
color: #555555;
}
.mod-media-0002__image {
object-fit: cover;
height: 100%;
width: 100%;
@media #{$g__is-md} {
object-fit: contain;
}
}
}

表示確認

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

この節のおわりに

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

続きはこちら

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