文章目录
HTML(超文本标记语言)面试题
超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。
一、基础篇
1.1 HTML语义化标签
HTML语义化
,从代码上来展示页面的结构。良好的语义化代码可以直接从代码上就能看出来那一块到底是要表达什么内容。
html语义化标签的优点
:
- 有利于构建清晰的结构,有利于团队的开发、维护。
- 有助于构架良好的HTML结构,有利于搜索引擎的建立索引、抓取。
- 有利于不同设备的解析(不同设备对html标签解析默认的样式都是不一样的)。
常用
的html语义化标签:
<h1>
~<h6>
,作为标题使用,并且依据重要性递减,<h1>
是最高的等级。<p>
段落标记<ul>
、<ol>
、<li>
,<ul>
无序列表<em>
、<strong>
,<em>
是用作强调,<strong>
是用作重点强调。<table>
、<thead>
、<tbody>
、<td>
、<th>
、<caption>
, 就是用来做表格不要用来布局
HTML5
新增的语义化标签:
header
元素:header 元素代表“网页”或“section”的页眉。footer
元素:footer元素代表“网页”或“section”的页脚。nav
元素:nav元素代表页面的导航链接区域。用于定义页面的主要导航部分。section
元素:section元素代表文档中的“节”或“段”<aside>
标签定义页面主区域内容之外的内容(比如侧边栏)。
1.2 前端SEO优化
SEO(Search Engine Optimization),即搜索引擎优化。
1.3 HTML5的新特性
1.3.1 语义标签
<header>
元素:header 元素代表“网页”或“section”的页眉。<footer>
元素:footer元素代表“网页”或“section”的页脚。<nav>
标签定义导航链接的部分。<section>
标签定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。<aside>
标签定义页面主区域内容之外的内容(比如侧边栏)。<article>
标签定义独立的内容。
1.3.2 增强型表单
placehoder
属性,简短的提示在用户输入值前会显示在输入域上。required
属性,是一个 boolean 属性。要求填写的输入域不能为空pattern
属性,描述了一个正则表达式用于验证<input>
元素的值。min
和max
属性,设置元素最小值与最大值。step
属性,为输入域规定合法的数字间隔。height
和width
属性,用于 image 类型的<input>
标签的图像高度和宽度。autofocus
属性,是一个 boolean 属性。规定在页面加载时,自动地获得焦点。multiple
属性 ,是一个 boolean 属性。规定<input>
元素中可选择多个值。
1.3.3 视频和音频
- HTML5 DOM 为
<audio>
和<video>
元素提供了方法、属性和事件。
1.3.4 Canvas绘图
- 用于绘画的
canvas
元素
1.3.5 地理定位
-
HTML5
Geolocation
(地理定位)用于定位用户的位置。window.navigator.geolocation { getCurrentPosition: fn 用于获取当前的位置数据 watchPosition: fn 监视用户位置的改变 clearWatch: fn 清除定位监视 }
1.3.6 拖放API
- 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。
- 拖放的过程分为
源对象
和目标对象
。源对象是指你即将拖动元素,而目标对象则是指拖动之后要放置的目标位置。
源对象
(可能发生移动的)可以触发的事件:
- dragstart:拖动开始
- drag:拖动中
- dragend:拖动结束
目标对象
(不会发生移动)可以触发的事件:
- dragenter:拖动着进入
- dragover:拖动着悬停
- dragleave:拖动着离开
- drop:释放
dataTransfer
:用于数据传递的“拖拉机”对象:
// 在拖动源对象事件中使用e.dataTransfer属性保存数据:
e.dataTransfer.setData( k, v )
// 在拖动目标对象事件中使用e.dataTransfer属性读取数据:
var value = e.dataTransfer.getData( k )
1.3.7 WebWorker
- 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
web worker
是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。
1.3.8 WebStorage
- 使用HTML5可以在本地存储用户的浏览数据。早些时候,本地存储使用的是cookies。
- 但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以存储大量的数据,而不影响网站的性能。
- 数据以 键/值 对存在, web网页的数据只允许该网页访问使用。
客户端存储数据的两个对象为:
localStorage
- 没有时间限制的数据存储sessionStorage
- 针对一个 session 的数据存储, 当用户关闭浏览器窗口后,数据会被删除。
不管是 localStorage,还是 sessionStorage,可使用的API都相同:
- 保存数据:localStorage.setItem(key,value);
- 读取数据:localStorage.getItem(key);
- 删除单个数据:localStorage.removeItem(key);
- 删除所有数据:localStorage.clear();
- 得到某个索引的key:localStorage.key(index);
1.3.9 WebSocket
WebSocket
是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。- 浏览器通过
JavaScript
向服务器发出建立WebSocket
连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。 - 当你获取
Web Socket
连接后,你可以通过send()
方法来向服务器发送数据,并通过onmessage
事件来接收服务器返回的数据。
function WebSocketTest() {
if ("WebSocket" in window) {
alert("您的浏览器支持 WebSocket!");
// 打开一个 web socket
var ws = new WebSocket("ws://localhost:9998/echo");
ws.onopen = function() {
// Web Socket 已连接上,使用 send() 方法发送数据
ws.send("发送数据");
alert("数据发送中...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
alert("数据已接收...");
};
ws.onclose = function(){
// 关闭 websocket
alert("连接已关闭...");
};
} else {
// 浏览器不支持 WebSocket
alert("您的浏览器不支持 WebSocket!");
}
}