废话不多说,直接开始。友情提示:HTML在面试中考查的知识点并不多,记住一些高频的即可,其他的有个大概印象就行,千万不要这里投入太多时间与精力。
1.谈谈你对web标准的理解
WEB标准不是某一个标准,而是一系列标准的集合,网页主要由三部分组成:结构,表现和行为。
结构(Structure): 结构化标准语言主要包括HTML和XHTML以及XML,在页面body里面我们写入的标签都是为了页面的结构。
- HTML:HTML英语意思是:Hypertext Marked Language,即超文本标记语言,使用HTML语言描述的文件,需要通过WWW浏览器显示出效果。是一种最为基础的语言。所谓超文本,因为它可以加入图片、声音、动画、影视等内容,因为它可以从一个文件跳转到另一个文件,与世界各地主机的文件连接。所谓标记,就是它采用了一系列的指令符号来控制输出的效果,这些指令符号用“<标签名字属性>”来表示。
- XHTML:XHTML是The Extensible HyperText Markup Language可扩展标识语言的缩写。XHTML是HTML向XML的一个过渡语言,它比HTML严谨性会高点,然后基本语言都还是沿用的HTML的标签,只不过废除了部分表现层的标签,同时在标准上要求高了点比如标签的严格嵌套,标签结束等等简单的说,建立XHTML的目的就是实现HTML向XML的过渡。
- XML:XML(eXtensible Markup Language)即可扩展标记语言,最初设计的目的是弥补HTML的不足,以强大的扩展性满足网络信息发布的需要,后来逐渐用于网络数据的转换和描述。XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
表现(Presentation): 表现标准语言主要包括CSS(Cascading Style Sheets)层叠式样式表,通过CSS样式表,W3C创建CSS标准的目的是以CSS取代HTML表格式布局、帧和其他表现的语言,通过CSS样式可以是页面的结构标签更具美感。
行为(Behavior): 行为是指页面和用户具有一定的交互,同时页面结构或者表现发生变化,标准主要包括对象模型(如W3C DOM)、ECMAScript并要求这三部分分离。
- DOM是Document Object Model文档对象模型的缩写。DOM是一种与浏览器,平台,语言的接口,使得你可以访问页面其他的标准组件。简单理解,DOM解决了Netscaped的Javascript和Microsoft的Jscript之间的冲突,给予web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对像。
- ECMAScript是ECMA(EuropeanComputer Manufacturers Association)制定的标准脚本语言(JAVAScript)
2.Doctype作用?标准模式与兼容模式各有什么区别
- 声明位于HTML文档中的第一行,处于 html 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
- 标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
3.如果我不放入<! DOCTYPE html> ,HTML5还会工作么
不会,浏览器将不能识别他是HTML文档,同时HTML5的标签将不能正常工作
4.HTML5 为什么只需要写 <!DOCTYPE HTML>
HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
5.meta标签是什么
meta是提供给页面的一些元信息(名称/值对),有助于SEO。它提供的信息虽然对用户不可见,但却是文档的最基本的信息。HTML<meta>除了提供文档字符集、使用语言、作者等基本信息外,还涉及对关键词和网页等级的设定。有以下几个属性值
- name: 名称/值对中的名称。author、description、keywords、generator、revised、others。 把 content 属性关联到一个名称。
- http-equiv: 没有name时,会采用这个属性的值。content-type、expires、refresh、set-cookie。把content属性关联到http头部。
- content : 名称/值对中的值, 可以是任何有效的字符串。 始终要和 name 属性或 http-equiv 属性一起使用。
- scheme : 用于指定要用来翻译属性值的方案
- charset: 设置编码格式,设置成utf-8避免出现中文乱码
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 声明文档使用的字符编码 -->
<meta charset="UTF-8">
<!-- 页面关键词 -->
<meta name="keywords" content="活动管理,会议管理,社群管理">
<!-- 页面描述 -->
<meta name="description" content="我们都可以帮你找到合适的会议地点和参会观众">
<!-- 网页作者 -->
<meta name="author" content="xin1642868874@163.com">
<!-- 禁止Chrome浏览器中自动提示翻译 -->
<meta name="google" value="notranslate">
<!-- 自定义标签:app版本号说明 -->
<meta name="app-version" content="1.12.3">
<!-- 禁止百度转码 -->
<meta http-equiv="Cache-Control" content="no-siteapp">
<!-- 页面重定向和刷新 -->
<meta http-equiv="refresh" content="0; url='b.html'">
<!-- 限定IE浏览器对文档的解析到edge版本 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
6.meta标签中的viewport属性有哪些,分别代表什么?
概念: 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中,也不会破坏没有针对手机浏览器优化的网页的布局,用户可以通过平移和缩放来看网页的不同部分。移动版的 Safari 浏览器最新引进了viewport 这个 meta tag,让网页开发者来控制 viewport 的大小和缩放,其他手机浏览器也基本支持。
属性
- width : 控制viewport的大小,可以指定一个值,如600, 或者特殊的值,如device-width为设备的宽度(单位是缩放为100%的CSS的像素)
- height : 和width相对应,指定高度
- initial-scale : 初始缩放比例,页面第一次加载时的缩放比例
- maximum-scale : 允许用户缩放到的最大比例,范围从0到10.0
- minimum-scale : 允许用户缩放到的最小比例,范围从0到10.0
- user-scalable : 用户是否可以手动缩放,值可以是:①yes、 true允许用户缩放;②no、false不允许用户缩放
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body></body>
</html>
7.行内元素有哪些?块级元素有哪些? 空(void)元素有那些
首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
- 行内元素:
a b span img input select strong(强调的语气) - 块级元素:
div ul ol li dl dt dd h1 h2 h3 h4…p - 常见的空元素:
<br> <hr> <img> <input> <link> <meta> - 少见的空元素:
<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
8.页面导入样式时,使用link和@import有什么区别
- link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
- 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
- import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;
9.html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5
- 新特性: 绘画 canvas;用于媒介回放的 video 和 audio 元素;语意化更好的内容元素,比如 article、footer、header、nav、section;表单控件,calendar、date、time、email、url、search;
- 新技术: webworker, websocket, Geolocation,本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失; sessionStorage 的数据在浏览器关闭后自动删除;
- 移除的元素: basefont,big,center,font, s,strike,tt,u;frame,frameset,noframes;
- 兼容问题解决: IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式。当然也可以直接使用成熟的框架、比如html5shim
10.简述一下你对HTML语义化的理解
- 用正确的标签做正确的事情。
- html语义化让页面的内容结构化,结构更清晰,便于对浏览器,搜索引擎解析;
- 即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;
- 搜索引擎的爬虫也依赖于HTML标记确定上下文和各个关键字的权重,利于SEO;
- 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
11.HTML5的离线储存怎么使用,工作原理能不能解释一下
- 在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。
- 原理: HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。
- 使用: 离线存储使用案例
12.请描述一下 cookies,sessionStorage 和 localStorage 的区别
- 存储位置: cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密),cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
- 存储大小: cookie数据大小不能超过4k。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
- 存储时间: localStorage存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;sessionStorage 数据在当前浏览器窗口关闭后自动删除;cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
- 共同点: 都是保存在浏览器端,且同源的
13.Label的作用是什么?是怎么用的
- 作用: label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。
- 用法:
<label for="Name">Number:</label>
<input type=“text“name="Name" id="Name"/>
<label>Date:<input type="text" name="B"/></label>
14.HTML5的form如何关闭自动完成功能
给不想要提示的 form 或某个 input 设置为 autocomplete=off。
15.如何实现浏览器内多个标签页之间的通信
- WebSocket、SharedWorker;
- 调用localstorge、cookies等本地存储方式;
16.webSocket如何兼容低浏览器
- Adobe Flash Socket ;
- ActiveX HTMLFile (IE) ;
- 基于 multipart 编码发送 XHR;
- 基于长轮询的 XHR。
17.页面可见性(Page Visibility API) 可以有哪些用途
- 通过 visibilityState 的值检测页面当前是否可见,以及打开网页的时间等;
- 在页面被切换到其他后台进程的时候,自动暂停音乐或视频的播放;
18.title与h1的区别、b与strong的区别、i与em的区别
- title属性没有明确意义只表示是个标题,H1则表示层次明确的标题,对页面信息的抓取也有很大的影响;
- strong是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:
<strong>会重读,而<b>是展示强调内容; - i内容展示为斜体,em表示强调的文本。
19.HTML 5标签是否一定需要闭合?标签大小写是否敏感
不一定;不敏感,但是推荐要用小写标签
20.HTML中的DOM树
HTML DOM定义访问和操作HTML文档的标准方法。DOM将HTML文档表达为树结构。
W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。W3C DOM 标准被分为 3 个不同的部分:
- 核心DOM,针对任何结构化文档的标准模型;
- XML DOM,针对XML文档的标准模型;
- HTML DOM,针对HTML文档的标准模型,它是标准对象模型,是标准编程接口;
根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:整个文档是一个文档节点、每个HTML元素是元素节点、HTML元素内的文本是文本节点、每个HTML属性是属性节点、注释是注释节点。
21.XHTML和HTML有什么区别
- HTML是一种基本的web网页设计语言,XHTML是一个基于XML的置标语言;
- XHTML元素必须被正确的嵌套;
- XHTML元素必须被关闭;
- XHTML元素必须使用小写字母;
- XHTML文档必须拥有根元素。
22.canvas和svg图形的区别是什么
SVG
- 是一种使用 XML 描述 2D 图形的语言。
- 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。可以为某个元素附加 JavaScript 事件处理器。
- 在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
- 特点
不依赖分辨率
支持事件处理器
最适合带有大型渲染区域的应用程序(比如谷歌地图)
复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
不适合游戏应用
Canvas
- 通过 JavaScript 来绘制 2D 图形。
- 是逐像素进行渲染的。
- 在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。
- 特点:
依赖分辨率
不支持事件处理器
弱的文本渲染能力
能够以 .png 或 .jpg 格式保存结果图像
最适合图像密集型的游戏,其中的许多对象会被频繁重绘
23.html5哪些标签可以做SEO优化
title、meta、header、footer、nav、article、aside
24.src和href的区别
- src: 是指向外部资源的位置,指向的内容会嵌入到文档中当前标签所在的位置,在请求src资源时会将其指向的资源下载并应用到文档内,如js脚本,img图片和frame等元素。当浏览器解析到该元素时,会暂停其他资源的下载和处理,知道将该资源加载、编译、执行完毕,所以一般js脚本会放在底部而不是头部。
- href: 是指网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
25.script 标签中 defer 和 async 的区别?
- script:会阻碍 HTML 解析,只有下载好并执行完脚本才会继续解析 HTML。
- async script:解析 HTML 过程中进行脚本的异步下载,下载成功立马执行,有可能会阻断 HTML 的解析。
- defer script:完全不会阻碍 HTML 的解析,解析完成之后再按照顺序执行脚本。
26.如何实现浏览器内多个标签页之间的通信?
- 一、调用localstorge
// 页面一
<input id="name">
<input type="button" id="btn" value="提交">
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
var name=$("#name").val();
localStorage.setItem("name", name); //存储需要的信息
});
});
</script>
// 页面二
$(function(){
//使用storage事件监听添加、修改、删除的动作
window.addEventListener("storage", function(event){
console.log(event.key + "=" + event.newValue);
});
});
- 二、使用cookie+setInterval
// 页面一
$(function(){
$("#btn").click(function(){
var name=$("#name").val();
document.cookie="name="+name;
});
});
// 页面二
$(function(){
function getCookie(key) {
return JSON.parse("{\"" + document.cookie.replace(/;\s+/gim,"\",\"").replace(/=/gim, "\":\"") + "\"}")[key];
}
setInterval(function(){
console.log("name=" + getCookie("name"));
}, 10000);
});
27.前端如何优化图片?
- 压缩图片,降低图片大小;
- 将图标图片制作成雪碧图,减少页面图片资源的HTTP请求;
- 选择适当的图片宽度尺寸(即响应式图片);
- 使用SVG技术替换图片;
- 使用字体图库代替图标;
- 图片延迟加载(懒加载),这样能够有效的提高页面加载速度,有时候可以帮助减少服务器负载
28.使用HTML5新标签的好处是什么
- div本身没有实际的意义,它只是定义了一个区域,而且这个区域是什么的浏览器并不知道,不利于页面的SEO优化,而H5的新标签则不同;
- 即使在没有CSS的支持下,浏览器依然能呈现出良好的内容结构;
- 跨设备体验,不同设备都支持语义化标签,那么即使在不同设备下依然可以有无缝体验;
- 便于代码开发和维护,语义化可以增加代码的可读性,让团队成员可以更好理解彼此的代码意图。
- 更多参考
29.谈谈你对web标准以及W3C的理解和认识
标签要闭合,英文小写,且不要嵌套混乱,用标签语义化来提高搜索的概率。使用外链式的CSS和JS脚本,使结构、样式、行为分离,内容能被更广泛的设备访问,代码精简,开发组件化,代码易维护、可复用,改版、升级方便。
30.严格模式和混杂模式如何区分?如何触发这两种模式?
严格模式就是浏览器根据Web标准去解析页面的方法,是一种要求严格的DTD,不允许使用任何表现层的语法;混杂模式是一种向后兼容的解析方法。
触发严格模式或者标准模式很简单,就是在HTML标签前声明正确的DTD;触发混杂模式可以在HTML文档开始时不声明DTD,或者在DOCTYPE前加入XML声明。
31.锚点的作用是什么?如何创建锚点?
锚点是文档中某行的一个记号,类似于标签,用于链接到文档中的某个位置。
<a href="#a">到达a</a>
<a href="#b">到达b</a>
<h1 id="a">这里是a</h1>
<a name="b">这里是b</a>
32.超级链接有哪些常见的表现形式?
- 普通超级链接
- 下载链接
- 电子邮件链接
- 联系我们链接
- 空链接
- 锚点链接
- 用于实现特定的代码功能:
<a href="javascript:void(0)">特定</a>
33.div是什么?在div出现之前用什么做网站布局?
div是网站布局的盒子标签。div出现之前使用table布局。因为table布局嵌套很多,网站加载慢(table无法局部渲染),布局层级不清晰。
34.img标签上的title和alt属性的区别是什么?
title是为元素提供标题信息,即当光标悬浮在标签上后显示的信息;alt的功能是图片的替换文案,即当图片不能正常显示时(如加载失败),用文字替代。
35.iframe有那些优点和缺点
优点:
- 可以解决加载缓慢的第三方内容,如图标和广告等的加载问题
- 可以实现安全沙箱
- 可以并行加载脚本
缺点:
- iframe会阻塞主页面的Onload事件;
- 搜索引擎的检索程序无法解读这种页面,不利于SEO;
- iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
- iframe的内容即使为空,加载它也需要时间
- iframe元素没有语义
【拓展】
如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题。