【发布时间】:2020-12-13 09:46:02
【问题描述】:
我刚刚开始学习 flexbox 布局并实现了一个示例,但是当我将 margin 20px 设置为我的 flexbox 容器时卡住了。顶部、左侧和右侧边距按预期工作,但我不知道底部边距没有意外设置。
我已将容器的高度设置为 100%,它采用父级(主体元素)的高度,也是 100%。
虽然当我将填充设置为 20px 到我的身体并从容器中删除 20px 边距时它工作正常。
只是想知道这种行为。
为什么边距在这里不起作用而不是填充?
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
background: #011627;
height: 100%;
}
.container {
margin: 20px;
border: solid 2px #f9f871;
}
.container > div:nth-child(odd) {
padding: 10px;
background: #ff6a67;
}
.container > div:nth-child(even) {
padding: 10px;
background: #007277;
color: azure;
}
/* overwrite css */
.container {
display: flex;
height: 100%;
align-items: center;
justify-content: center;
}
<div class="container">
<div class="home">Home</div>
<div class="search">Search</div>
<div class="view">View</div>
<div class="logout">Logout</div>
</div>
【问题讨论】:
-
溢出:自动到正文,html
-
这也有效,但我想要理由,以便我会再次犯这个错误
-
你有一个溢出,你将 body 和 html 固定为 100%,但由于边距,里面的元素占用了 100% 以上,所以你需要启用滚动才能看到它
-
元素如何占据超过 100% 的高度?是不是因为
box-sizing: border-box属性不包含计算余量? -
是的,不包括边距