HTML中的文档声明

server/2024/9/25 10:25:21/

前言

  • 什么是<!DOCTYPE>?是否需要在 HTML5 中使用?
  • 什么是严格模式与混杂模式?

文档声明概念

HTML 文档通常以文档声明开始,该声明的作用是帮助浏览器确定其尝试解析和显示的 HTML 文档类型。

html"><!DOCTYPE html>

文档声明并非一个 HTML 标签。它是一条“信息”,告知浏览器期望的文档类型。

文档声明必须是 HTML 文档的第一行、且顶格显示,对大小写不敏感。因为任何放在 DOCTYPE 前面的东西,比如批注或 XML 声明,会令 IE9 或更早期的浏览器触发怪异模式。

HTML 版本从最开始诞生到最新的 HTML5,中间经历了很多版本,最显著的区别就是支持的 HTML 元素不同,例如:
在这里插入图片描述

更多各版本所支持的不同 HTML 元素可以参阅:https://www.w3school.com.cn/tags/html_ref_dtd.asp

书写文档声明原因是不同版本所支持的 HTML 元素类型是不同的,我需要告诉浏览器以哪一种文档类型方式来解析当前的这个 HTML 文件。

渲染模式

明白了文档类型声明的作用之后,接下来我们还需要看一个东西,那就是渲染模式。
浏览器渲染模式分为 3 种:

  • 怪癖模式(混杂模式)[Quirks mode]
  • 严格模式(标准模式) [Standars mode]
  • 几乎标准模式 [Almost standards mode]

了解:

之所以出现不同的渲染模式,是由于历史原因造成的。

当年 Netscape4(网景公司早期的浏览器)和 IE4(微软公司早期的浏览器)实现 CSS 机制时,没有遵循 W3C 提出的标准。Netscape4 提供了糟糕的支持,而 IE4 虽然接近标准,但依旧未能完全正确的支持标准。

所以,在 W3C 标准推出以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode 或者称为 Compatibility Mode

为了保障自己的网站在各个浏览器上显示正确,网页开发者们不得不依据各个浏览器自身的规范来使用 CSS,因此大部分网站的 CSS 实现并不符合 W3C 规范的标准。

W3C 标准推出后,浏览器渲染页面有了统一的标准(Strict mode 也有叫做 Standars mode)浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。

为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的 IE)。这样浏览器渲染上就产生了 Quircks modeStandars mode,两种渲染方法共存在一个浏览器上。混杂模式服务于旧式规则,而严格模式服务于标准规则。

对于 HTML 文档来说,浏览器使用文档开头的 DOCTYPE 来决定用怪异模式处理或标准模式处理。

如果文档中没有 DOCTYPE 将触发文档的怪异模式。怪异模式最明显的影响是会触发怪异盒模型

严格模式和怪异模式的部分渲染区别

  1. 盒模型的高宽包含内边距 padding 和边框 border
    在这里插入图片描述

  2. 可以设置行内元素的高宽
    standards 模式下,给 span 等行内元素设置 wdithheight 都不会生效,而在 Quirks 模式下,则会生效。

  3. 可设置百分比的高度
    standards 模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置高度,子元素设置一个百分比的高度是无效的。

  4. margin:0 auto 设置水平居中在 IE 下会失效
    使用 margin:0 autostandards 模式下可以使元素水平居中,但在 Quirks 模式下却会失效,Quirks 模式下的解决办法,用 text-align 属性:body{text-align:center};#content{text-align:left}

  5. Quirks 模式下设置图片的 padding 会失效

  6. Quirks 模式下 Table 中的字体属性不能继承上层的设置

  7. Quirks 模式下 white-space:pre 会失效

补充:

更多可以参阅 MDN 上对怪异模式和标准模式的解释:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Quirks_Mode_and_Standards_Mode

MDN 上还给出了不同模式在不同浏览器下的渲染区别(英文):https://hsivonen.fi/doctype/


http://www.ppmy.cn/server/15225.html

相关文章

网站被SmartScreen标记为不安全怎么办?

在互联网时代&#xff0c;网站的安全性和可信度是用户选择是否继续访问的重要因素之一&#xff0c;然而&#xff0c;网站运营者偶尔会发现使用Edge浏览器访问网站时&#xff0c;会出现Microsoft Defender SmartScreen&#xff08;以下简称SmartScreen&#xff09;提示网站不安全…

【CVPR2023】Re:InterHand:一个用于3D交互手部姿态估计的重光照数据集

这篇论文的标题是《A Dataset of Relighted 3D Interacting Hands》&#xff0c;作者是Gyeongsik Moon, Shunsuke Saito, Weipeng Xu, Rohan Joshi, Julia Buffalini, Harley Bellan, Nicholas Rosen, Jesse Richardson, Mallorie Mize, Philippe de Bree, Tomas Simon, Bo Pen…

【Linux】学习记录_15_POSIX信号量

15 POSIX信号量 15.1 POSIX信号量基本概念 信号量&#xff08;Semaphore&#xff09;是一种实现进程/线程间通信的机制&#xff0c;可以实现进程/线程之间同步或临界资源的互斥访问&#xff0c; 常用于协助一组相互竞争的进程/线程来访问临界资源。在多进程/线程系统中&#…

feign整合sentinel做降级知识点

1&#xff0c;配置依赖 <!-- Feign远程调用依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> <!--sentinel--><dependency>…

Okapi Framework

文章目录 关于 OkapiRainbowCheckMateRatelTikalFilters Plugin for OmegaTLonghorn 关于 Okapi 官网&#xff1a;http://okapiframework.org源码&#xff1a;https://bitbucket.org/okapiframework/okapi/src文档&#xff1a;http://okapiframework.org/wiki/index.php?titl…

【AI 测试】分词器

目录 概念分词器种类主要应用场景几种常用的分词器适合用于自然语言处理任务的分词器分词器使用实例概念 分词器(Tokenizer)是一种自然语言处理工具,其核心功能是将连续的自然语言文本切分为一系列有意义的词汇单元。这些词汇单元通常是词或短语,它们在语言学上具有一定的…

unity快捷键

参考资料&#xff1a;Unity3D有哪些实用的快捷键/热键&#xff1f;

Java数据类型和变量

一.字面常量 常量即在程序运行期间不变的的量。 字面常量的分类&#xff1a; 1.字符串常量&#xff1a;“内容”&#xff0c;双引号里的内容&#xff1b; 2.整形常量&#xff1a;100&#xff0c;像这样的&#xff1b; 3.浮点数常量&#xff1a;1.23&#xff0c;直接写的浮…