h5面试题20道

article/2025/10/9 15:13:11

本文转载自:http://www.cnblogs.com/HanJie0824/p/5841640.html

1.新的 HTML5 文档类型和字符集是?

HTML5 文档类型很简单:

<!doctype html>

HTML5 使用 UTF-8 编码示例:

<meta charset="UTF-8">

2.HTML5 中如何嵌入音频?

当前,audio 元素支持三种音频格式:

复制代码

复制代码

<!-- control 属性供添加播放、暂停和音量控件 -->
<!-- audio 元素允许多个 source 元素。source 元素可以链接不同的音频文件。浏览器将使用第一个可识别的格式 -->
<audio controls="controls"><source src=”jamshed.mp3″ type=”audio/mpeg”><source src=”jamshed.ogg″ type=”audio/ogg”>Your browser does’nt support audio embedding feature.
</audio>

复制代码

复制代码

3.HTML5 中如何嵌入视频?

更正:火狐和Opera的video标签已经支持标准 MP3音频 和 MP4视频 了

当前,video 元素支持三种视频格式:

<!-- 跟 audio 元素一样 -->
<video width="320" height="240" controls="controls"><source src="movie.ogg" type="video/ogg"><source src="movie.mp4" type="video/mp4">Your browser does not support the video tag.
</video>

4.除了 audio 和 vidio,HTML5还有哪些媒体标签?

<embed> 标签定义嵌入的内容,比如插件。

<embed src="helloworld.swf" />

<source> 标签允许您规定可替换的视频/音频文件供浏览器根据它对媒体类型或者编解码器的支持进行选择。

<video width="320" height="240" controls="controls"><source src="movie.ogg" type="video/ogg"><source src="movie.mp4" type="video/mp4">Your browser does not support the video tag.
</video>

<track> 播放带有字幕的视频:

<video width="320" height="240" controls="controls"><source src="forrest_gump.mp4" type="video/mp4" /><source src="forrest_gump.ogg" type="video/ogg" /><track kind="subtitles" src="subs_chi.srt" srclang="zh" label="Chinese"><track kind="subtitles" src="subs_eng.srt" srclang="en" label="English">
</video>

5.HTML5 存储类型有什么区别?

HTML5 能够本地存储数据,在之前都是使用 cookies 使用的。HTML5 提供了下面两种本地存储方案:

  • localStorage - 没有时间限制的数据存储,数据永远不会过期,关闭浏览器也不会丢失
  • sessionStorage - 针对一个 session 的数据存储,同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。

6.HTML5 canvas 元素有什么作用?

用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML5 上进行图形操作

复制代码

复制代码

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><canvas id="canvas"></canvas><script>var canvas=document.getElementById('canvas');var ctx=canvas.getContext('2d');ctx.fillStyle='#FF0000';ctx.fillRect(0,0,200,200);</script>
</body>
</html>

复制代码

复制代码

效果:

7.HTML5 有哪些新增的表单元素?

新的input类型:

新的表单元素:

8.HTML5 废弃了那些 HTML4 标签?

9.HTML5 标准提供了哪些新的API?

1:canvas,不用多说,可以画出很多绚丽的图形,甚至可以直接做出伪3D游戏。

2:媒体控制,也很好理解(直译就是回放功能,假如只用html5.0以下的标签写,以前的音乐播放是不可能实现滚动条的。)

3:离线网页程序,可以把资源文件完全缓存在客户端,并且通过js的一些方法清空缓存

4:文档编辑,应该是更好的支持对文档的编辑。

5:拖动,可以将文件拖动到某些区域上传

6:跨文档请求,websocket,一种更加高效的通讯方式

7:历史管理,可以通过js管理和插入历史记录

8:MIME头自定义

9:客户端数据存储,localstoage sessionstoage

10:地理位置共享

11:本地数据库

12:索引数据库

10.HTML5 应用程序缓存和浏览器缓存有什么区别?

HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。

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

  离线浏览 - 用户可在应用离线时使用它们

  速度 - 已缓存资源加载得更快

  减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

实现借助于 manifest 文件

