1.HTML5和HTML4有什么不同

声明方面

  1. HTML5 文件类型声明(<!DOCTYPE>)变成下面的形式:

    1. <!DOCTYPE html>

    标准方面

  2. HTML5的文档解析不再基于SGML(Standard Generalized Markup Language)标准,而是形成了自己的一套标准。

标签方面

  1. 新增语义标签,其中包括

    1. <header><footer><section><article><nav><hgroup><aside><figure>
  2. 废除一些网页美化方面的标签,使样式与结构分离更加彻底, 包括

    1. <big><u><font><basefont><center><s><tt>
  3. 通过增加了<audio>、<video>两个标签来实现对多媒体中的音频、视频使用的支持。

属性方面

  1. 增加了一些表单属性, 主要是其中的input属性的增强

    1. <!-- 此类型要求输入格式正确的email地址 -->
    2. <input type=email >
    3. <!-- 要求输入格式正确的URL地址 -->
    4. <input type=url >
    5. <!-- 要求输入格式数字,默认会有上下两个按钮 -->
    6. <input type=number >
    7. <!-- 时间系列,但目前只有 Opera和Chrome支持 -->
    8. <input type=date >
    9. <input type=time >
    10. <input type=datetime >
    11. <input type=datetime-local >
    12. <input type=month >
    13. <input type=week >
    14. <!-- 默认占位文字 -->
    15. <input type=text placeholder="your message" >
    16. <!-- 默认聚焦属性 -->
    17. <input type=text autofacus="true" >
  2. 其他标签新增了一些属性,

    1. <!-- meta标签增加charset属性 -->
    2. <meta charset="utf-8">
    3. <!-- script标签增加async属性 -->
    4. <script async></script>
  3. 使部分属性名默认具有boolean属性

    1. <!-- 只写属性名默认为true -->
    2. <input type="checkbox" checked/>
    3. <!-- 属性名="属性名"也为true -->
    4. <input type="checkbox" checked="checked"/>

    存储方面

  4. 新增WebStorage, 包括localStorage和sessionStorage

  5. 引入了IndexedDB和Web SQL,允许在浏览器端创建数据库表并存储数据, 两者的区别在于IndexedDB更像是一个NoSQL数据库,而WebSQL更像是关系型数据库。W3C已经不再支持WebSQL。
  6. 引入了应用程序缓存器(application cache),可对web进行缓存,在没有网络的情况下使用,通过创建cache manifest文件,创建应用缓存,为PWA(Progressive Web App)提供了底层的技术支持。

总结
对于HTML5与HTML4的区别,这些基本的概念是要有印象的,也许现在还比较粗略,但后面会一步步追问细节,慢慢深入,达到知其然也其所以然的效果。

2.meta标签有哪些属性

简介: 常用于定义页面的说明,关键 字,最后修改日期,和其它的元数据。这些元数据将服务于浏览器(如何布局或重载页 面),搜索引擎和其它网络服务。

2.1 charset属性

  1. <!-- 定义网页文档的字符集 -->
  2. <meta charset="utf-8" />

2.2 name + content属性

  1. <!-- 网页作者 -->
  2. <meta name="author" content="开源技术团队"/>
  3. <!-- 网页地址 -->
  4. <meta name="website" content="https://sanyuan0704.github.io/frontend_daily_question/"/>
  5. <!-- 网页版权信息 -->
  6. <meta name="copyright" content="2018-2019 demo.com"/>
  7. <!-- 网页关键字, 用于SEO -->
  8. <meta name="keywords" content="meta,html"/>
  9. <!-- 网页描述 -->
  10. <meta name="description" content="网页描述"/>
  11. <!-- 搜索引擎索引方式,一般为all,不用深究 -->
  12. <meta name="robots" content="all" />
  13. <!-- 移动端常用视口设置 -->
  14. <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0, user-scalable=no"/>
  15. <!--
  16. viewport参数详解:
  17. width:宽度(数值 / device-width)(默认为980 像素)
  18. height:高度(数值 / device-height)
  19. initial-scale:初始的缩放比例 (范围从>0 到10)
  20. minimum-scale:允许用户缩放到的最小比例
  21. maximum-scale:允许用户缩放到的最大比例
  22. user-scalable:用户是否可以手动缩 (no,yes)
  23. -->

