teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

修正

2021/03/04 04:44

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -99,7 +99,7 @@
99
99
  > つまり、.child のwidthは300px
100
100
 
101
101
  追記2の例をもとに当てはめると、-25+0+0+w+0+0+-25=300
102
- .child のwidthは350pxになる
102
+ .child のwidth(計算式のwの部分)は350pxになる
103
103
 
104
104
  > 両パディングを合わせると、親要素のパディング領域辺の幅の350pxと一致する。
105
105
 

6

追記

2021/03/04 04:44

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -87,4 +87,20 @@
87
87
  }
88
88
  ```
89
89
  ## 結果
90
- ![イメージ説明](e76da9ed774d4a641bc48a590ad995f7.png)
90
+ ![イメージ説明](e76da9ed774d4a641bc48a590ad995f7.png)
91
+
92
+ ## Lhankor_Mhyさんの回答に当てはめてみる
93
+ > .child の包含ブロックは、.parent のコンテンツ領域辺
94
+ > .child の包含ブロックの幅は、300px
95
+
96
+ OK。
97
+
98
+ > 等式に当てはめると、-25+0+25+w+25+0+-25=300
99
+ > つまり、.child のwidthは300px
100
+
101
+ 追記2の例をもとに当てはめると、-25+0+0+w+0+0+-25=300
102
+ .child のwidthは350pxになる?
103
+
104
+ > 両パディングを合わせると、親要素のパディング領域辺の幅の350pxと一致する。
105
+
106
+ .childにはpaddingは追記2の例ではないので、親要素のパディング領域辺の幅の350pxと一致する。

5

.childからpaddingを外した場合

2021/03/04 04:42

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -59,4 +59,32 @@
59
59
 
60
60
  350pxになり親要素の幅と一致するが以下のように親と幅が一致しなくなる。
61
61
 
62
- ![イメージ説明](3856596860c997051f3fd853779b430a.png)
62
+ ![イメージ説明](3856596860c997051f3fd853779b430a.png)
63
+
64
+ # 追記2
65
+ 以下は.childからpaddingを外した場合です。
66
+
67
+ ## HTML
68
+ ```
69
+ <div class="parent">
70
+ <a href="#" class="child">Link</a>
71
+ </div>
72
+ ```
73
+ ## CSS
74
+ ```
75
+ .parent {
76
+ padding: 0 25px 0 25px;
77
+ background-color: #cccccc;
78
+ width: 300px;
79
+ display: inline-block;
80
+ }
81
+
82
+ .child {
83
+ display: block;
84
+ background: red;
85
+ margin-left: -25px;
86
+ margin-right: -25px;
87
+ }
88
+ ```
89
+ ## 結果
90
+ ![イメージ説明](e76da9ed774d4a641bc48a590ad995f7.png)

4

追記

2021/03/04 04:37

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -50,4 +50,13 @@
50
50
  -25px + 0 + 25px + 300px + 25px + 0 + -25px = 300px
51
51
  ```
52
52
 
53
- 親は350pxである一方、子は300pxとなるので、なぜ、親要素と子要素の高さ、幅が一致するのかが、包含ブロックの幅の計算式によって、決まるのかが分からない。
53
+ 親は350pxである一方、子は300pxとなるので、なぜ、親要素と子要素の高さ、幅が一致するのかが、包含ブロックの幅の計算式によって、決まるのかが分からない。
54
+
55
+ ## 仮に.childのマージンを取り除いた場合
56
+ ```
57
+ 0 + 0 + 25px + 300px + 25px + 0 + 0 = 350px
58
+ ```
59
+
60
+ 350pxになり親要素の幅と一致するが以下のように親と幅が一致しなくなる。
61
+
62
+ ![イメージ説明](3856596860c997051f3fd853779b430a.png)

3

.childの計算結果を追加

2021/03/04 04:03

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -43,4 +43,11 @@
43
43
 
44
44
  ```
45
45
  0 + 0 + 25px + 300px + 25px + 0 + 0 = 350px
46
- ```
46
+ ```
47
+
48
+ ## 仮に.childを包含ブロックとした場合(.childは包含ブロックではないですよね?)
49
+ ```
50
+ -25px + 0 + 25px + 300px + 25px + 0 + -25px = 300px
51
+ ```
52
+
53
+ 親は350pxである一方、子は300pxとなるので、なぜ、親要素と子要素の高さ、幅が一致するのかが、包含ブロックの幅の計算式によって、決まるのかが分からない。

2

Lhankor_Mhyさんの回答を元に計算結果追加

2021/03/04 03:58

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -33,4 +33,14 @@
33
33
  margin-right: -25px;
34
34
  margin-bottom: -25px;
35
35
  }
36
+ ```
37
+
38
+ #Lhankor_Mhyさんの回答を元に以下を追加
39
+ ## width of containing block(.parent)
40
+ ```
41
+ 'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = width of containing block
42
+ ```
43
+
44
+ ```
45
+ 0 + 0 + 25px + 300px + 25px + 0 + 0 = 350px
36
46
  ```

1

親に幅追加

2021/03/04 03:53

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,8 @@
20
20
  .parent {
21
21
  padding: 25px;
22
22
  background-color: #cccccc;
23
+ width: 300px;
24
+ display: inline-block;
23
25
  }
24
26
 
25
27
  .child {