<html manifest="demo.appcache">

11.doctype 作用?严格模式与混合模式如何区分?它们有何意义?

<!DOCTYPE> 声明可告知浏览器文档使用哪种 HTML 或 XHTML 规范。

在标准模式中,浏览器根据规范呈现页面;在混杂模式中,页面以一种比较宽松的向后兼容的方式显示

复制代码

复制代码

<!-- HTML4.01文档严格定义类型,此类型定义的文档可以使用HTML中的标签与元素,不能包含不被W3C推荐的标签,不可以使用框架 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- HTML4.01文档过渡定义类型,此类型定义的文档可以使用HTML中的标签与元素包括一些不被W3C推荐的标签,不可以使用框架 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- HTML4.01文档框架定义类型,此类型等同于HTML4.01文档过渡定义类型,但可以使用框架 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"><!-- XHTML1.0文档过渡定义类型,此类型定义的文档可以使用HTML中的标签与元素包括一些不被W3C推荐的标签,不可以使用框架 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- XHTML1.0文档严格定义类型,此类型定义的文档只可以使用HTML中定义的标签与元素,不能包含不被W3C推荐的标签,不可以使用框架 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- XHTML1.0文档框架定义类型,等同于XHTML1.0文档过渡定义类型,但可以使用框架 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"><!-- XHTML1.1文档严格定义类型,等同于XHTML1.0文档过渡定义类型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

复制代码

复制代码

12.行内元素有哪些?块级元素有哪些?空(void)元素有哪些?

块级元素:

  address - 地址       

  blockquote - 块引用   

    center - 举中对齐块   

  dir - 目录列表   

  div - 常用块级容易,也是css layout的主要标签   

  dl - 定义列表   

  fieldset - form控制组   

  form - 交互表单   

  h1 - 大标题   

  h2 - 副标题   

  h3 - 3级标题   

  h4 - 4级标题   

  h5 - 5级标题   

  h6 - 6级标题   

  hr - 水平分隔线   

  isindex - input prompt   

  menu - 菜单列表   

  noframes - frames可选内容,(对于不支持frame的浏览器显示此区块内容   

  noscript - 可选脚本内容(对于不支持script的浏览器显示此内容)   

  ol - 排序表单   

  p - 段落   

  pre - 格式化文本   

  table - 表格   

  ul - 非排序列表 

行级元素:

  a - 锚点   

  abbr - 缩写   

  acronym - 首字   

  b - 粗体(不推荐)   

  bdo - bidi override   

  big - 大字体   

  br - 换行   

  cite - 引用   

  code - 计算机代码(在引用源码的时候需要)   

  dfn - 定义字段   

  em - 强调   

  font - 字体设定(不推荐)   

  i - 斜体   

  img - 图片   

  input - 输入框   

  kbd - 定义键盘文本   

  label - 表格标签   

  q - 短引用   

  s - 中划线(不推荐)   

  samp - 定义范例计算机代码   

  select - 项目选择   

  small - 小字体文本   

  span - 常用内联容器,定义文本内区块   

  strike - 中划线   

  strong - 粗体强调   

  sub - 下标   

  sup - 上标   

  textarea - 多行文本输入框   

  tt - 电传文本   

  u - 下划线  

空元素,没有内容的 HTML 元素被称为空元素: 

  <br> - 定义换行

  <hr> - 分割线

  <img>

  <input>

13.link 和 @import 的区别是?

引用CSS的两种方式:

<link rel="stylesheet" href="taojiaqu.css" type="text/css" /><style type="text/css">@import url(taojiaqu.css) </style>

1.link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。

2.link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。

3.link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。

4.link支持使用Javascript控制DOM去改变样式;而@import不支持。

14.浏览器的内核分别是什么?

Trident(IE内核),是微软开发的一种排版引擎。

Gecko(Firefox内核),是一套开放源代码的、以C++编写的网页排版引擎。

Presto(Opera前内核) (已废弃)。

Webkit(Safari内核,Chrome内核原型,开源)。

15.常见兼容性问题及解决方案?

1.清除图片下方出现几像素的空白间隙

img{display:block;}
img{vertical-align:top;}

2.不同浏览器的标签默认的外边距和内边距不同

*{margin:0;padding:0}

这个还有很多,之后再来整一篇。有些遇到了才会发现...

16.用js写个原生的ajax过程

复制代码

复制代码

window.οnlοad=function(){document.getElementsByTagName('a')[0].οnclick=function(){if (window.XMLHttpRequest){var xmlhttp=new XMLHttpRequest();}else{var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}var method='GET';var url=this.href;xmlhttp.open(method,url);xmlhttp.send();xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200||xmlhttp.status==304){var txt=xmlhttp.responseText;var json=eval('('+txt+')');document.getElementById('name').innerHTML='姓名'+json.ruei.name;document.getElementById('age').innerHTML='年龄'+json.ruei.age;document.getElementById('job').innerHTML='工作'+json.ruei.job;}}}return false;}
}    

