Web前端入门第 8 问:HTML !DOCTYPE 申明有何用处?如果没有此申明有什么问题?

news/2025/3/6 9:35:22/文章来源:https://www.cnblogs.com/linx/p/18754262

HELLO,这里是大熊学习前端开发的入门笔记。

本系列笔记基于 windows 系统。


先电脑端浏览器打开任何一个网页,比如百度。

再用 ctrl + u 快捷键即可查看源码,瞅瞅第一行代码,是不是都是 <!DOCTYPE xxx> 开头。

是否好奇这这行代码有嘛用?

DOCTYPE 语法规则

声明必须是 HTML 文档的第一行,位于 `` 标签之前。声明不是 HTML 标签,它告诉 web 浏览器使用哪个 HTML 版本进行代码解析。

作用

  1. 规范模式触发
    声明 doctype 后,浏览器会以标准模式(Standards Mode)渲染页面,确保按照 W3C/WHATWG 规范解析 HTML/CSS。

  2. 声明 HTML 版本
    明确文档类型(如HTML4/XHTML/HTML5),指导浏览器按对应规则处理文档。

  3. 避免浏览器兼容性问题
    未声明时,浏览器可能退化为怪异模式(Quirks Mode),模仿旧浏览器(如IE5)的非标准渲染行为,导致布局错乱。

未声明 <!DOCTYPE> 的问题

  1. 渲染不一致
    浏览器可能会进入怪异模式,导致页面在不同浏览器上的表现不一致。这可能导致布局错乱、字体大小变化、边距和填充不一致等问题。

  2. 跨浏览器不一致
    不同浏览器对怪异模式的实现差异较大,页面可能在不同浏览器中表现迥异。

  3. 新特性支持受限
    部分 HTML5/CSS3 功能可能依赖标准模式才能生效。

  4. 搜索引擎优化(SEO)影响
    虽然搜索引擎主要关注的是内容,但渲染不一致可能会影响网页的可读性和用户体验,间接影响 SEO。

几种声明方式

先看对比图:

除了 HTML 5 的声明,是否有发现其他声明后面都有一个 dtd 的链接?那么 dtd 的作用是什么?

文档类型定义(DTD,Document Type Definition)是一种特殊文档,它规定、约束符合标准通用标示语言(SGML)或SGML子集可扩展标示语言(XML)规则的定义和陈述。---- 来源:百度百科

关于上图中的几种声明方式说明:

HTML 5

于2014年正式发布,是目前最新的 HTML 标准,引入了许多新的元素、属性和功能,如语义化标签、多媒体支持、表单验证等。

HTML5 是目前最常用和推荐的 HTML 标准,它具有更好的语义化、多媒体支持、跨平台兼容性和更丰富的功能。开发者应该尽可能使用 HTML5 标准来构建现代的 Web 应用程序。

XHTML 1.1

于2001年发布,是 XHTML 1.0 的一个扩展版本,增加了一些新的元素和属性。

这个 DTD 与 XHTML 1.0 Strict 相同,但是允许您添加模块(例如为东亚语言提供 ruby 支持)。

XHTML 1.0

于2000年发布,是 HTML 4.01 的一个更严格的版本,基于 XML。

  • XHTML 1.0 Strict
    包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。结构必须按标准格式的 XML 进行书写。

  • XHTML 1.0 Transitional
    包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。结构必须按标准格式的 XML 进行书写。

  • XHTML 1.0 Frameset
    这个 DTD 与 XHTML 1.0 Transitional 相同,但是允许使用框架集内容。

HTML 4.01

于1999年发布,分为严格( Strict )、过渡( Transitional )和框架集( Frameset )三个版本,引入了更多的样式和脚本支持。

  • HTML 4.01 Strict
    包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

  • HTML 4.01 Transitional
    包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

  • HTML 4.01 Frameset
    这个 DTD 与 HTML 4.01 Transitional 相同,但是允许使用框架集内容。

结论

