【问题标题】:change in doctype causes webpage to render differentlydoctype 的变化导致网页呈现不同
【发布时间】:2012-02-26 11:27:52
【问题描述】:

我有一个以前没有 doctype 声明的网页。

现在,我在开头添加了<!doctype html>。不幸的是,它现在的渲染方式不同了。

有一个 div 应该垂直填充页面;现在它只填满了页面的上半部分(下半部分是空的)。

这是 div 的 CSS:

#thediv {
    float: left;
    width: 48%;
    height: 95%;
    margin: 2px 2px;
}

我的问题:

  • 如何让 div 再次垂直填充整个页面?(更重要)
  • 添加 <!doctype html> 是否会导致浏览器尝试将其呈现为 HTML5?
  • 为什么更改文档类型会导致这种差异?(不太重要)

【问题讨论】:

    标签: css html doctype


    【解决方案1】:

    您需要将<html><body> 标记(以及包含#thediv 的任何其他标记)的高度设置为100%:

    html, body {
        height: 100%;
    }
    

    doctype 使页面以标准模式而不是怪癖模式呈现。我建议在the blog of the same namedoctype page 上阅读有关怪癖模式的信息。

    这个问题的简短摘要是:在互联网的繁荣时期,当今天仍然存在的浏览器都没有高于版本 4 时,每个浏览器都通过 不同 来区分自己 - 而不是更多符合规范。当浏览器制造商都同意遵守相同的规范时,他们决定继续支持旧的网页构建方式(怪癖模式),以便旧页面仍能在新浏览器中正确呈现.这种怪癖模式仍然内置在大多数浏览器中——当他们检测到一个看起来像是在那些令人兴奋的日子里构建的页面时,它们会激活它。每个浏览器的检测和解析方式都不一样——here's an example of IE 8's

    【讨论】:

    • +1 正要写一个类似的答案。您可以在此建议上查看the fiddle:注释掉html, body 的高度以查看完整效果。 PS。如果这仍然不起作用,那么#thediv 和 body 之间可能还有其他包装器也需要高度。
    【解决方案2】:

    是的,<!doctype html> 是 html5 的文档类型

    http://www.w3schools.com/html5/tag_doctype.asp

    doctype告诉浏览器如何渲染页面,每个doctype都会导致不同的渲染。

    试试这个文档类型:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    

    【讨论】:

    • 谢谢,但我真的在寻找更多细节。
    • 文档类型会导致页面呈现方式发生巨大变化。我对答案做了一些修改。
    【解决方案3】:

    总是,总是总是使用&lt;!DOCTYPE __&gt;在前面

    然后,设计您的网页。

    否则,你不能指望它工作。

    【讨论】:

    • 很好的建议,虽然不是问题的真正答案 ;)
    • 你有点夸张了。尽管不同的浏览器确实有不同的怪癖,但它们中的大多数都是相当标准的,并且有很好的文档记录。我发现在你的 HTML 中没有错误比触发严格模式更有效地使其正常工作。
    • 严格模式比 Quirks 模式更可靠、更一致。
    • 大声笑,浏览器可能完全不同,这很烦人,即使你有完美的 HTML……你会想要设置一个文档类型。
    【解决方案4】:

    没有DOCTYPE,你强制浏览器进入Quirks Mode

    换句话说,所有浏览器都需要两种模式:旧的怪癖模式 规则,严格模式为标准。 IE Mac 是第一个浏览器 实现两种模式,IE Windows 6、Mozilla、Safari、Opera 其次适合。 IE 5 Windows,以及像 Netscape 这样的旧浏览器 4,被永久锁定在怪癖模式。

    选择使用哪种模式需要一个触发器,而这个触发器是 在“文档类型切换”中找到。根据标准,任何 (X)HTML 文档应该有一个文档类型,它告诉全世界哪个 文档使用的 (X)HTML 风格。

    Quirks Mode 基本上是一种反社会模式,当您忘记告诉他们遵循特定的DOCTYPE 时,浏览器就会进入该模式。在大多数情况下,IE 是最糟糕的,当你忘记用 IE 定义 DOCTYPE 时,一切都会崩溃:

    • jQuery 的 DOM 交互变得非常缓慢,因为 IE 在 Quirks 模式下没有实现很多 DOM 功能。
    • 事情总是看起来不对。
    • 远离它。这样你会更快乐。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-30
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      相关资源
      最近更新 更多