回答編集履歴

3

追記です

2018/11/09 02:51

投稿

akihiro3
akihiro3

スコア955

test CHANGED
@@ -57,3 +57,41 @@
57
57
 
58
58
 
59
59
  他にもtableもブロックではないので起きないかもしれませんね(未検証)
60
+
61
+
62
+
63
+ 解決策2に関して
64
+
65
+ ---
66
+
67
+ 「2. 親要素と子要素の間に**テキスト**などを挟む」
68
+
69
+ そこの挟むものは「タグ」ではなく「テキスト」です
70
+
71
+ pタグはブロックの要素ですが、「テキスト」はブロックの要素ではないですよね?
72
+
73
+ 空のプロックの要素はいくら挟んでも駄目なのはbah91929自身で検証されてますので理解されてますよね
74
+
75
+
76
+
77
+ そのpタグの中のテキストを全て削除するとmarginの相殺が起きるはずです
78
+
79
+ ちなみに「など」がさしてるものは例えばborderです
80
+
81
+ 他にもあるかもしれないので「など」と括ってます
82
+
83
+
84
+
85
+ 「子要素のmaginと親要素のmaginの間に何かを挟んでいるという事です」も勘違いしないように説明しますが、子要素にborderを付けても駄目です
86
+
87
+ borderがその要素のどこに付くのかは分かりますか?
88
+
89
+
90
+
91
+ **marginの内側です**
92
+
93
+
94
+
95
+ なのでそれは「子要素のmaginと親要素のmaginの間」と違うからです
96
+
97
+ つまりborderを付けるべきなのは親要素というわけです。

2

追記です

2018/11/09 02:51

投稿

akihiro3
akihiro3

スコア955

test CHANGED
@@ -37,3 +37,23 @@
37
37
  解決策5ですね
38
38
 
39
39
  .rowのdisplay: flex;を消してみると症状が出ます
40
+
41
+ 追記2
42
+
43
+ ---
44
+
45
+ 簡単にいうとmarginの相殺はブロックの要素に起きるからです
46
+
47
+
48
+
49
+ margin: 0 auto;の中央寄せはインラインの要素には効かないのと似た理由と思えばいかがでしょうか?
50
+
51
+
52
+
53
+ marginの相殺はブロックの要素に起きるので
54
+
55
+ ブロックの要素ではないflexboxでは起きません
56
+
57
+
58
+
59
+ 他にもtableもブロックではないので起きないかもしれませんね(未検証)

1

追記です

2018/11/08 08:49

投稿

akihiro3
akihiro3

スコア955

test CHANGED
@@ -27,3 +27,13 @@
27
27
 
28
28
 
29
29
  5は対策になると聞いたことがありますが試したことがありません
30
+
31
+
32
+
33
+ 追記(質問2について)
34
+
35
+ ---
36
+
37
+ 解決策5ですね
38
+
39
+ .rowのdisplay: flex;を消してみると症状が出ます