前端面试知识点大全——HTML篇

总纲:前端面试知识点大全

目录

1.DOCTYPE(文档类型)的作用是什么?

2.DOCTYPE(文档类型)有哪些?

3.XHTML和HTML的区别

4.浏览器标准模式 (standards mode) 、几乎标准模式(almost standards mode)和怪异模式 (quirks mode) 之间的区别是什么?

4.1 产生的历史原因

4.2 怪异模式有哪些怪异的行为

5.使用 data- 属性的好处是什么?

6.cookies、sessionStorage 和localStorage 的区别

6.1 cookie的几种常见属性

6.2 cookie的保存方式

6.3 cookie提交

6.4 本地存储的使用

7.请解释 script的特性,以及async和defer的区别。

8.为什么通常推荐将 CSS 的link标签放置在head标签之间,而将script标签放置在 body闭合标签之前?你知道有哪些例外吗?

9.什么是渐进式渲染 (progressive rendering)?

10.HMTL5新标签

11.标签

12.条件注释

12.1 常用注释

12.2 条件注释

13.src和href的区别

13.1 src 

13.2 href 


1.DOCTYPE(文档类型)的作用是什么?

参考https://witcher42.github.io/2014/05/28/doctype/

用于激活浏览器的渲染模式

2.DOCTYPE(文档类型)有哪些?

1. 该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。

2. HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。

3. XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。

4. Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而 Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。

到了HTML5,因为不是用的SGML(标准通用标记语言),而是HTML5标准,所以只需要<! DOCTYPE html>

3.XHTML和HTML的区别

XHTML比HTML更加严格.

1)标签必须闭合

2)标签名必须小写

3)标签元素必须正确嵌套

4)必须要有根元素

4.浏览器标准模式 (standards mode) 、几乎标准模式(almost standards mode)和怪异模式 (quirks mode) 之间的区别是什么?

标准模式是基于W3C标准的解析渲染;怪异模式(混杂模式)是基于各个浏览器自身的标准进行解析渲染,所以存在不同,显得怪异。

4.1 产生的历史原因

答案:由于早先各个厂商未按照W3C标准进行浏览器的渲染设置,导致各个浏览器的解析渲染方式不同,后面W3C进行统一,于是浏览器开始实现两套解析渲染方式,一套是W3C标准,一套是坚持自己本来的。

4.2 怪异模式有哪些怪异的行为

1)最主要的比如IE与W3C的盒子模型不同(也就是目前浏览器兼容的问题);

2)可以设置行内元素的高宽,在Standards模式下,给span等行内元素设置wdith和height都不会生效,而在quirks模式下,则会生效。

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

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

5)quirk模式下设置图片的padding会失效

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

7)quirk模式下white-space:pre会失效

 

5.使用 data- 属性的好处是什么?

data-*是为前端开发者提供自定义的属性,这些属性集可以通过对象的dataset属性获取,不支持该属性的浏览器可以通过 getAttribute方法获取。

PS:需要注意的是,data-之后的以连字符分割的多个单词组成的属性,获取的时候使用驼峰风格

例子:<div id="myID" data-my-attr = “test”></div>,获取属性值

使用dataset,getElementById("myID").dataset.myAttr

使用getAttribute方法,getElementById("myID").getAttribute('data-my-attr')

6.cookies、sessionStorage 和localStorage 的区别

这一部分,我之前有单独发一篇博客。

可以参考我的个人博客:https://blog.csdn.net/sinat_36521655/article/details/79992155

6.1 cookie的几种常见属性

key=value;

expires=失效时间;

path=路径;

domain=域名;

secure=true or false true表示只有https才会传输这个cookie

httponly=true or false true表示JS不能通过document.cookie访问,只能http使用cookie

6.2 cookie的保存方式

cookie以字符串的形式保存在浏览器中。

document.cookie即可访问本地cookie。

Cookie的作用域。Cookie有两个很重要的属性:Domain和Path,用来指示此Cookie的作用域:

1、Domain告诉浏览器当前要添加的Cookie的域名归属,如果没有明确指明则默认为当前域名,比如通过访问www.vinceruan.info添加的Cookie的域名默认就是www.vinceruan.info,通过访问blog.vinceruan.info所生成的Cookie的域名就是blog.vinceruan.info

2、Path告诉浏览器当前要添加的Cookie的路径归属,如果没有明确指明则默认为当前路径,比如通过访问www.vinceruan.info/java/hotspot.html添加的Cookie的默认路径就是/java/,通过blog.vinceruan.info/java/hotspot.html生成的Cookie的路径也是/java/

6.3 cookie提交

