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 文档时,应始终在文档的最顶部包含此声明。

Web前端入门第 8 问:HTML <!DOCTYPE> 申明有何用处?如果没有此申明有什么问题?的更多相关文章

  1. web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

    秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...

  2. web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

    http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...

  3. 吐槽一下--最近多次在腾讯以及万科的面试经历---Web前端与PHP后端开发

    前端时间,由于职业发展等,想要换一份工作,于是投递了一些国内还算知名的公司,列如: 腾讯.万科之类的: (1)首先说一下这两家公司的反馈情况: 腾讯:投递到反馈,(初次人事打电话沟通)大约1周,三次不 ...

  4. Web前端3.0时代,“程序猿”如何“渡劫升仙”

    Web前端入行门槛低,很多人在成为前端工程师后很容易进入工作的舒适区,认为该熟悉的业务已熟悉了,然后就是重复用轮子,这样很容易让自己的成长处于原地打转以及低水平重复的状态. 想要不被行业抛弃,就要努力 ...

  5. Web前端新手想提升自身岗位竞争力,需做好这3件事!

    Web前端开发行业的发展前景毋庸置疑,只要是互联网企业,几乎都需要Web前端开发工程师.虽然Web前端入行门槛低,但竞争逐渐激烈,想要取得高薪,就一定要具备强大的实力.那么,在重庆Web前端培训学习中 ...

  6. 转行做web前端,该如何进行短期快速自学,达到高新就业水平

    就目前来说,毕业生如果想毕业就找到高薪的工作,互联网成为了第一个选择,在所有的职业中,不靠任何关系,全凭自己的能力就业,就是程序开发,而web前端开发是目最很热门的行业,在未来五年之内,web前端开发 ...

  7. 百度「Web 前端研发部」面试过程和常见问题 可能会采用哪些方法来面试 STAR 面试法 喜欢什么样的面试者 喜欢问的问题

    http://segmentfault.com/a/1190000002498800 在他们的github上看到的,收藏一下备用.看完觉得还有很多要努力的地方. FEX 的面试过程 我们一般会有 3 ...

  8. 想转行做程序员,目前想学WEB前端,想问该自学还是报培训班

    首先我们还是先看一下WEB前端目前的工资情况吧,我在IT招聘网站拉勾网来进行搜索1-3年WEB前端工作经验大专学历的条件来看. 深圳: 可以看出目前深圳的平均的工资都在10K以上,因为大城市给的机会多 ...

  9. 想要入行web前端要知道web前端的的基本工作职责

    入一行,要先知一行 ”:我们来看看web前端开发职位 无论什么门派都要做到的一些基本工作职责 首先,你必须是一个合格的“页面仔”,这个叫法不好听,但很生动: 我们都知道,所有呈现的内容都是基于HTML ...

  10. web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万!

    前端学习路径 1.WEB前端快速入门 在本阶段,我们需要掌握 HTML 与 CSS 基础,当然,也包含 H5 和 C3 的新特性.这个部分内容非常简单,而且非常容易掌握.相信你也更愿意学习这个部分,毕 ...

随机推荐

  1. Linux新用户登录时出现“-bash-4.2$”的解决办法

    Linux服务器新建的用户在登录时显示"-bash-4.2$",而不是"user@hostname"的显示方式,出现此问题的原因是在添加普通用户时,用户家目录下 ...

  2. Qt编写视频监控管理平台(支持海康/大华/宇视/华为/天地伟业/H264/H265等)

    一.前言 海康大华等厂家自己的客户端软件,基本上都是支持自家的设备,不支持其他家的摄像机和硬盘录像机,并不是因为技术上做不到,这些大厂要实现支持兼容其他的家的(他们家的服务端或者收费的都是支持其他家的 ...

  3. Qt通用方法及类库7

    函数名 //int转字节数组 static QByteArray intToByte(int i); static QByteArray intToByteRec(int i); //字节数组转int ...

  4. Qt开源作品9-扁平化样式flatui

    一.前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产生的质感色彩反 ...

  5. [转]OpenCV_Find Basis F-Matrix and computeCorrespondEpilines(获取一对图像的基础矩阵及对应极线)

    代码如下: // BasisMatrixCalculate.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <ios ...

  6. UML之发现用例

    用例是最简单的UML元素,用例图是最简单的UML图,但它也可能是UML中最有用的元素之一.尽管我们用包将工作分解为工作包.团队任务或单项任务,也就是说包是组织UML中的各种图及元素的工具.但是用例图可 ...

  7. 【Java并发编程线程池】 ForkJoinPool 线程池是什么 怎么工作的 和传统的ThreadPoolExecutor比较

    Java 中的 ForkJoinPool 线程池是什么 怎么工作的 Java 中的 ForkJoinPool 线程池是什么 怎么工作的 相比较于传统的线程池,ForkJoinPool 线程池更适合处理 ...

  8. 第三章 (Nginx+Lua)Redis/SSDB安装与使用

    目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set.list.map等,可以实现很多复杂的功能:但是Redis本身主要用作内存缓 ...

  9. 手撸原生js放大镜效果

    普及知识:放大镜特效涉及到的几个值 offsetWidth    获取元素的宽度offsetHeight  获取元素的高度offsetLeft父元素没有定位时,获取元素距离页面的左边距,父元素有定位时 ...

  10. 自定义快捷命令程序(VC++加批处理)

    一 概述 在看<从小工到专家-程序员修炼之道>时,看到建议使用Shell,很有感触.在很多时候,通过键盘操作,比鼠标的确会块很多,如果能用好shell命令(或批处理命令)   ,的确能节省 ...