HTML 面试题
转载自:帅地博客
1、src 和 href 的区别
src 和 href 都是用来引用外部的资源,它们的区别如下:
- src: 表示对资源的引用,它指向的内容会嵌入到当前标签所在的位置。src会将其指向的资源下载并应?到?档内。例如请求js脚本,当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执?完毕,所以?般js脚本会放在页面底部。
- href: 表示超文本引用,它指向一些网络资源,建立和当前元素或本文档的链接关系。当浏览器识别到它他指向的?件时,就会并行下载资源,不会停?对当前?档的处理。 常用在a、link等标签上。
2、对HTML语义化的理解
语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化)。
语义化的优点如下:
-
对机器友好,带有语义的文字表现力丰富,更适合搜索引擎的爬虫爬取有效信息
-
对开发者友好,使用语义类标签增强了可读性,结构更加清晰,开发者能清晰的看出网页的结构,便于团队的开发与维护
3、img 的 srcset 属性的作用
srcset 属性用于设置不同屏幕密度下,img 会自动加载不同的图片。常用于响应式页面
4、行内元素、块级元素、空(void)元素有哪些
行内元素:img(图片)、input(文本框)、a(链接)
块级元素:div(盒子)、ul(列表)、p(段落)、h(标题)
空元素,即没有内容的HTML元素,没有闭合标签:br(换行)、hr(水平线)
5、浏览器乱码
产生乱码的原因:
- 网页源代码是
gbk的编码,而内容中的中文字是utf-8编码的,反之也会出现乱码; - 网页编码是
gbk,而程序从数据库中调出呈现是utf-8编码的内容也会造成编码乱码; - 浏览器不能自动检测网页编码,造成网页乱码
解决办法:
-
使用软件编辑 HTML 网页内容;
- 如果网页设置编码是
gbk,而数据库储存数据编码格式是UTF-8,此时需要程序查询数据库数据显示数据前进程序转码; - 如果浏览器浏览时候出现网页乱码,在浏览器中找到转换编码的菜单进行转换
6、HTML5 与 HTML
7、浮动的方式
8、script 标签为什么要放在 body 标签的底部
原因:
因为浏览器在渲染 html 的时候,从上到下依次执行,遇到 js 文件就会停止当前页面的渲染,转而去下载 js 文件,如果将 script 标签放在头部,如果文件又很大的情况下,首屏时间就会延长,影响用户体验。
解决方法:
- 将 script 标签放到 body 的底部
- 通过 defer\async 属性将 js 文件转为异步下载
9、defer\async 的区别
都是让 js 文件能够异步下载,不阻塞页面的渲染,它们的区别如下:
- async:边渲染 html,边下载 js,下载完成后暂停 html 的解析,先执行 js,再继续渲染页面
- defer :边渲染 html,边下载 js,然后等待整个文档渲染完成后执行 js
下载的处理二者是相同的,主要是执行的时间不同如果两个属性同时设置,以 async 为准
10、一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验
- 图片懒加载:使图片仅在浏览器当前视窗内出现时才加载该图片。在网页源码中,在 img 标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接,而并非是直接存放在 src 属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成 src 属性,完成图片的加载
- 图片预加载:如果为幻灯片、相册等,可以使用图片预加载技术,将当前展示图片的前一张和后一张优先下载
- CSSsprite,SVGsprite,Iconfont、Base64:如果图片为css图片
- 特殊编码的图片:如果图片过大,可以使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提高用户体验
11、HTML和XHTML的区别是什么
XHTML 可以理解为 html+xml,就是用 xml 的语法来规范 html
XHTML 元素必须被正确地嵌套
XHTML 元素必须被关闭
12、对于 WEB 标准以及 W3C 的理解与认识问题
web 标准:将这三部分独立分开,使其更具有模块化
- 结构:HTML 标签,即页面 body 里写入的标签
- 表现:css 样式表,使页面的结构标签更具美感
- 行为:js ,页面和用户具有一定的交互,同时是页面结构或表现发生变化,主要由 js 组成
W3C 标准:对 web 标准提出了规范化的要求,也就是在实际编程中的一些代码规范
- 对结构的要求:
a. 标签字母要小写
b. 标签要闭合
c. 标签不允许随意嵌套
- 对 css 和 js 的要求:
a. 尽量使用外链 css 样式表和 js 脚本。使结构、表现和行为分为三块,符合规范。同时提高页面渲染速度,提高用户的体验。
b. 样式尽量少用行间样式表,使结构与表现分离,标签的 id 和 class 等属性命名要做到见文知义,标签越少,加载越快,用户体验提高,代码维护简单,便于改版
13、div+css 的布局较 table 布局有什么优点
结构、表现分离。改版的时候更方便,只要改 css 文件。
页面加载速度更快、页面显示简洁
易于优化(seo),搜索引擎更友好
14、html 常见兼容性问题
15、js 放在html的不同位置有什么区别吗
如果使用 window. 函数,将 js 代码放在其中,则放在哪里都是一样的,因为都是在body加载完再执行的
如果不使用window.函数,
16、移动html5开发流行的框架有哪些
- jQueryMobile 是 jQuery 在手机上和平板设备上的版本。jQueryMobile 不仅会给主流移动平台带来 jQuery 核心库,而且会发布一个完整统一的 jQuery 移动UI框架。支持全球主流的移动平台。
- jQTouch是一个jQuery的插件,主要用于手机上的Webkit浏览器上实现一些包括动画、列表导航、默认应用样式等各种常见UI效果的Java库。支持包括iPhone、Android等手机。
17、HTML5 中如何嵌入视频
和音频类似,HTML5 支持 MP4、WebM 和 Ogg 式的视频
<video width=”450″ height=”340″ controls> <source src=”jamshed.mp4″ type=”video/mp4″> Your browser does’nt support video embedding feature. video>
18、Typeof的作用
- 对于数字类型, typeof 返回的值是 number。比如:typeof(1),返回的值就是 number
- 对于字符串类型, typeof 返回的值是 string。比如:typeof(“123”)返回的值是 string
- 对于布尔类型, typeof 返回的值是 boolean 。比如:typeof(true) 返回的值是 boolean
- 对于对象、数组、null 返回的值是 object 。比如 typeof(window),typeof(document),typeof(null) 返回的值都是 object
- 对于函数类型,返回的值是 function。比如:typeof(eval),typeof(Date) 返回的值都是 function
- 如果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined
19、label的作用是什么 是怎么用的
label 标签用来定义表单控件间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。label 中有两个属性是非常有用的, FOR和ACCESSKEY。
FOR属性功能:表示label标签要绑定的HTML元素,你点击这个标签的时候,所绑定的元素将获取焦点,例如:
<Label FOR="InputBox">姓名Label><input ID="InputBox" type="text">
ACCESSKEY属性功能:表示访问 label 标签所绑定的元素的热键,当您按下热键,所绑定的元素将获取焦点。例如:
<Label FOR="InputBox" ACCESSKEY="N">姓名Label><input ID="InputBox" type="text">
20、写出几种IE6 BUG的解决方法
双边距BUG float引起的 使用display
超链接hover后点击失效,使用正确的书写顺序 link visited hover active
png 透明使用js代码改
select 在 ie6下遮盖 使用 iframe 嵌套
21、浏览器如何对 HTML5 的离线储存资源进行管理和加载
在线的情况下:浏览器发现 html 头部有 manifest 属性,它会请求 manifest 文件
- 如果是第一次访问页面 ,那么浏览器就会根据 manifest 文件的内容下载相应的资源并且进行离线存储
- 如果已经访问过页面并且资源已经进行离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的 manifest 文件与旧的 manifest 文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,就会重新下载文件中的资源并进行离线存储
离线的情况下:浏览器会直接使用离线存储的资源。
22、说一下 web worker
在 HTML 页面中,如果在执行脚本时,页面的状态是不可相应的,直到脚本执行完成后,页面才变成可相应。web worker 是运行在后台的 js,独立于其他脚本,不会影响页面的性能。 并且通过 postMessage 将结果回传到主线程。这样在进行复杂操作的时候,就不会阻塞主线程了。
如何创建 web worker:
- 检测浏览器对于 web worker 的支持性
- 创建 web worker 文件(js,回传函数等)
- 创建 web worker 对象
23、iframe 有那些优点和缺点
iframe 元素会创建包含另外一个文档的内联框架(即行内框架)
优点:
- 用来加载速度较慢的内容(如广告)
- 可以使脚本可以并行下载
- 可以实现跨子域通信
缺点:
- iframe 会阻塞主页面的 onload 事件
- 无法被一些搜索引擎索识别
- 会产生很多页面,不容易管理
24、DOCTYPE(文档类型) 的作用
DOCTYPE 是 HTML5 的文档类型声明,为了告诉浏览器(解析器)应该以什么(html或xhtml)文档类型定义来解析文档;
不同的渲染模式会影响浏览器对 CSS 代码甚? JavaScript 脚本的解析;
它必须声明在HTML文档的第一行;
浏览器渲染页面的两种模式:
-
CSS1Compat:标准模式(Strick mode),默认模式,浏览器使用W3C的标准解析渲染页面。在标准模式中,浏览器以其支持的最高标准呈现页面。
- BackCompat:怪异模式(混杂模式)(Quick mode),浏览器使用自己的怪异模式解析渲染页面。在怪异模式中,页面以一种比较宽松的向后兼容的方式显示。
25、meta标签
meta 标签由 name 和 content 属性定义,用来描述网页文档的属性,比如网页的作者,网页描述,关键词等,除了HTTP标准固定了一些name作为大家使用的共识,开发者还可以自定义name。