前端面试知识点总结(一)html5篇

213 阅读3分钟

上班已经快一个月了,面试的过程中一直想对面试的知识点做一个总结,最近有时间,对面试的中遇到的问题,做一个梳理和总结,相当于一个复习吧。

1.行内元素

...

... 链接


换行

... 加粗

... 加粗

图片

... 上标

... 下标

... 斜体

... 斜体

... 删除线

... 下划线

... 文本框

... 多行文本

... 下拉列表

2.块级元素:

... ... 地址文字

...

标题一级

...

标题二级

...

标题三级

...

标题四级
...
标题五级
...
标题六级
水平分割线

...

段落
...
预格式化
...
段落缩进 前后5个字符

... 滚动文本

    ...
无序列表
    ...
有序列表
...
定义列表 ...
表格 ... 表单
...

区别有三个:

  1. 行内元素与块级元素直观上的区别。行内元素会在一条直线上排列,都是同一行的,水平方向排列。

  2. 块级元素各占据一行,垂直方向排列。块级元素从新行开始结束接着一个断行。块级元素可以包含行内元素和块级元素。行内元素不能包含块级元素。

  3. 行内元素与块级元素属性的不同,主要是盒模型属性上。行内元素设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。

 3.新元素

标签

描述

标签定义图形,比如图表和其他图像。该标签基于 JavaScript 的绘图 API

4.新多媒体元素

标签

描述

定义音频内容

定义视频(video 或者 movie)

定义多媒体资源 和

定义嵌入的内容,比如插件。

为诸如 和 元素之类的媒介规定外部文本轨道。

5.新表单元素

标签

描述

定义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。

规定用于表单的密钥对生成器字段。

定义不同类型的输出,比如脚本的输出。

6.新的语义和结构元素

HTML5提供了新的元素来创建更好的页面结构:

标签

描述

定义页面独立的内容区域。

定义页面的侧边栏内容。

允许您设置一段文本,使其脱离其父元素的文本方向设置。

定义命令按钮,比如单选按钮、复选框或按钮

用于描述文档或文档某个部分的细节

定义对话框,比如提示框

标签包含 details 元素的标题

规定独立的流内容(图像、图表、照片、代码等等)。

定义

元素的标题

定义 section 或 document 的页脚。

定义了文档的头部区域

定义带有记号的文本。

定义度量衡。仅用于已知最大和最小值的度量。

定义导航链接的部分。

定义任何类型的任务的进度。

定义 ruby 注释(中文注音或字符)。

定义字符(中文注音或字符)的解释或发音。

在 ruby 注释中使用,定义不支持 ruby 元素的浏览器所显示的内容。

定义文档中的节(section、区段)。

定义日期或时间。

规定在文本中的何处适合添加换行符。

7.什么是html的语义化?

<基本上都是围绕着几个主要的标签,像标题(H1~H6)、列表(li)、强调(strong em)

  根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。

8.什么是 HTML5 Web 存储?

HTML5 web 存储,一个比cookie更好的本地存储方式。也就是localStorage 和 sessionStorage 。

相同点:

localStorage和sessionStorage都是用来存储客户端临时信息的对象。它们目前均只能存储字符串类型的对象

不同点:

A.localStorage生命周期是永久,除非用户清除localStorage信息,否则这些信息将永远存在。
B.sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
C.不同浏览器无法共享localStorage或sessionStorage中的信息。
D.相同浏览器的不同源页面间可以共享相同的 localStorage,但是不同页面或标签页间无法共享sessionStorage的信息。
E.非顶级窗口中,如果一个标签页包含多个iframe标签且它们属于同源页面,那么它们可以共享sessionStorage。

9.HTML5 Web SQL 数据库

Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。  Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。

下面将一一将介绍怎样创建打开数据库,创建表,添加数据,更新数据,删除数据,删除表 。

先介绍三个核心方法