2.3 http-equiv属性

  1. <!-- expires指定网页的过期时间。一旦网页过期,必须从服务器上下载。 -->
  2. <meta http-equiv="expires" content="Fri, 12 Jan 2020 18:18:18 GMT"/>
  3. <!-- 等待一定的时间刷新或跳转到其他url。下面1表示1秒 -->
  4. <meta http-equiv="refresh" content="1; url=https://www.baidu.com"/>
  5. <!-- 禁止浏览器从本地缓存中读取网页,即浏览器一旦离开网页在无法连接网络的情况下就无法访问到页面。 -->
  6. <meta http-equiv="pragma" content="no-cache"/>
  7. <!-- 也是设置cookie的一种方式,并且可以指定过期时间 -->
  8. <meta http-equiv="set-cookie" content="name=value expires=Fri, 12 Jan 2001 18:18:18 GMT,path=/"/>
  9. <!-- 使用浏览器版本 -->
  10. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  11. <!-- 针对WebApp全屏模式,隐藏状态栏/设置状态栏颜色,content的值为default | black | black-translucent -->
  12. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

3.src和href的区别是什么

3.1 定义

href是Hypertext Reference的简写,表示超文本引用,指向网络资源所在位置。
常见场景:

  1. <a href="http://www.baidu.com"></a>
  2. <link type="text/css" rel="stylesheet" href="common.css">

src是source的简写,目的是要把文件下载到html页面中去。
常见场景:

  1. <img src="img/girl.jpg"></img>
  2. <iframe src="top.html">
  3. <script src="show.js">

3.2 作用结果

  1. href 用于在当前文档和引用资源之间确立联系
  2. src 用于替换当前内容

    3.3 浏览器解析方式

  3. 当浏览器遇到href会并行下载资源并且不会停止对当前文档的处理。(同时也是为什么建议使用 link 方式加载 CSS,而不是使用 @import 方式)

  4. 当浏览器解析到src ,会暂停其他资源的下载和处理,直到将该资源加载或执行完毕。(这也是script标签为什么放在底部而不是头部的原因)

    3.4 解析

  • href
    href 标识超文本引用,用在 link 和 a 等元素上,href 是引用和页面关联,是在当前元素和引用资源之间建立联系
    若在文档中添加 href ,浏览器会识别该文档为 CSS 文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用 link 方式加载 CSS,而不是使用 @import 方式。

  • src
    src 表示引用资源,替换当前元素,用在 img,script,iframe 上,src 是页面内容不可缺少的一部分。
    当浏览器解析到 src ,会暂停其他资源的下载和处理(图片不会暂停其他资源下载和处理),直到将该资源加载、编译、执行完毕,图片和框架等也如此,类似于将所指向资源应用到当前内容。这也是为什么建议把 js 脚本放在底部而不是头部的原因。

4.script标签中defer和async的区别是什么

默认情况下,脚本的下载和执行将会按照文档的先后顺序同步进行。当脚本下载和执行的时候,文档解析就会被阻塞,在脚本下载和执行完成之后文档才能往下继续进行解析。

下面是async和defer两者区别:

  • 当script中有defer属性时,脚本的加载过程和文档加载是异步发生的,等到文档解析完(DOMContentLoaded事件发生)脚本才开始执行。
  • 当script有async属性时,脚本的加载过程和文档加载也是异步发生的。但脚本下载完成后会停止HTML解析,执行脚本,脚本解析完继续HTML解析。
  • 当script同时有async和defer属性时,执行效果和async一致。

5.对HTML语义化的理解

用正确的标签做正确的事情。
②html 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式 CSS 情况下也以一种文档格式显示,并且是容易阅读的;
③ 搜索引擎的爬虫也依赖于 HTML 标记来确定上下文和各个关键字的权重,利于 SEO;
④ 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解

6.iframe框架有哪些优缺点

优点:

  • iframe 能够原封不动的把嵌入的网页展现出来。
  • 如果有多个网页引用 iframe,那么你只需要修改 iframe 的内容,就可以实现调用的每一个页面内容的更改,方便快捷。
  • 网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用 iframe 来嵌套,可以增加代码的可重用。
  • 如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由 iframe 来解决。

