質問編集履歴

7

修正

2021/03/04 04:44

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -200,7 +200,7 @@
200
200
 
201
201
  追記2の例をもとに当てはめると、-25+0+0+w+0+0+-25=300
202
202
 
203
- .child のwidthは350pxになる
203
+ .child のwidth(計算式のwの部分)は350pxになる
204
204
 
205
205
 
206
206
 

6

追記

2021/03/04 04:44

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -177,3 +177,35 @@
177
177
  ## 結果
178
178
 
179
179
  ![イメージ説明](e76da9ed774d4a641bc48a590ad995f7.png)
180
+
181
+
182
+
183
+ ## Lhankor_Mhyさんの回答に当てはめてみる
184
+
185
+ > .child の包含ブロックは、.parent のコンテンツ領域辺
186
+
187
+ > .child の包含ブロックの幅は、300px
188
+
189
+
190
+
191
+ OK。
192
+
193
+
194
+
195
+ > 等式に当てはめると、-25+0+25+w+25+0+-25=300
196
+
197
+ > つまり、.child のwidthは300px
198
+
199
+
200
+
201
+ 追記2の例をもとに当てはめると、-25+0+0+w+0+0+-25=300
202
+
203
+ .child のwidthは350pxになる?
204
+
205
+
206
+
207
+ > 両パディングを合わせると、親要素のパディング領域辺の幅の350pxと一致する。
208
+
209
+
210
+
211
+ .childにはpaddingは追記2の例ではないので、親要素のパディング領域辺の幅の350pxと一致する。

5

.childからpaddingを外した場合

2021/03/04 04:42

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -121,3 +121,59 @@
121
121
 
122
122
 
123
123
  ![イメージ説明](3856596860c997051f3fd853779b430a.png)
124
+
125
+
126
+
127
+ # 追記2
128
+
129
+ 以下は.childからpaddingを外した場合です。
130
+
131
+
132
+
133
+ ## HTML
134
+
135
+ ```
136
+
137
+ <div class="parent">
138
+
139
+ <a href="#" class="child">Link</a>
140
+
141
+ </div>
142
+
143
+ ```
144
+
145
+ ## CSS
146
+
147
+ ```
148
+
149
+ .parent {
150
+
151
+ padding: 0 25px 0 25px;
152
+
153
+ background-color: #cccccc;
154
+
155
+ width: 300px;
156
+
157
+ display: inline-block;
158
+
159
+ }
160
+
161
+
162
+
163
+ .child {
164
+
165
+ display: block;
166
+
167
+ background: red;
168
+
169
+ margin-left: -25px;
170
+
171
+ margin-right: -25px;
172
+
173
+ }
174
+
175
+ ```
176
+
177
+ ## 結果
178
+
179
+ ![イメージ説明](e76da9ed774d4a641bc48a590ad995f7.png)

4

追記

2021/03/04 04:37

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -103,3 +103,21 @@
103
103
 
104
104
 
105
105
  親は350pxである一方、子は300pxとなるので、なぜ、親要素と子要素の高さ、幅が一致するのかが、包含ブロックの幅の計算式によって、決まるのかが分からない。
106
+
107
+
108
+
109
+ ## 仮に.childのマージンを取り除いた場合
110
+
111
+ ```
112
+
113
+ 0 + 0 + 25px + 300px + 25px + 0 + 0 = 350px
114
+
115
+ ```
116
+
117
+
118
+
119
+ 350pxになり親要素の幅と一致するが以下のように親と幅が一致しなくなる。
120
+
121
+
122
+
123
+ ![イメージ説明](3856596860c997051f3fd853779b430a.png)

3

.childの計算結果を追加

2021/03/04 04:03

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -89,3 +89,17 @@
89
89
  0 + 0 + 25px + 300px + 25px + 0 + 0 = 350px
90
90
 
91
91
  ```
92
+
93
+
94
+
95
+ ## 仮に.childを包含ブロックとした場合(.childは包含ブロックではないですよね?)
96
+
97
+ ```
98
+
99
+ -25px + 0 + 25px + 300px + 25px + 0 + -25px = 300px
100
+
101
+ ```
102
+
103
+
104
+
105
+ 親は350pxである一方、子は300pxとなるので、なぜ、親要素と子要素の高さ、幅が一致するのかが、包含ブロックの幅の計算式によって、決まるのかが分からない。

2

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

2021/03/04 03:58

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -69,3 +69,23 @@
69
69
  }
70
70
 
71
71
  ```
72
+
73
+
74
+
75
+ #Lhankor_Mhyさんの回答を元に以下を追加
76
+
77
+ ## width of containing block(.parent)
78
+
79
+ ```
80
+
81
+ 'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = width of containing block
82
+
83
+ ```
84
+
85
+
86
+
87
+ ```
88
+
89
+ 0 + 0 + 25px + 300px + 25px + 0 + 0 = 350px
90
+
91
+ ```

1

親に幅追加

2021/03/04 03:53

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,10 @@
42
42
 
43
43
  background-color: #cccccc;
44
44
 
45
+ width: 300px;
46
+
47
+ display: inline-block;
48
+
45
49
  }
46
50
 
47
51