为什么 min-height:100% 自声明文档类型后不起作用?

Why does min-height:100% not work since declaring a doctype?

我有一个带有 class .appdiv,它具有以下 css 规则:

.app {
    width: 960px;
    margin: 40px auto 0 auto;
    background: #fff;
    min-height: 100%;
    z-index: 1;
}

min-height 按预期工作,让应用程序 div 填满屏幕,即使它是空的 - 这是因为内容是通过 ajax 加载的,我想要div 甚至在内容加载之前就到达屏幕底部。

但是,我之前忘记将 <!DOCTYPE html> 添加到我的文档中,现在已更正,高度规则不再有效。 doctype 必须存在,因为它是必需的,也是为了解决 a jQuery issue I was having

为什么 doctype 弄乱了我的 css?或者,可能更重要的是,为什么它事先有效?

当您删除 doctype 时,浏览器进入 怪癖模式,它以不同的方式帮助旧代码 未验证 正确呈现

因为古代浏览器有奇怪的、不一致的行为,并且浏览器将 Doctypes 视为智力测试,以查看作者是否按照标准或他们从 W3School 学到的知识编写代码十年前。

如果你有 height: 100% 并且 parent 元素的高度是 auto 那么 100% 表示 auto.

仅当 parent 元素具有 defined height 时,即不是 auto[=41= 的值].如果它有 100% 高度 ,则还必须定义父项的父项高度。这可能会一直持续到 html 根元素。

所以设置htmlbody元素的height100%,以及该元素的每个 祖先元素 您希望具有 100% 高度排在首位。

html, body {
    margin: 0;
    padding: 0;
    border: none;
    height: 100%;
}

#mydiv {
    height: 100%;
}

您也可以使用 vh 单元,具体取决于您需要支持的浏览器。所以:

#mydiv {
    min-height: 100vh
}