整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端常见面试题总结-HTML篇

前端常见面试题总结-HTML篇

、关于HTML语义化,你知道都有哪些标签?

语义化就是让计算机能够快速读懂内容,高效的处理信息。搜索引擎只能通过标签来判断内容的语义,因为页面的很大一部分流量来自搜索引擎,要使页面尽可能地对搜索引擎友好,所以尽可能地使用语义化标签,如:

div是division分离,span是span范围,table是表格,ol是orderList有序列表,ul是unorderList无序列表,li是list item列表选项,html5进一步推进web语义化的发展,使用了一些新的标签有header、artical、address等。

2、HTML标签分类有哪些?都有啥特点?

  • 块级标签

默认宽度是100%

块级标签独占一行

块级标签可以使用height设置高度

常见块级标签:div、p、h1~h6、ol、ul、table、form等等。

  • 行级标签

默认宽度由内容撑开

行级标签不会自动换行,从左到右一次排列

行级标签height设置高度失效,高度由内容撑开。

常见行级标签:span、a、br、strong、lable、i、em。

  • 行内块标签

结合行级和块级的优点

可以设置元素的宽高

还可以将多个元素显示在一行从左到右一次排列。

常见行内块标签:img、input。


3、网页编码设置有几种方式?

Charset属性规定HTML文档的字符编码,常见的属性值有以下几个:

  • UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。用在网页上可以同一页面显示中文简体繁体以及其他语言。
  • GBK是汉字编码,是双字节码,可表示简体和繁体字。
  • ISO8859-2字符集,也称Latin-2,收集了东欧字符。


4、HTML的框架优缺点有哪些?

Html框架有iframe和frame两个,将多个页面通过一个浏览器窗口显示。

框架的优点:

  • 重载页面时不需要重载整个页面,只需要重载页面中的一个框架页,减少数据传输,加快网页加载速度。
  • Iframe使用简单不需要引入任何插件,主要用于不需要搜索引擎搜索的页面。
  • 方便制作导航,多个页面共用,方便开发和维护。

缺点:

  • 会产生很多页面,不容易管理。
  • 不方便打印,不能实现对frameset的打印。
  • 浏览器后退按钮失效。
  • 不利于SEO优化,不能为每个页面设置标题和关键字,影响搜索。
  • 多数小型移动设备无法完全显示框架。
  • 多框架页面会增加服务器的http请求。
  • H5已经抛弃该标签。


5、HTML5有哪些新特性,移除了哪些元素?

H5新增了图像、位置、存储、多任务等功能。

新增元素:

  • Canvas
  • video和audio元素
  • 本地离线缓存:localStorage长期存储,浏览器关闭之后数据不丢失,sessionStorage的数据在浏览器关闭后自动删除。
  • 语义化标签:artical、footer、header、nav、section
  • 位置API:Geolocation
  • 表单控件:calendar、date、time、email、search、url
  • 新技术:web worker(运行在后台的js,独立于其他脚本,不影响页面性能。可以在页面继续任何操作,此时web worker在后台运行)、web socket
  • 拖放API:drag、drop

移除元素:

  • 框架元素:frame、frameset、noframes。
  • 纯表现元素:basefont、font、center、u、big、strike、tt

Html5新增了 27 个元素,废弃了 16 个元素,根据现有的标准规范,把 HTML5 的元素按优先级定义为结构性属性、级块性元素、行内语义性元素和交互性元素 4 大类。


6、如何区分HTML和HTML5?

DOCUMENT声明方式是区分的重要元素。

  • Html声明方式:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd”>
  • Html5声明方式:<!DOCTYPE html>

根据新增加的结构、功能来区分。H5有好多新增语义化标签。


7、H5文件离线存储怎么使用,工作原理是什么?

在线情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问那么浏览器就会根据manifest文件的内容下载相应的资源,并进行离线存储。如果已经访问过并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面。然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有改变,就不会有任何操作,如果文件改变了,那么就会重新下载资源,并进行离线缓存。

页面头部加入manifest属性。如:<html manifest="demo.appcache">

在cache.manifest文件中编写离线存储的资源。


8、Cookies,sessionStorage和localStorage的区别?

共同点:都是保存在浏览器端,而且都是同源的。

区别:

  • Cookies是为了标识用户身份而存储在用户本地的数据,始终在同源http请求中携带,在浏览器与服务器间来回传递,而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
  • 存储大小差异。Cookie保存的数据很小,不能超过4k,而sessionStorage和localStorage保存数据大,可达到5M。
  • 存储有效期不同。Cookie在设置的cookie过期前始终有效,而sessionStorage仅在浏览器关闭之前有效,localStorage始终有效,与浏览器窗口没关系。
  • 作用域不同:cookie在所有同源窗口都是共享,sessionStorage不能在不同浏览器窗口上共享,localStorage在所有同源窗口都是共享的。