1、openDatabase:这个方法使用现有数据库或创建新数据库创建数据库对象。

2、transaction:这个方法允许我们根据情况控制事务提交或回滚。

3、executeSql:这个方法用于执行真实的SQL查询。

第一步:打开连接并创建数据库

代码如下:

var dataBase = openDatabase("student", "1.0", "学生表", 1024 * 1024, function () { });
if (!dataBase) {
alert("数据库创建失败!");
} else {
alert("数据库创建成功!");
}

解释一下openDatabase方法打开一个已经存在的数据库,如果数据库不存在,它还可以创建数据库。几个参数意义分别是:
1,数据库名称。
2,版本号 目前为1.0,不管他,写死就OK。
3,对数据库的描述。
4,设置数据的大小。
5,回调函数(可省略)。
初次调用时创建数据库,以后就是建立连接了。

第二步:创建数据表

代码如下:

this.createTable=function() {
dataBase.transaction( function(tx) {
tx.executeSql(
"create table if not exists stu (id REAL UNIQUE, name TEXT)",
[],
function(tx,result){ alert('创建stu表成功'); },
function(tx, error){ alert('创建stu表失败:' + error.message);
});
});
}

解释一下,
executeSql函数有四个参数,其意义分别是:
1)表示查询的字符串,使用的SQL语言是SQLite 3.6.19。
2)插入到查询中问号所在处的字符串数据。
3)成功时执行的回调函数。返回两个参数:tx和执行的结果。
4)一个失败时执行的回调函数。返回两个参数:tx和失败的错误信息。

第三步:执行增删改查

1)添加数据:

代码如下:

this.insert = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"insert into stu (id, name) values(?, ?)",
[id, '徐明祥'],
function () { alert('添加数据成功'); },
function (tx, error) { alert('添加数据失败: ' + error.message);
} );
});

2)查询数据

代码如下:

this.query = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"select * from stu", [],
function (tx, result) { //执行成功的回调函数
//在这里对result 做你想要做的事情吧...........
},
function (tx, error) {
alert('查询失败: ' + error.message);
} );
});
}

解释一下
上面代码中执行成功的回调函数有一参数result。

result:查询出来的数据集。其数据类型为 SQLResultSet ,就如同C#中的DataTable。
SQLResultSet 的定义为:

代码如下:

interface SQLResultSet {
readonly attribute long insertId;
readonly attribute long rowsAffected;
readonly attribute SQLResultSetRowList rows;
};

其中最重要的属性—SQLResultSetRowList 类型的 rows 是数据集的“行” 。
rows 有两个属性:length、item 。
故,获取查询结果的某一行某一列的值 :result.rows[i].item[fieldname] 。

3)更新数据
代码如下:

this.update = function (id, name) {
dataBase.transaction(function (tx) {
tx.executeSql(
"update stu set name = ? where id= ?",
[name, id],
function (tx, result) {
},
function (tx, error) {
alert('更新失败: ' + error.message);
});
});
}

4)删除数据

代码如下:

this.del = function (id) {
dataBase.transaction(function (tx) {
tx.executeSql(
"delete from stu where id= ?",
[id],
function (tx, result) {
},
function (tx, error) {
alert('删除失败: ' + error.message);
});
});
}

5)删除数据表

代码如下:

this.dropTable = function () {
dataBase.transaction(function (tx) {
tx.executeSql('drop table stu');
});
}

10.什么是HTML5 应用程序缓存?

使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本。

应用程序缓存为应用带来三个优势:

  1. 离线浏览 - 用户可在应用离线时使用它们
  2. 速度 - 已缓存资源加载得更快
  3. 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

HTML5 Cache Manifest 实例

下面的例子展示了带有 cache manifest 的 HTML 文档(供离线浏览):

实例

文档内容......

每个指定了 manifest 的页面在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面)。

manifest 文件的建议的文件扩展名是:".appcache"。

Remark 请注意,manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置。