You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何设置box-sizing:border-box的100%高度div仍溢出body/html父元素?

问题原因分析

你的代码里导致div.a溢出的核心原因有两个:

1. box-sizing属性拼写错误

你写的是box-sixing,正确的属性名是box-sizing——这个拼写错误直接导致该属性完全没有生效,浏览器会忽略这个无效的CSS声明。

2. 父元素的盒模型计算方式问题

body和html默认的box-sizing值是content-box,在这个模式下,元素的height属性仅代表内容区的高度,边框和内边距会额外增加元素的总高度。

你给body和html设置了:

height: 100vh;
border: 5px solid black;

这意味着它们的总高度是 100vh + 10px(上下边框各5px),已经超出了视口的高度(100vh)。而div.a的height:100%是继承父元素(body)的内容区高度(也就是100vh),再加上父元素本身已经超出视口,最终就会让div.a看起来“溢出”了父元素和视口。

修复方案

要解决这个问题,你需要做两处修改:

  1. 修正box-sizing的拼写错误;
  2. 给html和body也设置box-sizing: border-box,让它们的高度计算包含边框,确保总高度刚好是100vh。

修改后的完整代码:

html,
body {
  margin: 0;
  padding: 0;
  height: 100vh;
  border: 5px solid black;
  box-sizing: border-box; /* 给父元素添加盒模型设置 */
}

div.a {
  height: 100%;
  margin: 0;
  padding: 0;
  box-sizing: border-box; /* 修正拼写错误 */
  background-color: blue;
}
<div class='a'></div>

这样修改后,html和body的总高度会被限制在100vh(边框包含在高度内),div.a的100%高度会刚好填满body的内容区,不会出现溢出。

内容的提问来源于stack exchange,提问作者Chris Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:15:13