9、title与h1的区别、b与strong的区别、i与em的区别?

title属性没有明确意义,只表示标题,h1表示层次明确的标题,对页面信息抓取也有很大的影响。

strong标明重点内容,语气加强含义,b表示无意义的视觉表示

em表示强调文本,i是斜体,是无意义的视觉表示

视觉样式标签:b、u、i、s

语义样式标签:strong、em、ins、del、code


10、viewport 所有属性 ?

viewport是用户网页的可视区域,使用meta设置viewport时有很多属性,分别对以下各个属性介绍

  • width :设置layout viewport的宽度,为一个正整数,或字符串'device-width';
  • initial-scale:设置页面的初始缩放值,为一个数字,可以带小数。
  • minimum-scale:允许用户的最小缩放值,为一个数字,可以带小数。
  • maximum-scale:允许用户的最大缩放值,为一个数字,可以带小数。
  • height:设置layout viewport的高度,这个属性对我们并不重要,很少使用
  • user-scalable:是否允许用户进行缩放,值为‘no’或者‘yes’。
  • target-densitydpi:值可以为一个数值或者 high-dpi 、 medium-dpi、 low-dpi、 device-dpi 这几个字符串中的一个

安卓中还支持:target-densitydpi,表示目标设备的密度等级,作用是决定css中的1px 代表多少物理像素。


11、meta标签的name属性值?

name属性主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索机器人查找信息和分类信息用的。

Meta标签的name属性语法格式是:

<meta name=”参数”content=”具体的参数值”>

Name主要有以下几个参数:

  • Keywords(关键字):关键字用来告诉搜索引擎你网页的关键字是什么。
  • Description(网站内容描述):描述用来浏览器你的网页主要内容是什么。
  • Robots(机器人向导):robots用来搜索机器人哪些页面需要索引,哪些页面不需要索引。
  • Author(作者):添加网页作者信息。

Content的参数主要有name的参数来决定,如果是关键字的时候,多个关键字之间使用逗号隔开,一般使用5个关键字为宜;如果是描述的时候,描述长度一般控制在200字左右;如果是索引的时候,一般使用inde、noindex、none、all,默认是all。

,Doctype作用?标准模式与兼容模式各有什么区别?

(1)、<!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前。告知浏览器的解析器 用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

(2)、标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

2,HTML5 为什么只需要写 <!DOCTYPE HTML>?

HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);

而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

3,行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。

(1)行内元素有:a b span img input select strong(强调的语气)

(2)块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p

(3)常见的空元素:

<br> <hr> <img> <input> <link> <meta>

鲜为人知的是:

<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>

4,页面导入样式时,使用link和@import有什么区别?

