html 的高度与正文和 Chrome 上的默认边距

Del*_*ara 4 html css

您可能知道,Chrome 的默认正文边距为8px.

然而,当我保留正文上的边距并将其高度设置为100%(以及 html 100%)时,这会带来问题。它获取 html 的高度并将其放置在 的上边距之后8px,并以 的下边距结束8px。然而,html 大小不适应 16 像素差异(顶部 8 + 底部 8)。

我认为这与文档流的工作方式有关,html 在正文之前分配了大小,但我不知道如何解决问题。

我认为可以解决此问题的唯一方法是 calc()在 html height 属性上进行表示法:height: calc(100% + 16px)但不起作用。如果您知道为什么不这样做,我想告诉您。

复制问题的代码:

CSS

html {
height: 100%;
background: rgb(42,69,66);
background:  -webkit-linear-gradient(top, rgba(73,94,8,1) 0%, rgba(145,232,66,1) 100%) no-repeat;
}

body {
    height:100%;
}

.divz {
    background-color: olive;
    height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

超文本标记语言

<body>
   <div class="divz"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

这是一个复制该问题的 jsfiddle。请注意底部16px页面末尾和 html 末尾之间的间距。

编辑:我希望边距留在主体上。

编辑2:我尝试的另一件事是将 设置min-height: 100%html,它确实执行了我想要的操作,但如果设置为 html,则min-height: 100%设置为body不起作用。

小智 5

html, body { margin: 0; }

body { padding: 8px; }

*, *:before, *:after { box-sizing: border-box; }
Run Code Online (Sandbox Code Playgroud)

小提琴