1. 什么是 <!DOCTYPE>?是否需要在 HTML5 中使用?
参考答案:
它是 HTML 的文档声明,通过它告诉浏览器,使用哪一个 HTML 版本标准解析文档。
在浏览器发展的历史中,HTML 出现过很多个版本,不同版本在元素、属性等书写格式上略有差异,如果不预先告诉浏览器,浏览器就不知道我们的文档标准是什么,在这种情况下,大部分浏览器将开启最大兼容模式来解析网页,我们称之为怪异模式。这不仅会降低解析效率,而且会在解析过程中产生一些难以预知的 _bug_,所以文档声明是必须的。
而文档声明有多种书写格式,对应不同的 HTML 版本,<!DOCTYPE> 这种书写是告诉浏览器,整个文档使用 HTML5 的标准进行解析。
2. 什么是可替换元素,什么是非可替换元素,它们各自有什么特点?
参考答案:
可替换元素是指这样一种元素,它在页面中的大部分展现效果不由 CSS 决定。
比如 img 元素就是一个可替换元素,它在页面中显示出的效果主要取决于你连接的是什么图片,图片是什么它就展示什么,CSS 虽然可以控制图片的尺寸位置,但永远无法控制图片本身。
再比如,select 元素也是一个典型的可替换元素,它在页面上呈现的是用户操作系统上的下拉列表样式,因此,它的展现效果是由操作系统决定的。所以,同一个 select 元素,放到不同操作系统的电脑上会呈现不同的外观。
_img、video、audio_、大部分表单元素都属于可替换元素。
非可替换元素就是指的普通元素,它具体在页面上呈现什么,完全由 CSS 来决定。
3. src 和 href 的区别(京东)
参考答案:
它们都是 HTML 中特定元素的属性。
src 是 source 的缩写,它通常用于 img、video、audio、script 元素,通过 src 属性,可以指定外部资源的来源地址。
href 是 hyper reference 的缩写,意味「超引用」,它通常用于 a、link 元素,通过 href 属性,可以标识文档中引用的其他超文本。
4. 说说常用的 meta 标签
参考答案:
meta 标签提供关于 HTML 文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。
常用的 meta 标签的属性有:
- content ,设置或返回 meta 元素的 content 属性的值 。
- http-equiv*,把 *content 属性连接到一个 HTTP 头部。
- name*,把 *content 属性连接到某个名称。
关于 meta 标签,回答出常用的一些属性值即可,不用全部背下来。
具体的关于 meta 标签能够设置的属性,可以参阅:https://www.runoob.com/w3cnote/meta.html
5. 说说对 html 语义化的理解
参考答案:
- 去掉或者丢失样式的时候能够让页面呈现出清晰的结构
- 有利于 _SEO_:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
- 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
- 便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循 W3C 标准的团队都遵循这个标准,可以减少差异化。 HTML5 中新增加的很多标签(如:
、
<div id="header">
<h1>标题</h1>
<h2>专注Web前端技术</h2>
</div>
总结一下,总之就是:
- 用正确的标签做正确的事情!
- html 语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;
- 在没有样式 CCS 情况下也以一种文档格式显示,并且是容易阅读的。
- 搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 _SEO_。
- 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
6. label 的作用是什么?是怎么用的?
参考答案:
label 元素不会向用户呈现任何特殊效果。
不过,它为鼠标用户改进了可用性。
如果您在 label 元素内点击文本,就会触发此控件。
就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。
解析:
最常用 label 标签的地方,应该就是表单中选择性别的单选框了。例如:
<label> 标签的 for 属性应当与相关元素的 id 属性相同。
<form>
<label for="male">男</label>
<input type="radio" name="sex" id="male" />
<label for="female">女</label>
<input type="radio" name="sex" id="female" />
</form>
上面的代码中,当 label 和表单控件绑定后,用户不用必须点击单选框才能确定自己的选项,点击 label 所包裹的文字也能够自动聚焦绑定的表单控件。
7. iframe 框架有那些优缺点?
参考答案:
- iframe 会阻塞主页面的 Onload 事件;
- iframe 和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
- 使用 iframe 之前需要考虑这两个缺点。如果需要使用 iframe*,最好是通过 *javascript 动态给 iframe 添加 src 属性值,这样可以可以绕开以上两个问题。
8. HTML 与 XHTML 二者有什么区别,你觉得应该使用哪一个并说出理由。
参考答案:
HTML 与 XHTML 之间的差别,主要分为功能上的差别和书写习惯的差别两方面。
关于功能上的差别,主要是 XHTML 可兼容各大浏览器、手机以及 _PDA_,并且浏览器也能快速正确地编译网页。
由于 XHTML 的语法较为严谨,所以如果你是习惯松散结构的 HTML 编写者,那需要注意 XHTML 的规则。
下面列出了几条容易犯的错误,供理解。
- 所有标签都必须小写在 XHTML 中,所有的标签都必须小写,不能大小写穿插其中,也不能全部都是大写。
- 标签必须成双成对像是
…
、…、…标签等,当出现一个标签时,必须要有对应的结束标签,缺一不可,就像在任何程序语言中的括号一样 - 标签顺序必须正确标签由外到内,一层层包覆着,所以假设你先写 div 后写 h1*,结尾就要先写 *h1 后写 _div_。只要记住一个原则“先进后出”,先弹出的标签要后结尾。
- 所有属性都必须使用双引号在 XHTML 1.0 中规定连单引号也不能使用,所以全程都得用双引号。
- 不允许使用 *target=”_blank”*从 XHTML 1.1 开始全面禁止 target 属性,如果想要有开新窗口的功能,就必须改写为 rel=”external”*,并搭配 *JavaScript 实现此效果。
9. HTML5 的 form 如何关闭自动完成功能?
参考答案:
HTML 的输入框可以拥有自动完成的功能,当你往输入框输入内容的时候,浏览器会从你以前的同名输入框的历史记录中查找出类似的内容并列在输入框下面,这样就不用全部输入进去了,直接选择列表中的项目就可以了。
使用 autocomplete=”off”*(给不想要提示的 *form 或某个 input 设置为 _autocomplete=off_。)
很多时候,需要对客户的资料进行保密,防止浏览器软件或者恶意插件获取到;
可以在 input 中加入 autocomplete=“off” 来关闭记录系统需要保密的情况下可以使用此参数
提示:autocomplete 属性有可能在 form 元素中是开启的,而在 input 元素中是关闭的。
注意:autocomplete 适用于
- novalidate:如果使用该属性,则提交表单时不进行内容的验证。novalidate 属性适用于:
,以及以下类型的 标签:text, search, url, telephone, email, password, date pickers, range 以及 color。语法:novalidate=”novalidate”
_input_** 新属性**:
- _autocomplete_:同上
- autofocus*:规定输入字段在页面加载时是否获得焦点,加载完成后,光标马上定位在该 *input
- form:form 属性的值必须是其所属表单的 _id_。如需引用一个以上的表单,请使用空格分隔的列表。
- formaction*:属性覆盖 *form 元素的 action 属性,比如两个提交按钮的时候,一个是正常提交,一个是管理员提交。该属性适用于 type=”submit” 以及 type=”image”*。语法是 *formaction=”#”
- formenctype:formenctype 属性覆盖 form 元素的 enctype 属性。该属性与 type=”submit” 和 type=”image” 配合使用。属性规定在发送到服务器之前应该如何对表单数据进行编码。
- _formmethod_:覆盖表单的 method 属性。适用于 type=“submit” 和 type=“image”
- formnovalidate:formnovalidate 属性覆盖 form 元素的 novalidate 属性。如果使用该属性,则提交表单时按钮不会执行验证过程。
- formtarget*:覆盖表单的 *target 属性。适用于 type=”submit” 和 _type=”image”_, 该属性规定在何处打开 _action URL_。
- height 和 width:height 和 width 属性规定用于 image 类型的 标签的图像高度和宽度。
- list*:引用包含输入字段的预定义选项的 *datalist 。
- min 和 max:min 属性与 max 属性配合使用,可创建合法值范围,两个要一对用。语法是选择 0-10 数字,例如:
- multiple:如果使用该属性,则允许一个以上的值,比如上传文件的时候,设置这个属性后可以一次选择几个图片;multiple 属性适用于以下类型的 标签:email 和 file。
- pattern (regexp):描述了一个正则表达式用于验证 元素的值,pattern 属性适用于以下 类型:text, search, url, telephone, email 以及 _password_。
- placeholder*:提供可描述输入字段预期值的提示信息 (*hint)。该提示会在输入字段为空时显示,并会在字段获得焦点时消失。
- _required_:规定必需在提交之前填写输入字段。 如果使用该属性,则字段是必填(或必选)的。
- step*:为输入域规定合法的数字间隔。 如果 **step=”3”**,则合法的数是 *-3、0、3、6 等。step 属性可以与 max 和 min 属性创建一个区域值。
28. iframe 的作用
参考答案:
参考答案:
iframe 也称作嵌入式框架,嵌入式框架和框架网页类似,它可以把一个网页的框架和内容嵌入在现有的网页中。
优点
- 重载页面时不需要重载整个页面,只需要重载页面中的一个框架页(减少了数据的传输,增加了网页下载速度)
- 方便制作导航栏
缺点
- 会产生很多页面,不容易管理
- 浏览器的后退按钮无效
- 无法被一些搜索引擎索引到
- 多数小型的移动设备(PDA 手机)无法完全显示框架
- 由于上面诸多缺点,因此不符合标准网页设计的理念,已经被标准网页设计抛弃
目前框架的所有优点完全可以使用 Ajax 实现,因此已经没有必要使用 iframe 框架了。
29. img 上 title 与 alt
参考答案:
- alt*:如果无法显示图像,浏览器将显示 *alt 指定的内容
- title*:在鼠标移到元素上时显示 *title 的内容
两者之间的区别:
通常当⿏标滑动到元素上的时候显示 _title_。
alt 是 的特有属性,是图⽚内容的等价描述,⽤于图⽚⽆法加载时显示、读屏器 阅读图⽚。可提图⽚⾼可访问性,除了纯装饰图⽚外都必须设置有意义的值,搜索引擎会重点分析。
30. HTML5 新增哪些新特性 ?
参考答案:
HTML5 新增特性有:
- 拖拽释放
- 语义化更好的内容标签
- 视频、音频
- 画布
- 地理
- 本地离线存储
- 表单控件
31. 行内元素和块级元素区别,有哪些,怎样转换?(顶呱呱)
参考答案:
块级元素:
- 总是在新行上开始;
- 高度,行高以及外边距和内边距都可控制;
- 宽度缺省是它的容器的 _100%_,除非设定一个宽度。
- 它可以容纳内联元素和其他块元素
行内元素:
- 和其他元素都在一行上;
- 高,行高及外边距和内边距不可改变;
- 宽度就是它的文字或图片的宽度,不可改变
- 内联元素只能容纳文本或者其他内联元素
对行内元素,需要注意如下:
- 设置宽度 width 无效。
- 设置高度 height 无效,可以通过 line-height 来设置。
- 设置 margin 只有左右 margin 有效,上下无效。
- 设置 padding 只有左右 padding 有效,上下则无效。注意元素范围是增大了,但是对元素周围的内容是没影响的。
通过 display 属性对行内元素和块级元素进行切换(主要看第 2、3、4 个值):
html 中常见的块级元素:p、div、form、ul、ol、table
html 中常见的行内元素:a、img、span、button
32. HTML5 与 HTML4 的区别(华安永康)
参考答案:
1、语法简化
HTML、XHTML 的 DOCTYPE、html、meta、script 等标签,在 HTML5 中有大幅度的简化。
2、统一网页内嵌多媒体语法
以前,在网页中播放多媒体时,需要使用插件的方式来完成。有了 HTML5 之后,使用
3、新增了语义标签
为了增加网页的可读性,HTML5 增加了
4、HTML5 废除了一些旧标签
废除的大部分是网页美化方面的标签,例如:、、、、。对 框架,不能使用。
5、全新的表单设计
表单是网页设计者最常用的功能,HTML5 对表单做了很大的更改,不但新增了几项新的标签,对原来的
6、新增了
HTML5 新增了具有绘图功能的
7、新增许多新的 API
例如:querySelector、querySelectorAll*、拖拽相关 *Api
33. 如何处理 HTML5 新标签兼容问题
参考答案:
主要有两种方式:
方法 1:实现标签被识别
通过 document.createElement(tagName) 方法即可让浏览器识别新标签,浏览器支持新标签后,还可以为新标签添加 CSS 样式。
方法 2:JavaScript 解决方案
使用 html5shim 框架,在
中调用以下代码:<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->
当然也可以直接把这个文件下载到自己的网站上,但这个文件必须在 head 标签中调用。
34. h5 和 html5 区别
参考答案:
H5 是一个产品名词,包含了最新的 HTML5、CSS3、ES6 等新的技术来制作的应用。
HTML5 是一个技术名词,指代的就仅仅是第五代 _HTML_。
35. form 表单上传文件时需要进行什么样的声明
参考答案:
需要添加如下的声明:
enctype="multipart/form-data"
36. 哪个属性可以做到当鼠标悬停在图片上时显示出文字
参考答案:
title 属性。当我们为图片设置了 title 属性后,鼠标悬停在图片上面,就会显示出 title 属性所设置的值。
37. 如何在一张图片上的某一个区域做到点击事件
参考答案:
可以使用图片热区技术。步骤如下:
1、插入图片,并设置好图像的有关参数,且在 标记中设置参数 _usemap=”#Map”_,以表示对图像地图(_Map_)的引用; 2、用
示例代码如下:
<body>
<img src="url/to/your/image.jpg" alt="" usemap="#Map" />
<map name="Map" id="Map">
<area
alt=""
title=""
href="#"
shape="poly"
coords="65,71,98,58,114,90,108,112,79,130,56,116,38,100,41,76,52,53,83,34,110,33,139,46,141,75,145,101,127,115,113,133,85,132,82,131,159,117"
/>
<area
alt=""
title=""
href="#"
shape="poly"
coords="28,22,57,20,36,39,27,61"
/>
</map>
</body>
38. 行内元素有哪些?块级元素有哪些?空(void)元素有哪些?
参考答案:
- 行内元素:最大的特点就是共享一行,常见的有 span a em i b strong abbr input select 等
- 块级元素:最大的特点就是独占一行,常见的有 header footer nav section article aside div p ul li ol dl table 等
- 空元素:就是没有内容的 HTML 元素,比较常见的空元素有 img、link、meta、br、hr
39. 什么是锚点?
参考答案:
锚点(anchor*)是一种特殊连接,能定位到 *HTML 文档中某个特定位置,通过 HTML 元素的 id 来设置锚点。
40. 图片与 span 元素混排图像下方会出现几像素的空隙的原因是什么?
参考答案:
img 作为可替换元素,它没有自己的基线,如果与不可替换元素混合排列,其行盒底端与基线对齐。由于与基线对齐,图像下方就会出现几像素的空隙。
41. a 元素除了用于导航外,还可以有什么作用?
参考答案:
href 属性中的 url 可以是浏览器支持的任何协议,所以 a 可以用于手机拨号 10086、发送短信 等。
当然,a 元素最常见的两个应用就是做锚点和下载文件。
锚点可以在点击时快速定位到一个页面的某一个位置,而下载的原理在于 a 标签所对应的资源浏览器无法解析,于是浏览器会选择将其下载下来。