(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;

(2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;

(3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;

5,介绍一下你对浏览器内核的理解?

主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。

(1)渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。

(2)JS引擎则:解析和执行javascript来实现网页的动态效果。

最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

6,常见的浏览器内核有哪些?

Trident内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称MSHTML]

Gecko内核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等

Presto内核:Opera7及以上。 [Opera内核原为:Presto,现为:Blink;]

Webkit内核:Safari,Chrome等。 [ Chrome的:Blink(WebKit的分支)]

7,html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

* HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。

绘画 canvas;

用于媒介回放的 video 和 audio 元素;

本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

sessionStorage 的数据在浏览器关闭后自动删除;

语意化更好的内容元素,比如 article、footer、header、nav、section;

表单控件,calendar、date、time、email、url、search;

新的技术webworker, websocket, Geolocation;

移除的元素:

纯表现的元素:basefont,big,center,font, s,strike,tt,u;

对可用性产生负面影响的元素:frame,frameset,noframes;

* 支持HTML5新标签:

IE8/IE7/IE6支持通过document.createElement方法产生的标签,

可以利用这一特性让这些浏览器支持HTML5新标签,

浏览器支持新标签后,还需要添加标签默认的样式。

当然也可以直接使用成熟的框架、比如html5shim;

<!--[if lt IE 9]>

<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>

<![endif]-->

* 如何区分HTML5: DOCTYPE声明\新增的结构元素\功能元素

8,简述一下你对HTML语义化的理解?

用正确的标签做正确的事情。

html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;

即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;

搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;

使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

9,HTML5的离线储存怎么使用,工作原理能不能解释一下?

在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。

原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

如何使用:

1、页面头部像下面一样加入一个manifest的属性;

2、在cache.manifest文件的编写离线存储的资源;

CACHE MANIFEST

#v0.11

CACHE:

js/app.js

css/style.css

NETWORK:

resourse/logo.png

FALLBACK:

/ /offline.html

3、在离线状态时,操作window.applicationCache进行需求实现。

10,浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?

在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。

离线的情况下,浏览器就直接使用离线存储的资源。

11,请描述一下 cookies,sessionStorage 和 localStorage 的区别?

cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。

sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

存储大小:

cookie数据大小不能超过4k。

sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

有期时间:

localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;

sessionStorage 数据在当前浏览器窗口关闭后自动删除。

cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

12,iframe有那些缺点?

*iframe会阻塞主页面的Onload事件;

*搜索引擎的检索程序无法解读这种页面,不利于SEO;

*iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。

使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript

动态给iframe添加src属性值,这样可以绕开以上两个问题。

13,Label的作用是什么?是怎么用的?

label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。

<label for="Name">Number:</label>

<input type=“text“name="Name" id="Name"/>

<label>Date:<input type="text" name="B"/></label>

14,如何实现浏览器内多个标签页之间的通信?

WebSocket、SharedWorker;

也可以调用localstorge、cookies等本地存储方式;

localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,

我们通过监听事件,控制它的值来进行页面信息通信;

注意quirks:Safari 在无痕模式下设置localstorge值时会抛出 QuotaExceededError 的异常;

15,如何在页面上实现一个圆形的可点击区域?

1、map+area或者svg

2、border-radius

3、纯js实现 需要求一个点在不在圆上简单算法、获取鼠标坐标等等

16,title与h1的区别、b与strong的区别、i与em的区别?

title属性没有明确意义只表示是个标题,H1则表示层次明确的标题,对页面信息的抓取也有很大的影响;

strong是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:<strong>会重读,而<B>是展示强调内容。

i内容展示为斜体,em表示强调的文本;

Physical Style Elements -- 自然样式标签

b, i, u, s, pre

Semantic Style Elements -- 语义样式标签

strong, em, ins, del, code

应该准确使用语义样式标签, 但不能滥用, 如果不能确定时首选使用自然样式标签。

17,你知道多少种Doctype文档类型?

该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。

HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。

XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。

Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而 Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。

18, HTML与XHTML——二者有什么区别?

区别:

1.所有的标记都必须要有一个相应的结束标记

2.所有标签的元素和属性的名字都必须使用小写

3.所有的XML标记都必须合理嵌套

4.所有的属性必须用引号""括起来

5.把所有<和&特殊符号用编码表示

6.给所有属性赋一个值

7.不要在注释内容中使“--”

8.图片必须有说明文字

19,<img>的title和alt有什么区别?

title是global attributes之一,用于为元素提供附加的advisory information。通常当鼠标滑动到元素上的时候显示。

alt是<img>的特有属性,是图片内容的等价描述,用于图片无法加载时显示、读屏器阅读图片。可提图片高可访问性,除了纯装饰图片外都必须设置有意义的值,搜索引擎会重点分析。

html的头部标签<head>和</head>中,可以嵌套用来表达页面内容的标签,除了用<title>指定文件标题,用<meta charset="UTF-8">指定页面编码之外,还有另外的好几个标签。特别是用于SEO的那些标签。

SEO是搜索引擎优化的意思,意思就是你在某搜索工具中,搜索某个内容时,为什么指向并跳转到你的网站中,而不是别的网站,这就涉及到SEO可了。如果想要搜索引擎搜索到你,你必须保证用户要搜索的内容出现在你的Meta说明中。

2.1 Meta

为搜索引擎定义的关键词,提供给SEO搜索。

<meta name="keywords" content="Python, 前端, 小程序, App,Java,嵌入式">

为网页定义描述内容,也是SEO的一部分。

<meta name="description" content="老陈说编程,编程界的刘德华">

页面定时刷新,在H5之前,实时更新页面数据的时,常用这种方法。但很不科学,因为浪费资源。在H5时,改用Websocket了。

<meta http-equiv="refresh" content="15">

定义页面作者是谁。

<meta name="author" content="老陈">

2.2 引入资源

在<head></head>中,用<link>标签,引入外部资源。一个是CSS文件,一个是icon。引入CSS文件如下。

<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

引入顶部icon的方式。

<link rel="shortcut icon" href="图片url">

2.3 引入脚本

引入共用的javascript文件。

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

2.4 页面资源

如果你定义的CSS或JavaScript代码,只当前页面应用,那可以在<head></head>中用<style></style>和</script>标签对。有关CSS和Javascript的应用,后面再说。

<head>
<style type="text/css">
    body {background-color:red}
</style>
<script type="text/javascript">
    document.write("老陈说编程");
</script>
</head>

好了,有关HTML头部标签常用的内容,也就这么多了。如果你喜欢,那就转发出去,如果你不喜欢,那就点个赞。你的转发和点赞,就是对老陈继续创作和分享最大的鼓励。

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注:老陈说编程。分享Python,前端(小程序)、App和嵌入式方面的干货。关注我,没错的。

#前端##程序员##HTML5##CSS##鸿蒙#