缺点:

  • 框架结构中出现各种滚动条
  • iframe 会阻塞主页面的 Onload 事件
  • 搜索引擎的检索程序无法解读这种页面,不利于 SEO
  • iframe 和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。

7.DOCTYPE 的作用是什么?

进行文档解析,否则就以兼容模式进行解析。在标准模式下,浏览器的解析规则都是按照最新的标准进行解析的。而在兼容模式下,浏
览器会以向后兼容的方式来模拟老式浏览器的行为,以保证一些老的网站的正确访问。

在 html5 之后不再需要指定 DTD 文档,因为 html5 以前的 html 文档都是基于 SGML 的,所以需要通过指定 DTD 来定义文
档中允许的属性以及一些规则。而 html5 不再基于 SGML 了,所以不再需要使用 DTD。

8.标准模式与兼容模式各有什么区别?

标准模式的渲染方式和 JS 引擎的解析方式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

9.HTML5 为什么只需要写 <!DOCTYPE HTML>,而不需要引入 DTD?

HTML5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 DOCTYPE 来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。
而 HTML4.01 基于 SGML ,所以需要对 DTD 进行引用,才能告知浏览器文档所使用的文档类型。

10.SGML 、 HTML 、XML 和 XHTML 的区别?

SGML 是标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源。

HTML 是超文本标记语言,主要是用于规定怎么显示网页。

XML 是可扩展标记语言是未来网页语言的发展方向,XML 和 HTML 的最大区别就在于 XML 的标签是可以自己创建的,数量无限多,而 HTML 的标签都是固定的而且数量有限。
XHTML** 也是现在基本上所有网页都在用的标记语言,他其实和 HTML 没什么本质的区别,标签都一样,用法也都一样,就是比 HTML 更严格,比如标签必须都用小写,标签都必须有闭合标签等。

11.DTD

DTD( Document Type Definition 文档类型定义)是一组机器可读的规则,它们定义 XML 或 HTML 的特定版本中所有允许元素及它们的属性和层次关系的定义。在解析网页时,浏览器将使用这些规则检查页面的有效性并且采取相应的措施。

DTD 是对 HTML 文档的声明,还会影响浏览器的渲染模式(工作模式)。

12.行内元素与块级元素的区别?

HTML4中,元素被分成两大类:inline (内联元素)与 block (块级元素)。
(1) 格式上,默认情况下,行内元素不会以新行开始,而块级元素会新起一行。
(2) 内容上,默认情况下,行内元素只能包含文本和其他行内元素。而块级元素可以包含行内元素和其他块级元素。
(3) 行内元素与块级元素属性的不同,主要是盒模型属性上:行内元素设置 width 无效,height 无效(可以设置 line-height),设置 margin 和 padding 的上下不会对其他元素产生影响。

13.HTML5 元素的分类

HTML4中,元素被分成两大类: inline(内联元素)与 block(块级元素)。但在实际的开发过程中,因为页面表现的需要,前端工程师经常把 inline 元素的 display 值设定为 block (比如 a 标签),也经常把 block 元素的 display 值设定为inline 之后更是出现了 inline-block 这一对外呈现 inline 对内呈现 block 的属性。因此,简单地把 HTML 元素划分为inline 与 block 已经不再符合实际需求。

HTML5中,元素主要分为7类:Metadata Flow Sectioning Heading Phrasing Embedded Interactive

14.空元素定义

标签内没有内容的 HTML 标签被称为空元素。空元素是在开始标签中关闭的。
常见的空元素有:br hr img input link meta

15.link 标签定义

link 标签定义文档与外部资源的关系。
link 元素是空元素,它仅包含属性。 此元素只能存在于 head 部分,不过它可出现任何次数。
link 标签中的 rel 属性定义了当前文档与被链接文档之间的关系。常见的 stylesheet 指的是定义一个外部加载的样式表。

16.HTML5的新特征

16.1 语义化标签

对比之前HTML没有体现结构语义化的标签,如:

//表头的声明

HTML5提供语义化标签,如: