我有两个div
元素和nav > nav_1
。当我向margin-top:20px;
添加nav
时,nav
根据正确的正文向下20px
。
但是,当我将此margin-top:20px;
添加到nav_1
时,nav_1
根据正文20px
nav
下降。
为什么? nav_1
的{{1}}元素,它应根据nav
移动
在那个问题我正在寻找解释
nav
.nav {
height: 500px;
width: 500px;
background-color: black;
margin-top:50px;
}
.nav .nav_1 {
height: 50px;
width: 50px;
background-color: blue;
margin-top:50px;
}
答案 0 :(得分:4)
这是"保证金崩溃的一个案例"机制。简而言之,父元素和子元素的边距会折叠成单个边距,大小等于其相应边距的最大值。有几种方法可以禁用这种行为,例如:向父元素添加边框或填充。您可以在mdn article了解有关该机制的更多信息。
答案 1 :(得分:2)
您可以在vec2 v = 2.0f * otherVector;
上使用padding
并移除nav
上的margin
或强>
您可以在.nav .nav_1
display:inline-block
.nav .nav_1

.nav {
height: 500px;
width: 500px;
background-color: black;
}
.nav .nav_1 {
height: 50px;
width: 50px;
background-color: blue;
margin-top:20px;
display:inline-block;
}

答案 2 :(得分:-1)
继@Paul Kozlovitch回答,要解决此问题,您可以设置父enum state
{
STATE_1,
STATE_2,
STATE_3,
STATE_4,
STATE_5,
STATE_6,
STATE_7,
STATE_8,
};
state f(int a, bool b, const std::string& str)
{
// How not to:
if (a < 0)
return b == true ? (str == "morning" ? STATE_4 : STATE_3) : (str == "morning" ? STATE_2 : STATE_1);
else // a >= 0
return b == true ? (str == "morning" ? STATE_8 : STATE_7) : (str == "morning" ? STATE_6 : STATE_5);
}
int main()
{
std::cout << "State: " << f(1, true, "morning") << std::endl;
}
(或display:inline-block
等)。
float
&#13;
.nav {
height: 500px;
width: 500px;
background-color: black;
margin-top:50px;
display:inline-block;
}
.nav .nav_1 {
height: 50px;
width: 50px;
background-color: blue;
margin-top:50px;
}
&#13;