Web前端入门第 8 问:HTML <!DOCTYPE> 申明有何用处?如果没有此申明有什么问题?
HELLO,这里是大熊学习前端开发的入门笔记。
本系列笔记基于 windows 系统。
先电脑端浏览器打开任何一个网页,比如百度。
再用 ctrl + u 快捷键即可查看源码,瞅瞅第一行代码,是不是都是 <!DOCTYPE xxx> 开头。
是否好奇这这行代码有嘛用?
DOCTYPE 语法规则
声明必须是 HTML 文档的第一行,位于 `` 标签之前。
声明不是 HTML 标签,它告诉 web 浏览器使用哪个 HTML 版本进行代码解析。
作用
规范模式触发
声明 doctype 后,浏览器会以标准模式(Standards Mode)渲染页面,确保按照 W3C/WHATWG 规范解析 HTML/CSS。声明 HTML 版本
明确文档类型(如HTML4/XHTML/HTML5),指导浏览器按对应规则处理文档。避免浏览器兼容性问题
未声明时,浏览器可能退化为怪异模式(Quirks Mode),模仿旧浏览器(如IE5)的非标准渲染行为,导致布局错乱。
未声明 <!DOCTYPE> 的问题
渲染不一致
浏览器可能会进入怪异模式,导致页面在不同浏览器上的表现不一致。这可能导致布局错乱、字体大小变化、边距和填充不一致等问题。跨浏览器不一致
不同浏览器对怪异模式的实现差异较大,页面可能在不同浏览器中表现迥异。新特性支持受限
部分 HTML5/CSS3 功能可能依赖标准模式才能生效。搜索引擎优化(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 文档时,应始终在文档的最顶部包含此声明。
Web前端入门第 8 问:HTML <!DOCTYPE> 申明有何用处?如果没有此申明有什么问题?的更多相关文章
- web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史
秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...
- web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】
http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...
- 吐槽一下--最近多次在腾讯以及万科的面试经历---Web前端与PHP后端开发
前端时间,由于职业发展等,想要换一份工作,于是投递了一些国内还算知名的公司,列如: 腾讯.万科之类的: (1)首先说一下这两家公司的反馈情况: 腾讯:投递到反馈,(初次人事打电话沟通)大约1周,三次不 ...
- Web前端3.0时代,“程序猿”如何“渡劫升仙”
Web前端入行门槛低,很多人在成为前端工程师后很容易进入工作的舒适区,认为该熟悉的业务已熟悉了,然后就是重复用轮子,这样很容易让自己的成长处于原地打转以及低水平重复的状态. 想要不被行业抛弃,就要努力 ...
- Web前端新手想提升自身岗位竞争力,需做好这3件事!
Web前端开发行业的发展前景毋庸置疑,只要是互联网企业,几乎都需要Web前端开发工程师.虽然Web前端入行门槛低,但竞争逐渐激烈,想要取得高薪,就一定要具备强大的实力.那么,在重庆Web前端培训学习中 ...
- 转行做web前端,该如何进行短期快速自学,达到高新就业水平
就目前来说,毕业生如果想毕业就找到高薪的工作,互联网成为了第一个选择,在所有的职业中,不靠任何关系,全凭自己的能力就业,就是程序开发,而web前端开发是目最很热门的行业,在未来五年之内,web前端开发 ...
- 百度「Web 前端研发部」面试过程和常见问题 可能会采用哪些方法来面试 STAR 面试法 喜欢什么样的面试者 喜欢问的问题
http://segmentfault.com/a/1190000002498800 在他们的github上看到的,收藏一下备用.看完觉得还有很多要努力的地方. FEX 的面试过程 我们一般会有 3 ...
- 想转行做程序员,目前想学WEB前端,想问该自学还是报培训班
首先我们还是先看一下WEB前端目前的工资情况吧,我在IT招聘网站拉勾网来进行搜索1-3年WEB前端工作经验大专学历的条件来看. 深圳: 可以看出目前深圳的平均的工资都在10K以上,因为大城市给的机会多 ...
- 想要入行web前端要知道web前端的的基本工作职责
入一行,要先知一行 ”:我们来看看web前端开发职位 无论什么门派都要做到的一些基本工作职责 首先,你必须是一个合格的“页面仔”,这个叫法不好听,但很生动: 我们都知道,所有呈现的内容都是基于HTML ...
- web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万!
前端学习路径 1.WEB前端快速入门 在本阶段,我们需要掌握 HTML 与 CSS 基础,当然,也包含 H5 和 C3 的新特性.这个部分内容非常简单,而且非常容易掌握.相信你也更愿意学习这个部分,毕 ...
随机推荐
- nginx jupyterWeb
location /jupyterWeb/ { add_header X-Frame-Options SAMEORIGIN; add_header Access-Control-Allow-Origi ...
- vertx 获取请求参数
表单登录(GET) <form action="/login"> <input type="text" name="user ...
- Qt编写安防视频监控系统33-onvif云台控制
一.前言 云台控制也是onvif功能中最常用的,最常用的功能排第一的是拿到视频流地址,排第二的就是云台控制了,云台控制的含义就是对带云台的摄像机进行上下左右的移动,一般云台摄像机都是带有一个小电机,一 ...
- _findnext()调试中断,发生访问错误,错误定位到ntdll.dll
问题: 采用_findfirst和_findnext获取指定的文件夹下的文件时,_findnext()函数在调试时发生中断,发生访问错误,错误定位到ntdll.dll.错误提示如下所示: _findn ...
- 《Spring MVC+MyBatis快速开发与项目实战》-黄文毅2019:一书的源码和配套视频下载地址
<Spring MVC+MyBatis快速开发与项目实战>-黄文毅2019:一书的源码下载地址: http://github.com/huangwenyi10/springmvc-myba ...
- [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(01):为窗口设置布局(column、row)
前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发. iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动. 本合集是基于新版本的关于分 ...
- 深入解析 Spring AI 系列:以OpenAI与Moonshot案例为例寻找共同点
今天,我们将重点探讨对接的业务逻辑.为了帮助大家更直观地掌握其中的规律性,我将通过对比OpenAI与<月之暗面>中的Moonshot两个案例来阐述这一点.通过这样的对比,大家可以更清晰地看 ...
- CSS JS 自适应菜单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 第五章 dubbo源码解析目录
第十章 dubbo线程模型 一 netty的线程模型 在netty中存在两种线程:boss线程和worker线程. 1 boss线程 作用: accept客户端的连接: 将接收到的连接注册到一个wor ...
- w3cschool-微信小程序开发文档-API
https://www.w3cschool.cn/weixinapp/weixinapp-network-request.html 微信小程序API 发起请求 发起 HTTPS 网络请求.使用前请注意 ...