浏览器提交的Cookie需要满足以下两点:

1.当前域名或者父域名下的Cookie;

2.当前路径或父路径下的Cookie

6.4 本地存储的使用

window.localStorage和window.sessionStorage读取本地Storage

document.cookie访问本地cookie

7.请解释 script的特性,以及async和defer的区别。

 

这一部分,我之前有单独发一篇博客。

可以参考我的个人博客:https://blog.csdn.net/sinat_36521655/article/details/80059594

8.为什么通常推荐将 CSS 的link标签放置在head标签之间,而将script标签放置在 body闭合标签之前?你知道有哪些例外吗?

<link>放置在<head></head>是因为浏览器要先渲染页面呈现给用户,在渲染时需要构建dom树(html标签内容)和render渲染树(css样式),这样才能完整呈现,所以推荐放在头部,优先加载。而JS脚本文件比较大,且一般是后期JS引擎运行,渲染引擎会将控制权交给JS引擎而停止渲染,如果JS文件较大,会导致长时间白屏,影响用户体验,所以才会有JS<script>放在</body>之前。或者上一个问题中提到的优化加载的方式。

9.什么是渐进式渲染 (progressive rendering)?

页面第一次呈现速度稍快. 第一次只加载一个页面, 以及第一个页面所需要的文件,速度很快.但是每一次加载的速度基本相同的. 可用缓存进行优化 用户在网站中,停留时时间较长,点击较多时, 就会体现出劣势.

类似于懒加载,一开始先加载首屏显示的内容,之后再随着时间或者滚动页面才进行后面的加载

10.HMTL5新标签

东西其实挺多的,这里只是罗列一部分,每个部分都需要自行了解。

1)新的特殊内容元素,比如 article、footer、header、nav、section

2)新的表单控件,比如 calendar、date、time、email、url、search

3)用于媒介回放的 video 和 audio 元素

4)用于绘画的 canvas 元素

5)对本地离线存储的更好的支持

6)浏览器异步的webWorker

11.<meta>标签

元数据(Metadata)是数据的数据信息。

<meta> 标签提供了 HTML 文档的元数据。元数据不会显示在客户端,但是会被浏览器解析。

META元素通常用于指定网页的描述,关键词,文件的最后修改时间,作者及其他元数据。

元数据可以被使用浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 Web 服务调用。

注意点:

1、<meta> 标签通常位于 <head> 区域内。

2、元数据通常以 名称/值 对出现。

3、如果没有提供 name 属性,那么名称/值对中的名称会采用 http-equiv 属性的值。

可以参考菜鸟教程:http://www.runoob.com/tags/tag-meta.html

12.条件注释

12.1 常用注释

<!--xxx -->

12.2 条件注释

1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->

2. <!--[if IE]> 所有的IE可识别 <![endif]-->

3. <!--[if IE 5.0]> 只有IE5.0可以识别 <![endif]-->

4. <!--[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]-->

5. <!--[if gt IE 5.0]> IE5.0以及IE5.0以上版本都可以识别 <![endif]-->

6. <!--[if IE 6]> 仅IE6可识别 <![endif]-->

7. <!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->

8. <!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->

9. <!--[if IE 7]> 仅IE7可识别 <![endif]-->

10. <!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->

11. <!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->

13.src和href的区别

13.1 src 

source的简写,表示“源”,可以理解为【引用一个资源】,它用来代替自己本身的内容。如img、script、iframe。它们如果不写src,那么本身没有内容,script会不存在脚本代码,img会显示x,iframe会显示空白页。例如<script type="text/javascript" src="b.js">alert(1)</script>,b.js:alert(2); 标准的浏览器里会显示2,因为本身的内容已经被替代了;另一方面,当浏览器解析到这一句的时候会暂停其他资源的下载和处理,直至将该资源加载,编译,执行完毕,图片和框架等元素也是如此,类似于该元素所指向的资源嵌套如当前标签内,这也是为什么要把js放置在底部而不是头部。

13.2 href 

Hypertext Reference的缩写,表示“超链接”, 目的不是为了引用一个资源,而是为了建立一个“通道”,让当前标签能够链接到目标地址上,并不是为了把目标拉进页面本身内来替换本身的内容,例如a标签的href不会被当做一个资源替换自身,link标签本身并不包含实际的元素意义来做内容,它需要rel明确的表示被【被连接的文档是做什么的】。例如:<link href="head.css" rel="stylesheet"/>,当浏览器解析到这一句的时候会识别该文档为css文件,会下载并且不会停止对当前文档的处理,这也是为什么建议使用link方式来加载css而不是使用@import。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值