HTML篇
1.什么是DOCTYPE
,有何作用?
DOCTYPE
是用来声明HTML
文档应当使用哪种版本来进行解析- 如果不使用
DOCTYPE
告知浏览器应当使用哪种版本解析文档,那么浏览器将会开启最大兼容模式来解析文档,一般称为怪异模式.在怪异模式下,可能会产生一些预想不到的bug
2.说说对HTML
语义化的理解?
HTML
的语义化指的是在合适的地方使用合适的标签,让人能够根据标签进而大致知晓标签内容- 语义化使得在没有
CSS
的情况下也能够展现出清晰的结构 - 语义化有利于
SEO
,与搜索引擎建立良好的沟通 - 有利于爬虫抓取更多的有效信息
- 方便团队的开发与维护,减少差异化
3.标签属性src
与href
有什么区别?
- 两者都用于指向一个外部资源链接
src
属性指向的外部资源会下载到本地并嵌入到当前位置,当浏览器解析到该元素时,会暂停其他资源的下载,知道该资源被执行完毕
- 常用于
img
,script
,video
,audio
等元素中
href
用来指向一个外部链接,当浏览器识别到该属性时,会并行下载该资源,不会停止对当前文件的处理
4.title
与h1
,b
与strong
,i
与em
元素分别有什么区别?
title
元素是head
元素中一个必不可少的元素,用来指定当前页面的标题h1
元素是一级标题b
元素会实现一个加粗效果strong
元素也会实现一个加粗效果,但是在使用语音朗读时会重读i
元素会实现一个倾斜效果em
元素也会实现一个倾斜效果,有强调效果
5.什么是严格模式与混杂模式?
- 严格模式指的是以浏览器支持的最高标准运行(
W3C
标准) - 混杂模式指的是浏览器以向下兼容的方式显示内容,模拟老式浏览器的行为
- 严格模式,直接书写正确的
DOCTYPE
,不声明或者声明不完整的DOCTYPE
页面会转换为怪异模式
6.前端页面由哪三层构成?
- 分别由
html
,css
与js
构成 html
结构层
css
表示层
js
行为层
7.ifram
的作用以及优缺点?
iframe
被称为嵌入式框架,可以实现在html
页面中嵌套html
页面- 优点
- 缺点
- 会阻塞主页的
onload
事件 - 产生较多页面,不利于管理
- 浏览器的导航按钮无法实现效果
- 无法被搜索引擎识别
8.img
元素中的title
与alt
属性有什么作用?
title
属性用来实现当用户的鼠标悬停在图片上时显示的额外信息alt
属性用来实现当图片加载失败时,在原图片位置处预留的文本描述信息
9.H5
与HTML5
的区别是什么?
H5
是一个统称,一个产品名词,包含了HTML5
,CSS3
与ES6
等新技术HTML5
是一个技术名词,指第五代HTML
技术
10.行内元素与块级元素有哪些?有什么区别?如何转换?
- 行内元素指的是元素默认排列在同一行,设置元素的
width
与height
属性无效,只能够设置padding-left/right
或margin-left/right
,可以设置line-height
,只能嵌套行内元素
a
,b
,em
,i
,span
,strong
,sub
,sup
等
- 块级元素指的是元素默认占据一整行,多个元素从上至下依次排列,可以设置元素的
width
与height
属性,并且也可以设置元素的内外边距,块级元素中可以嵌套块级元素或行内元素
h1
~h6
,div
,p
,ul
,ol
,li
,form
,table
,textarea
等
- 使用
display
属性可以实现元素类型的转换
block
转换为块级元素inline
转换为行内元素inline-block
转换为行内块元素
11.label
的作用是什么?如何使用?
label
标签用来为提高用户的操作体验- 通常在表单元素中使用,绑定
input
元素,利用label
标签的for
属性绑定input
标签的id
属性,在label
元素中使用文字描述,当用户点击文字时,光标会自动聚焦到绑定的input
元素中
12.对于Web
标准以及W3C
的理解?
Web
标准是一套规范,用来约定Web
中的各项内容,是一套用来构建高质量,可持续与可访问Web
内容的基础- 简单来说可以分为结构,表现与行为三个标准
- 结构标准约定
HTML
的标签规范 - 表现标准约定
CSS
的样式规范 - 行为标准约定
JS
的操作逻辑
W3C
是一个国际性的非盈利组织,用来制定各类标准,制定标准之后可以:
- 降低学习成本,降低代码的维护成本
- 共用统一的开发流程与工具
- 方便跨平台进行迁移
13.怪异模式是什么意思?它与标准模式有什么区别?
- 怪异模式指的是在编写
html
代码时,没有写DTD
,浏览器将会按照最大兼容模式进行页面渲染 - 常见区别
- 在怪异模式下,设置元素的
width
与height
会包含padding
与border
- 在怪异模式下,设置行内元素的
width
与height
会生效 - 在怪异模式下,设置元素的样式
margin:0 auto
的居中效果会失效
14.什么是微格式?构建前端页面需要使用微格式吗?
- 微格式是建立在已有的标准基础之上的一组数据格式
- 具体表现是把语义嵌入到
HTML
中,有助于实现分离式开发,相当于对Web
页面进行语义注释
- 采用微格式的页面,通常会在标签中加入解释性的注释,有助于让处理
HTML
的软件更易于理解文档,当使用爬虫爬取Web
内容时,也能够更好地识别内容块的语义,可以优化网页的SEO
15.为什么HTML5
只需要写!DOCTYPE html
?
HTML5
与HTML4
不同,并不遵循SGML
(标准通用标记语言),DTD
规定了标记语言的规则,这样浏览器才能够正确识别文档内容,采用正确的方式呈现页面
16.HTML5
新增了哪些特性?移除了哪些元素?
HTML5
的新特性主要是关于图像,位置,存储,多任务等方面
- 新增标签:
video
,audio
,article
,main
,footer
,aside
,nav
,section
,canvas
等 input
新类型:date
,time
,color
,email
等- 表单新属性:
autofocus
,placeholder
,required
等 - 地理定位技术:
Geolocation API
- 拖拽:
Drag and Drop API
- 本地存储:
sessionStorage
与localStorage
- 移除元素
- 纯表现元素:
font
,center
,big
等 - 可能会产生副作用的元素:
frame
,frameset
,noframes
等
17.如何处理HTML5
新标签兼容问题?
<head>
<script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
</head>
- 使用
document.createElement("tagName")
动态创建标签
18.如何实现在一张图片的不同区域链接不同的地址?
- 在
img
标签中添加属性usemap="#yourMapTagName"
- 结合
map
标签与area
标签共同实现
<img alt="" src="" usermap="#my-map"/>
<map name="my-map">
<area shape="rect" coords="" alt="" href=""/>
<area shape="circle" coords="" alt="" href=""/>
<area shape="poly" coords="" alt="" href=""/>
</map>
19.a
元素除了用于导航,还能够用于什么?
href
属性中的url
链接可以是浏览器支持的任何协议
- 用于拨号
<a href="tel:110">110</a>
- 用于发送短信
<a href="sms:message">sendMsg</a>
- 用于发送邮件
<a href="mailto:example@exp.com"></a>
- 用于下载文件
<a download href="targeturl"></a>
- 用于锚点
<a href="#id"></a>
20.SEO
中的TDK
是什么?
T
指的是title
标题标签D
指的是description
描述标签K
指的是keyword
关键词标签
21.script
标签中的defer
属性与async
属性的区别是什么?
- 两者都可以实现
script
脚本的异步加载,使之不会阻塞页面的解析
defer | async |
---|
多个defer 标签,按照标签顺序执行 | 多个async 标签,不一定按照标签顺序执行 |
会在HTML 文档解析完成之后再执行js | 会在js 加载完成之后立即执行 |
适用于需要依赖Dom 的脚本 | 适用于不需要依赖Dom 的脚本 |
22.常用的meta
标签有哪些?
meta
标签定义了网页的元信息,可以用来设置网页的作者,网页描述,关键词等信息
<meta charset="UTF-8">
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1">
<meta name="robot" content="index,follow">
<meta http-equiv="refresh" content="0;url=">
23.img
元素中srcset
有什么作用?
- 如果要实现响应式布局,那么在不同的屏幕密度之下设置不同的图片,可以使用
srcset
属性
<img src="default.jpg" srcset="another1.jpg 2x,another2.jpg 3x,another3.jpg 4x" />
24.描述什么是Web worker
?
- 传统的
js
代码在运行时,会阻塞页面的响应,直到js
执行完毕后,页面才会响应 Web
worker用来将js
代码放在后台运行,独立于其他js
,不会影响页面的性能,通过postMessage
将结果回传至主线程,不会阻塞主线程
25.什么是离线存储?如何使用HTML
的离线存储功能?工作原理是什么?
- 离线存储指的是当用户未连接到网络时,仍然可以实现页面的访问,并且在恢复网络后,会自动更新离线页面的数据
- 工作原理
- 离线缓存是基于一个新建的
.appcahce
文件的缓存机制,通过这个文件上的解析清单离线缓存网页中的数据,这些数据就会像cookie
一样被保存,当用户网络断开后,浏览器会按照之前缓存的数据来加载网页 - 创建一个与
.appcache
文件,并且在根标签中添加manifest="filename.appcahce"
CACHE MANIFEST
CACHE:
/filename.js
/filename.css
NETWORK:*
FALLBACK:
another.html
- 使用
window.applicationCache
进行缓存操作
26.浏览器是如何对HTML5
的离线储存资源进行管理与加载的?
- 当网络在线时,浏览器识别到
manifest
属性时,如果页面是首次加载,那么会按照该属性指向的文件中的内容进行下载,并缓存到本地;如果在加载页面时,页面已经离线存储,那么浏览器会使用离线存储的资源加载页面,然后对比新旧manifest
,如果有更新,将更新后的数据重新缓存 - 当网络离线时,浏览器直接会使用离线存储的资源加载网页
27.canvas
与svg
有什么区别?
canvas | svg |
---|
画布,通过js 绘制的2D 图像,逐像素进行渲染,位置改变时,会重新渲染 | 可伸缩矢量图形,基于XML 描述的2D 图形语言,SVG 对象属性发生改变,会重新绘制 |
依赖分辨率 | 不依赖分辨率 |
不支持事件处理器 | 支持事件处理器 |
适合图像密集型游戏 | 不适合用于游戏 |
若文本渲染能力 | 适合带有大型渲染区域的应用程序 |
能够以.png ,.jpg 格式保存图像 | 复杂度高会减慢渲染速度 |
28.head
标签有什么作用?什么标签必不可少?
head
标签用来设置网页的头部,是所有头部元素的容器head
中的标签可以用来设置网页元信息,引用样式表,执行脚本等head
标签中的信息可以用来描述网页的属性与信息,其中的大部分信息一般不会展示给用户
meta
,style
,link
,base
,script
,title
标签可用于head
标签之中
title
标签在head
标签中必不可少,它用来显示页面的标题内容
29.如何区分浏览器的严格模式与混杂模式?有什么意义?
- 网页中设置的
DTD(Document Type Definition)
文档类型定义是用来区分两种模式的标准
严格模式 | 混杂模式 |
---|
文档设置了正确的DTD | 文档设置了不正确的DTD (不正确或不存在) |
文档设置了含有URI 的过渡DTD | 文档设置了未包含URI 的过渡DTD |
HTML5
文档不存在严格模式与混杂模式- 严格模式让不同的浏览器能够按照统一的标准执行兼容,保证了旧网站的运行
30.浏览器乱码的原因是什么?
- 网页源代码是
gbk
编码,内容中的中文汉字是utf-8
编码,或者程序从数据库中取出的数据是utf-8
编码时,两种编码不一致,必然会造成乱码 - 更改
html
文档的charset=utf-8
- 使用文本编辑器,保存文档为
utf-8
格式
31.渐进增强与优雅降级有什么区别?
- 渐进增强立足于实现
HTML
最基础的功能,满足最低的需要,然后根据高版本的浏览器逐渐增加新特性与新功能,是一个由简单到复杂的过程 - 优雅降级立足于首先满足最高版本浏览器的需要,搭建一个成熟的且高级的网页,然后针对低版本浏览器逐渐降低用户体验,减少功能,是一个由复杂到简单的过程
32.HTML5
中的drag API
是什么?
drag API
用来实现对元素的拖拽功能- 在元素标签中添加了
draggable=true
属性后,元素将会成为一个可拖放元素,该元素通常与另一个拖放目标区域元素配合使用
dragstart
事件名,事件的主体是被拖放元素,开始拖放时触发dragend
事件名,事件的主体是被拖放元素,结束拖放式触发drag
事件的主体是被拖放元素,拖放中触发dragenter
事件主体是目标元素,进入目标元素时触发dragleave
事件主体是目标元素,离开目标元素时触发dragover
事件主体是目标元素,在目标元素中拖放时触发dop
事件主体是目标元素,目标元素完全接受被拖放元素时触发