复制代码

复制代码

17.请实现,鼠标点击页面中的任意标签,alert 该标签的名称(注意兼容性)

复制代码

复制代码

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>alert标签名</title>
</head>
<body><div class="alert">div</div><a href="javascript:;" class='alert'>a</a><b class="alert">b</b><script>function WClassName(className){if(document.getElementsByClassName){return document.getElementsByClassName(className);}else{var tag= document.getElementsByTagName("*");var lengths=tag.length;var divs=[];for (var i=0; i<lengths; i++) {if(tag[i].className==className){divs.push(tag[i])}}return divs;}}window.οnlοad=function(){var tagObj=WClassName('alert');for(var i=0,max=tagObj.length;i<max;i++){tagObj[i].οnclick=function(){alert(this.tagName);}}}</script>
</body>
</html>

复制代码

复制代码

方法2:

复制代码

复制代码

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>alert标签名</title>
</head>
<body><div>div</div><a href="javascript:;">a</a><b>b</b><script>function elementName(evt){  evt = evt|| window.event;   // IE: window.event  // IE用srcElement获取事件源,而FF用target获取事件源  var selected = evt.target || evt.srcElement;  alert(selected.tagName);  }  window.onload = function(){  var el =document.getElementsByTagName('body');  el[0].onclick = elementName;}</script>
</body>
</html>

复制代码

复制代码

18.请指出以下代码的性能问题,并进行优化。

复制代码

复制代码

var info="淘家趣(www.taojiaqu.com)是一个关注潮流的资讯类购物网站。";
info+="提供新鲜好玩的家装资讯,电子科技,家趣产品。";
info+="精选的趣家商品,创意的家趣装修。";
info+="淘-趣家优品,享-生活乐趣。";
info=info.split(",");
for(var i=0 in info){alert(info[i]);
};

复制代码

复制代码

更改后:

火狐测试后,平均时间块2-3毫秒,有可以改进的还望指出...

1.字符串相加效率比较慢

2.考虑到代码要的效果,可以用数组直接实现,省去 info.split()

 

复制代码

复制代码

var info=new Array();
var info[0]="淘家趣(www.taojiaqu.com)是一个关注潮流的资讯类购物网站。提供新鲜好玩的家装资讯";
var info[1]="电子科技,家趣产品。精选的趣家商品";
var info[2]="创意的家趣装修。淘-趣家优品";
var info[3]="淘-趣家优品,享-生活乐趣。";
for(var i=0,max=info.length;i<max;i++){alert(info[i]);
}

复制代码

复制代码

 

 

19.请给出异步加载js方案,不少于两种。

默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页头会导致加载很慢的话,是会严重影响用户体验的。

1.defer(只支持IE)

<script type="text/javascript" defer="defer">
alert('taojiaqu');
</script> 

 

2.async规定一旦脚本可用,则会异步执行,只适用于外部脚本

<script type="text/javascript" src="taojiaqu.js" async="async"></script> 

 

3.创建script,插入到DOM中,加载完毕后callBack

复制代码

复制代码

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>alert标签名</title>
</head>
<body><script>function loadScript(url, callback){var script = document.createElement("script")script.type = "text/javascript";if (script.readyState){ //IEscript.onreadystatechange = function(){if (script.readyState == "loaded" || script.readyState == "complete"){script.onreadystatechange = null;callback();}};} else { //Others: Firefox, Safari, Chrome, and Operascript.onload = function(){callback();};}script.src = url;document.body.appendChild(script);}loadScript('http://www.taojiaqu.com/resource/public/jquery/jquery-1.11.2.min.js',function(){alert('ok');})</script>
</body>
</html>

复制代码

复制代码

 

20。请写出jquery绑定事件的方法,不少于两种。

.bind()是直接绑定在元素上

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。(live由于性能原因已经被废弃)

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制

1.无论使用bind、on、delegate、click(function())都是重复绑定,即绑定的同类型事件被放到一个事件队列中,依次执行,后绑定的事件不会替换之前绑定的,对于on使用off,delegate用undelegate,bind及click使用unbind来解除绑定,例如unbind(type)传递为事件类型,如果不传type则解出所有事件绑定;需要注意的是元素本身自带的事件无法unbind(如button1)

2.要绑定自定义事件,如'open',以上函数都可以使用,但激活需要使用trigger

3.建议使用on函数

复制代码

复制代码

$('.myClass').on({click:function(eleDom){ ...do someting}, dbclick:function(eleDom){ ...do someting    } 
})    

http://chatgpt.dhexx.cn/article/khD1v844.shtml

相关文章

h5面试题总结

导航的解析流程 1.导航被触发。 2.在失活的组件里调用beforeRouteLeave守卫 3.调用全局的 beforeEach 守卫 4.在重用的组件里调用 beforeRouteUpdate 守卫 (2.2) 5.在路由配置里调用 beforeEnter 6.解析异步路由组件 7.在被激活的组件里调用 beforeRouteEnter 8.调用全…

H5前端面试题汇总

1.关于利用数组去重的方法,除了用最简单的set去重以外, 还有reduce,先来看一下reduce的基本使用吧 那么问题来了, 如何用reduce来给类数组对象去重呢? 2.promise是用来做什么的? promise是用来解决异步编程问题(简单说是就是解决回调地狱的), promise有三种状态: paddin…

C语言中关于fscanf()方法与fgets()方法的简单知识点总结

fscanf() int fscanf(FILE* stream, const char* format, [argument...]);fscanf()方法与scanf()方法类似。不同的是多了第一个参数&#xff0c;文件指针参数&#xff0c;后两个参数用法类似。其中要注意的是第三个参数处填写变量时&#xff0c;不要遗漏取地址符&。 要点…

C语言快速进阶C++(基本篇+STL篇)

目录 前言 用C做题的好处 using namespace std cin&#xff0c;cout头文件 变量声明 bool变量 const定义常量 string类 结构体 引用& vector set map(键值对) stack(栈) queue(队列) unordered_map和unordered_set(无序键值对和无序集合) 此思维导图来源于…

C语言fgets()函数的用法总结

从c11之后取消了gets()函数&#xff0c;用fgets()代替&#xff0c;用法有所不同&#xff0c;这里详细介绍下fgets()该如何使用。 char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 第一个参数为数据存放的数组&#xff0c;第二个参数为最大长度&#x…

C语言一行语句太长的换行处理方法

文章目录 1、C语言中代码的多行书写2、获取视频教程3、版权声明 1、C语言中代码的多行书写 对C语言初学者来说&#xff0c;编写的程序的功能很简单&#xff0c;一句代码很短&#xff0c;但是在实际开发中&#xff0c;参数往往很长很多&#xff0c;一句代码可能会很长&#xff…

(c语言)fgest()键盘获取后解决换行符'\n'的问题

fgets是会读取回车换行符的。有时候我们并不希望在字符串中存在换行符。 #include <stdio.h>int main (int argc,char *argv[]) {char str[30]"";//scanf("%s",str);printf("随便输入一个字符串呗&#xff1a;");fgets(str,sizeof(str),s…

C语言按行读取文件的正确使用:fgets、feof、ferror

转自 https://blog.csdn.net/yss28/article/details/53453959 一、fgets函数 原型 char *fgets(char *buf, int bufsize, FILE *stream); 功能 fgets函数用来从stream所指文件中读入bufsize-1个字符放入buf为起始地址的空间内&#xff1b;如果在未读满bufsize-1个字符之时…

Linux系统下C语言的编程技巧

Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行…

C语言使用fgetc()函数

fgets&#xff08;&#xff09;函数用法比单一&#xff0c;请结合代码一起理解 #include "stdio.h" #include "stdlib.h" int main() {FILE *fp; //定义文件指针char filename[200]; //存放输入的文件名字char str; //存放一个职工…

C语言-宏的实现

写一个宏&#xff0c;计算结构体中某变量相对于首地址的偏移。 结果 #define struct(struct_type,numname) (size_t)&(((struct_type*)0)->numname)实现过程 #include<stdio.h> #define struct(struct_type,numname) (size_t)&(((struct_type*)0)-…

C语言中fgets()函数回车符相关的问题

fgets函数 目录 fgets函数fgets函数与gets函数fgets函数包含回车符原因消去回车符需要消去回车符的情况任务描述编程要求测试说明思路代码问题关键 消去操作 fgets函数与gets函数 请移步下方链接&#xff0c;其中包含了scanf函数、gets函数以及fgets函数的区分总结&#xff1a…

c语言中fgetc函数的介绍

点击上方蓝字关注我&#xff0c;了解更多咨询 1、fgetc函数返回的字符实际上是文件流中位置指针指向的字符。 当fgetc函数读取错误时&#xff0c;返回EOF并设置文件错误标志位。 2、该函数以无符号char强制转换为int的形式返回读取的字符&#xff0c;如果到达文件末尾或出现读错…

fgets()函数的详解-使用技巧-C语言基础

这篇文章要探讨的是“fgets()函数的详解以及使用时需要注意的一些细节”。涉及fgets()函数的应用和需要注意的问题。属于C语言基础篇&#xff08;持续更新&#xff09;。 fgets()&#xff08;函数原型&#xff1a;char *fgets(char *restrict str, int size, FILE *restrict s…

男女声语音转换

男女声特点 &#xff08;此部分转载自https://blog.csdn.net/u011389706/article/details/78965233&#xff09; 男女声基本区别 男女声主要区别在于男女声基音频率&#xff08;pitch frequency&#xff09;的高低。一般女声的音调比男声的音调高&#xff0c;这种不同主要是反…

最新游戏陪玩语音聊天系统源码+视频搭建教程

一个人的游戏叫孤独&#xff0c;一群人的游戏才是乐趣&#xff0c;随着电竞产业在国内的快速发展&#xff0c;游戏陪练行业也迅速成长&#xff0c;现在很多游戏玩家为了追求更高质量的游戏体验感&#xff0c;往往会在玩游戏的过程中找陪练&#xff0c;通过陪玩系统进行预约游戏…

伪造微信语音文件的过程分析

说实话&#xff0c;写这篇《续》&#xff0c;小编是很纠结的。我们绝不是要传授犯罪方法&#xff0c;而是要告诉大家&#xff0c;伪造微信语音聊天记录的行为是如何进行的。&#xff08;安卓实测&#xff0c;苹果略有不同&#xff09; 一、微信语音文件的存储 关于这一点&…

微信PC端技术研究(2)-保存聊天语音

微信PC端技术研究-保存聊天语音 转载地址&#xff1a;[原创]微信PC端技术研究(2)-保存聊天语音-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com 0x0. 前言 最近又学习了某位大佬用CE的方法&#xff0c;大佬的一句话有点醍醐灌顶&#xff0c;然后有了新的感觉&#xff0…

将微信语音消息转换为 mp3

获取语音文件&#xff08;.silk&#xff09; 需要在电脑上实现。首先&#xff0c;查看你的微信 Mac 版本将数据存放在哪个目录下&#xff0c;我的是在这个目录下&#xff1a; /Users/henry/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.te…