为什么高度 100% 在没有 DOCTYPE 声明的情况下起作用?
P粉818561682
P粉818561682 2023-10-26 10:39:42
1
2
653

这是完整的代码:

<!DOCTYPE HTML>
<html>
<body style="height: 100%; padding: 0; margin: 0;">
    <div style="background-color: green; height: 100%; width: 100%"></div>
</body>
</html>

什么也没出现。但是,如果我删除第一行(doctype),所有页面都会按预期变为绿色。

我有两个问题:

  1. 如何让 div 填充页面而不删除该标记?
  2. 为什么删除 doctype 就可以正常工作?


P粉818561682
P粉818561682

全部回复(2)
P粉043432210

你是说垂直吗? div 是块级元素,因此默认情况下它们会水平填充父元素。

为了使其正常工作,您还需要将 HTML 标记的高度设置为 100%。

html, body { height:100%; }

请参阅此处的工作示例:

http://jsfiddle.net/uhg0y9tm/1/

正如这里其他一些人所说,一旦删除第一行(HTML5 文档类型),浏览器将以不同的方式呈现页面,在这种情况下,没有必要为 HTML 标签指定明确的高度100%。

P粉904405941

CSS height 属性、百分比值和 DOCTYPE

您的问题的第一部分询问如何将 100% 高度应用到您的 div ,其他人已多次回答。本质上,声明根元素的高度:

html { height: 100%; }

完整的解释可以在这里找到:


您问题的第二部分受到的关注要少得多。我会尝试回答这个问题。

当您删除 DOCTYPE(文档类型声明)时,浏览器将从标准切换模式怪异模式

怪异模式下,也称为兼容模式,浏览器模拟旧浏览器,以便它可以解析旧网页 - 在网络标准出现之前编写的页面。处于怪异模式的浏览器会伪装成 IE4IE5 和 Navigator 4,以便它可以按照作者的意图呈现旧代码。

以下是Wikipedia如何定义怪癖模式:

以下是 MDN 的观点:

现在,以下是代码中的 height: 100% 在怪异模式下工作但在标准模式下不起作用的具体原因:

标准模式中,如果父元素具有高度: auto (没有定义高度),那么子元素的百分比高度也将被视为 height: auto (按照规范)。

这就是为什么你的第一个问题的答案是 html { height: 100%; }.

要使 height: 100%div 中工作,您必须在父元素上设置 height (更多详细信息)。

但是,在怪异模式下,如果父元素具有 height: auto,则子元素的百分比高度将相对于视口进行测量。

以下是涵盖此行为的三个参考文献:


TL;DR

简而言之,以下是开发人员需要了解的内容:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!