-
Q:Doctype作用?标准模式与兼容模式有什么区别?
- A:<!Doctype>声明位于HTML文档的第一行,处于<html>标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在格式不正确会导致文档以兼容模式呈现;
标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行;
在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
-
Q:HTML5为什么只需要写<!DOCTYPE HTML>?
- A:HTML5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。
而HTML4基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
-
Q:行内元素有哪些?块级元素有哪些?空(void)元素有哪些?
- A:首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值是'block',则为块级元素;span默认display为'inline',是行内元素。
行内元素有:a b span img input select strong s u l
块级元素有:div ul ol li dl dt dd h1~h6 p...
常见的空元素:<br><hr><img><input><link><meta>
不常见的空元素:<area><base><col><command><embed><keygen><param><source><track><wbr>
-
Q:页面导入样式时,使用link和@import有什么区别?
- A:
link
属于XHTML标签,除了加载CSS外,还能用于定义RSS,定义rel连接属性等作用;
而@import
是CSS提供的,只能用于加载CSS;
页面被加载的时候,link
会同时被加载,而@import
引用的CSS会等到页面被加载完再加载;
import
是CSS2.1提出来的,只有在IE5以上才能被识别,而link是XHTML标签,无兼容问题。
-
Q:介绍一下你对浏览器内核的理解?
- A:主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎;
渲染引擎:负责取得网页的内容(XHTML/XML/图像等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染效果也不相同,所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网格内容的应用程序都需要内核;
JS引擎:解析和执行JavaScript来实现网页的动态效果;
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
-
- Q:常见的浏览器内核有哪些?
- A: - IE浏览器
Trident内核:IE , MaxThon , TT , The World , 360 , 搜狗浏览器等. [ 又称MSHTML ];
- 网景浏览器
Geoko内核:Netscape6及以上版本 , FF , MozillaSuite/SeaMonkey等
- 欧朋浏览器
Presto内核:Opera7及以上。[ Opera内核原为:Presto,现为:Blink ]
- 苹果,谷歌浏览器
Webkit内核:Safari , Chrome等。[ Chrome的:Blink( Webkit的分支 ) ]。
-
- Q:html5有哪些新特性、移出了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?
- A:HTML5现在已不是SGML的子集,主要是关于图像,位置,存储,多任务多功能的增加。如以下:
- Canvas
绘画
- 用于媒介回放
- 本地离线存储的localStorage
长期存储数据,浏览器关闭后数据不丢失
- sessionStorage
的数据在浏览器关闭后删除
- 语义化更好的内容元素,比如article,footer,header,nav,section
- 表单控件,calendar(日历),date,time,email,url,search
- 新的技术webworker,websocket,Geolocation(定位)
移除的元素:
- 纯表现的元素:basefont big center font s strike tt u
- 对可用性产生负面影响的元素:frame frameset noframes
支持HTML5新标签:
- IE8/IE7/IE6支持通过document.createElement 方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式,当然也可以直接使用成熟的框架,比如html5shim
-
Q:简述一下你对HTML语义化的理解?
- A:用正确的标签做正确的事情。
- html语义化让页面的内容结构化,结构化更清晰,便于对浏览器、搜索引擎解析;
- 即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;
- 搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO
- 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解
-
Q:HTML5的离线存储怎么使用,工作原理能不能解释一下?
- A:在用户没有连网时,可以正常访问站点或应用,在用户与网络连接时更新用户机器上的缓存文件。
- 原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术);
- 通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来,之后当网络在出于离线模式下时,浏览器会通过被离线存储的数据进行页面展示;
- 搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO
- 如何使用:
//在cache.manifest文件的编写离线存储的资源
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
// offline.html
在离线状态时,操作window.aoolicationCache进行需求实现。
-
Q:浏览器是怎么对HTML5的离线存储进行和加载的呢?
- A:在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不会做任何操作,如果文件变了,那么就会重新下载文件中的资源并进行离线存储。。
- 离线的情况下,浏览器就直接使用离线存储的资源。
-
Q:请描述一下cookies,sessionStorage和localStorage的区别?
- A:
cookie
是网站为了标识用户身份而存储在用户本地终端(Client Side)上的数据(通常经过加密),cookie
还可以设置有效时间。
- cookie
数据始终在同源的http
请求中携带(即使不需要),即会在浏览器和服务器间来回传递。
- 每次ajax
请求都会把cookie
传送到后台,cookie
一半用做用户登录,后台可以根据cookie信息判断用户是否登录状态。
- sessionStorage
和localStorage
不会自动把数据发给服务器,仅在本地存储。
-
区别在于:
- 存储大小
a. cookie
数据大小不能超过4k
b. sessionStorage
和localStorage
虽然也有存储大小的限制,但比cookie
大的多,可以达到5M或更大
- 存储时间
a. localStorage
存储持久数据,浏览器关闭后数据不丢失除非主动删除数据
b. sessionStorage
数据在当前浏览器窗口关闭后自动删除
c. cookie
设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
-
Q:iframe有哪些缺点?
- A:① iframe会阻塞主页面的
onload
事件。
② 搜索引擎的检索程序无法解读这种页面,不利于SEO。
iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
使用iframe之前需要考虑这两个缺点,如果需要使用iframe,最好是通过JavaScript。
动态给iframe添加src属性值,这样可以绕开以上两个问题。
-
Q:Label的作用是什么?是怎么用的?
- A:label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。
例:
<label for="Name">Number:</label>
<input type="text" name="Name" id ="Name"/>
<label>Date:<input type="text" name="B"/></label>
-
Q:如何实现浏览器內多个标签页之间的通信?
- A:
WebSocket
也可以调用localStorage
、cookies
等本地存储方式,还可以使用页面的路由传递参数。
localStorage
另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信
-
Q:如何在页面上实现一个圆形的可点击区域?
- A:
map
+area
或svg
或border-radius
。
纯js实现 需要求一个点不在圆上简单算法、获取鼠标坐标等
-
Q:title与h1的区别,b与strong的区别,i与em的区别?
- A:
title
属性没有明确意义只是个标题,<h1>
则表示层级明确的标题,对页面信息的抓取也有很大的影响。
<strong>
是标明重点内容,有语气加强的意思,使用阅读设备阅读网络时:<strong>
会重读,而<b>
是展示强调内容
<i>
内容展示为斜体,<em>
表示强调的文本
-
Q:data-属性的作用是什么?
- A:h5新增的属性,可以通过
ele.dataset
获取到标签上的data-**
的属性,返回一个对象
-
Q:你知道多少种Doctype文档类型?
- A:该标签可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的HTML文档
HTML 4.01规定了三种文档类型:Strict
Transitional
以及Frameset
XHTML 1.0规定了三种XML文档类型:Strict
Transitional
以及Frameset
Standards(标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而Quirks
(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页
-
Q:HTML和XHTML——两者有什么区别?
- A:1.所有的标记都必须要有一个相应的结束标记
2.所有标签的元素和属性的名字都必须使用小写
3.所有的XML标记都必须合理嵌套
4.所有的属性必须用引号引起来
5.把所有<和&特殊符号用编码表示
6.给所有属性赋一个值
7.不要在注释内容中使用 ' -- '
8.图片必须有说明文字
-
Q:<img>的title和alt有什么区别?
- A:
title
是global attribute
之一,用于为元素提供附加的abvisory information
,通常当鼠标滑动到元素上的时候显示