目录
1.DOCTYPE作用?严格模式与混杂模式如何区分?它们有何意义?
2.HTML5 为什么只需要写 ?
3.行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
4.页面导入样式时,使用link和@import有什么区别?
5.介绍一下你对浏览器内核的理解?
6.html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
7.简述一下你对HTML语义化的理解?
8.HTML5的离线储存怎么使用,工作原理能不能解释一下?
10.iframe有那些缺点?
11.Label的作用是什么?是怎么用的?
12.HTML5的form如何关闭自动完成功能?
13.如何实现浏览器内多个标签页之间的通信? (阿里)
14.webSocket如何兼容低浏览器?(阿里)
15.页面可见性(Page Visibility API) 可以有哪些用途?
16.如何在页面上实现一个圆形的可点击区域?
17.实现不使用 border 画出1px高的线,在不同浏览器的标准模式与怪异模式下都能保持一致的效果。
18.网页验证码是干嘛的,是为了解决什么安全问题。
19.title与h1的区别、b与strong的区别、i与em的区别?
是放在HTML文档第一行,用来告诉浏览器以什么形式解析该文档。DOCTYPE不正确会使浏览器以混杂模式解析文档。
严格模式(标准模式):以W3C标准解析代码。
混杂模式(怪异模式、兼容模式):以浏览器自身标准解析代码。向后兼容,通常模拟老浏览器的行为,以防老站点无法工作。
意义:IE5.5引入了文档模式的概念,通过使用DOCTYPE实现模式切换,它的主要作用是告诉浏览器以哪种模式呈现,如何解析文档,也就是说两种模式主要影响CSS内容的呈现,某些情况下也会影响JavaScript的执行。
判别方法:通过doctument.compatMode来判断。
if(document.compatMode=="CSS1Compat" ) {
console.log('标准模式');
}else {
console.log('混杂模式');
}
[扩展]另外两种模式:准标准模式,超级标准模式
参考:http://www.cnblogs.com/qianlegeqian/p/4067635.html
?因为HTML5不是基于SGML,不需要引用DTD,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行),而HTML4.01是基于SGML,需要引用DTD才能告知浏览器文档所使用的文档类型。
因为HTML5没有DTD,因此没有严格模式与混杂模式的区别,语法相对宽松,尽可能大的实现了向后兼容。
行内元素:span,strong,em,br,img,input,label,select,textarea,cite(引用)
块元素:div,p,form,ul,li,ol,dl,address,fieldset,hr,menu,table
空元素:在HTML元素中,没有内容的 HTML 元素被称为空元素。
常见的空元素:
可变元素:applet,button,del,ins(插入的文本),map(图片区块),object,script
行内元素和块元素的区别:块元素会独占一行,其宽度会自动填满其父元素宽度,可以设置宽高,margin,padding;
行内元素不会独占一行,相邻的元素会排在同一行,除非这一行排不下才会换行,其宽度随元素内容变化。并且height,width属性设置无效,margin,padding只在水平方向有效,竖直方向无效。
1.link是HTML标签,用于定义文档与外部资源的关系。而@import是CSS提供的,只能用于加载CSS。
2.link是HTML标签,无兼容性问题,而@import是CSS2.1 提出的,只在IE5以上才能被识别。
3.link是与页面同时加载,@import是在页面加载完之后才加载。
4.link支持JS控制DOM修改CSS样式,@import不支持。
参考:https://www.cnblogs.com/zbo/archive/2010/11/17/1879590.html
概念:浏览器内核是可以称为“解释引擎”,负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。
五大浏览器内核:IE(Trident),火狐(Gecko)、Opera(Presto)、Safari、Chrome(Webkit)
reflow:当浏览器发现某个部分发生了点变化影响了布局,需要倒回去重新渲染。
reflow几乎是无法避免的。现在界面上流行的一些效果,比如树状目录的折叠、展开(实质上是元素的显示与隐藏)等,都将引起浏览器的 reflow。鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲染。通常我们都无法预估浏览器到底会reflow哪一部分的代码,它们都彼此相互影响着。
reflow问题是可以优化的,我们可以尽量减少不必要的reflow。比如开头的例子中的图片载入问题,这其实就是一个可以避免的reflow——给图片设置宽度和高度就可以了。这样浏览器就知道了图片的占位面积,在载入图片前就预留好了位置。
repaint,中文叫重绘。 如果只是改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器repaint。repaint的速度明显快于 reflow(在IE下需要换一下说法,reflow要比repaint 更缓慢)。
参考:https://www.cnblogs.com/ada-zheng/p/4308581.html
http://www.cnblogs.com/fullhouse/archive/2011/12/19/2293455.html
1. HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
绘画 canvas;
用于媒介回放的 video 和 audio 元素;
本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
sessionStorage 的数据在浏览器关闭后自动删除;
语意化更好的内容元素,比如 article、footer、header、nav、section;
表单控件,calendar、date、time、email、url、search;
新的技术webworker, websocket, Geolocation;
2.移除的元素:
纯表现的元素:basefont,big,center,font, s,strike,tt,u;
对可用性产生负面影响的元素:frame,frameset,noframes;
3.支持HTML5新标签:
IE8/IE7/IE6支持通过document.createElement方法产生的标签,
可以利用这一特性让这些浏览器支持HTML5新标签,
浏览器支持新标签后,还需要添加标签默认的样式。
当然也可以直接使用成熟的框架、比如html5shim;
4. 如何区分HTML5: DOCTYPE声明\新增的结构元素\功能元素
参考:慕课网HTML5新增和删除教辅
语义化是根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。
意义:使HTML文档结构更清晰,便于代码的后期维护,利于SEO(浏览器优化)和其他设备解析。
参考:https://www.cnblogs.com/freeyiyi1993/p/3615179.html
在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。
原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。
如何使用:
1、页面头部像下面一样加入一个manifest的属性;
2、在cache.manifest文件的编写离线存储的资源;
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/ /offline.html
3、在离线状态时,操作window.applicationCache进行需求实现。
参考:http://yanhaijing.com/html/2014/12/28/html5-manifest/
https://segmentfault.com/a/1190000000732617
cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。
sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
存储大小:
cookie数据大小不能超过4k。
sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
有期时间:
localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
sessionStorage 数据在当前浏览器窗口关闭后自动删除。
cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
[扩展]session是存在服务器端的,而cookies,sessionStroage和localStorage是存在于浏览器端的。cookies是不可靠的,session是可靠的。
参考:https://www.cnblogs.com/st-leslie/p/5617130.html
https://blog.csdn.net/u014753892/article/details/52821268
https://blog.csdn.net/duan1078774504/article/details/51912868
iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。
*iframe会阻塞主页面的Onload事件;
*搜索引擎的检索程序无法解读这种页面,不利于SEO;
*iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript
动态给iframe添加src属性值,这样可以绕开以上两个问题。
参考:http://www.w3school.com.cn/tags/tag_iframe.asp
https://www.cnblogs.com/lvhw/p/7107436.html
定义:
用法:label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。
给不想要提示的 form 或某个 input 设置为 autocomplete=off。
1.使用sessionStorage增加,删除时,都会有storage事件,在另一个页面监听事件即可得到localstorge存储的值,实现不同标签页之间的通信。
2.使用cookie+setInterval,将要传递的信息存储在cookie中,每隔一定时间读取cookie信息,即可随时获取要传递的信息。
参考:https://blog.csdn.net/zhouziyu2011/article/details/58595904
Adobe Flash Socket 、 ActiveX HTMLFile (IE) 、 基于 multipart 编码发送 XHR 、 基于长轮询的 XHR
参考:https://www.cnblogs.com/jingmoxukong/p/7755643.html
1.自动暂停和播放音频
2.登录同步
3.精准计算在线时长
4.页面切换时切换聊天状态
5.通过 visibilityState 的值检测页面当前是否可见,以及打开网页的时间等;
参考:https://www.zhangxinxu.com/wordpress/2012/11/page-visibility-api-introduction-extend/
1、map标签和area标签进行图片映射
2、border-radius
3、纯js实现 需要求一个点在不在圆上简单算法、获取鼠标坐标等等
参考:area标签
https://blog.csdn.net/lxcao/article/details/52809221
区分用户是计算机还是人的公共全自动程序。可以防止恶意破解密码、刷票、论坛灌水; 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。
参考:https://blog.csdn.net/owen_william/article/details/66477421
b标签和i标签是物理标签,而strong标签和em标签是逻辑标签。
title属性没有明确意义只表示是个标题,H1则表示层次明确的标题,对页面信息的抓取也有很大的影响;
Physical Style Elements -- 自然样式标签
b, i, u, s, pre
Semantic Style Elements -- 语义样式标签
strong, em, ins, del, code
应该准确使用语义样式标签, 但不能滥用, 如果不能确定时首选使用自然样式标签。
参考:https://blog.csdn.net/qq_33769914/article/details/76436751
https://blog.csdn.net/vivian_1122/article/details/80235052