为了确保网页在不同浏览器和设备上的正确渲染和一致性,推荐使用 <!DOCTYPE html> 声明,这是 HTML5 的标准声明,简洁且兼容性好。在编写 HTML 文档时,应始终在文档的最顶部包含此声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894504.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web前端入门第 9 问:HTML 块级元素,内联块元素,内联元素三者有什么区别?

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。HTML 中的元素根据其默认的 显示类型 主要分为三类:块级元素、内联元素 和 内联块元素。 它们的核心区别在于布局行为和样式控制的支持程度。 块级元素 块级元素(Block Elements)是指在 HTML 中以块…

Easyexcel(1-注解使用)

EasyExcel 是阿里巴巴开源的一个轻量级 Excel 操作框架,专为 Java 开发者设计,支持读取和写入 Excel 文件。它使用注解来简化数据解析和导出工作,特别适用于复杂的 Excel 文件结构和大数据量处理。版本依赖 <dependency><groupId>com.alibaba</groupId>&l…

MES收料批号接口,列名FID无效

原因:主键字段名默认设置了FID,如下图。 解决:将主键字段名修改为实际的主键字段名称即可。

数据处理神器!一款强大的数据处理命令行工具!

dasel —— 一款用于处理和操作多种数据格式的命令行工具,支持对 JSON、YAML、TOML、XML 和 CSV 格式数据进行查询、修改、添加、删除和转换。大家好,我是 Java陈序员。 我们在日常开发中,经常会操作使用一些 JSON、YAML、XML 等格式的数据,对数据进行增删改查和转换操作。…

WEBAPI搜索不到MES收料批号

原因:MES收料批号没有发布菜单 解决:发布菜单后可以正常搜到。

linux 中sed命令删除指定分割符及其最后的一个域

001、[root@PC1 test2]# ls a.txt [root@PC1 test2]# cat a.txt ## 测试数据 W-URI-20 W-HYB-21 aaa fff-ddd-eee ZOM-1 ZOM-9 AWA-A-1 AWA-A-6 [root@PC1 test2]# sed s/-\S[^-]*$// a.txt ## 命令 W-URI W-HYB aaa fff-ddd ZOM ZOM AWA-A AWA-A。

vue+echarts 循环生成多个图表

借鉴网上开源分享 https://blog.csdn.net/weixin_49668076/article/details/114263986<template><!-- 实时数据图表 --><div class="main-container"><el-row class="totalEchart"><el-col :span="8" :key="ind…

智能合约学习笔记-进阶合约FundMe

收集投资 获取ETH/USD兑换rate 复制该地址页面内初始化 精度从这查找(precision) 表格中的 DEC(十进制)列显示了该数据流的精度,即 8。这意味着我们应该执行以下操作:return ethAmount * uint256(getChainlinkDataFeedLatestAnswer()) / (10 ** 8);coin和token 君不见…

Solidity学习笔记--基础语法

定义约定俗成:变量小写开头,类型或合约大写开头基础数据类型booluint256 无符号整型,代表一个不允许负数的整数。int256 有符号整型,代表一个能取到正数和负数的整数。 bytes32stringaddress合约:也可以作为数据类型去使用https://binschool.org/solidity-basic/soli…

solidity学习笔记-工厂模式

为什么使用(js的公共组件)如果要创建同一合约的多个实例,并且正在寻找一种跟踪它们并简化管理的方法。 提高合约安全性 降低部署成本实现(类似js的引入与调用) 君不见,高堂明镜悲白发,朝如青丝暮成雪

Python和Pycharm安装

Python简介 Python是一种计算机程序设计语言,它结合了解释性、编译性、互动性和面向对象的脚本语言,非常简单易用。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。很多著名的网站都是用它编写…

从零开始在Springboot+Vue项目上搭建Nginx服务器,完成静态文件存放到本地电脑上。

一、事情的起因: 写管理系统的时候,数据表中有一个字段被用来存储上传图片的地址。本人在上传图片的时候,采用模拟上传操作,将照片存储到了本地电脑的D盘上。存放在数据表中字段的值为D:/uploads/1741141288982_bd8415d7a452957780e0193a075fedc.png。其中D:/uploads,是本…