【备战大厂前端面试】之“我不会的HTML面试题”

HTML

一、html 常用的标签

hphrbrdivspanul liol liimgainputlabeltextareaselectformheadnavfooterarticlesectionasideaudiovideo

二、html 新特性

  1. 新增语义化标签
    header头部、footer底部、nav导航栏、article主要内容、aside侧边栏、section区块(有语义化的div)、meau菜单

  2. 新增媒体元素
    audio:音频

<audio src='' controls autoplay loop='true'></audio>

属性:

  • controls 控制面板
  • autoplay 自动播放
  • loop=‘true’ 循环播放
    video:视频
<video src='' poster='imgs/aa.jpg' controls></video>

属性:

  • poster:指定视频还没有完全下载完毕,或者用户还没有点击播放前显示的封面。默认显示当前视频文件的第一帧画面,当然通过 poster 也可以自己指定。
  • controls 控制面板
  • width
  • height
  1. 新增用于绘画的 canvas 属性
  2. 新增本地存储方式:sessionStoragelocalStorage
  3. 新的技术:webworkerwebsocket
  4. 新增表单控件:calendardatetimeemailurlsearch

三、对语义化的理解

语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化),也就是说用正确的标签做正确的事。

好处:

  • 对开发者友好,让人容易理解,利于代码可读性
  • 对机器友好,让搜索引擎更容易读懂,利于 SEO

四、说说 web worker

web worker 的作用是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,然后将一些任务分配给其运行。

在主线程运行的同时,Worker 线程在后台运行,两者互不干扰,等到 Worker 线程完成任务后就将结果返回给主线程。这样的好处是:一些计算密集型或高延迟的任务,被 Worker 线程负担了,主线程就会很流畅,不会被阻塞或拖慢(通过 postMessage 将结果传回到主线程即可)。

Worker 线程一旦新建成功,就会始终运行,不会被主线程上的活动(如用户点击按钮、提交表单)打断。这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,不应该过度使用,而且一旦使用完毕,就应该关闭。

这里有几个注意点:

  1. 同源限制
    分配给 Worker 线程的脚本文件,必须和主线程脚本文件同源。
  2. 脚本限制
    Worker 线程不能执行 alert() 方法和 confirm() 方法,但可以使用 XMLHttpRequest 对象发出 AJAX 请求。
  3. DOM 限制
    Worker 线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的 DOM 对象,也无法使用 documentwindowparent 这些对象。但是 Worker 线程可以使用 navigator 对象和 location 对象。
  4. 通信联系
    Worker 线程和主线程不在同一个上下文环境,不能直接通信,必须通过消息完成。
  5. 文件限制
    Worker 线程无法读取本地文件,即不能打开本机的文件系统,它所加载的脚本,必须来自于网络。

阮一峰:Web Worker 使用教程

五、HTML5 的离线储存的工作原理是什么?该怎么使用?如何进行管理和加载?

离线存储指的是:在用户没有连接网络时,可以正常访问站点或应用,当连接上网络后,更新用户机器上的缓存文件。

原理:html5 的离线缓存是基于一个新建的 .appcache 文件的缓存机制,即通过这个文件上的解析清单 离线缓存资源。之后当网络在离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

使用方法

  1. 首先要创建一个和 .html 文件同名的 .manifest 文件,然后在页面头部插入 manifest 属性:<html lang="en" manifest="index.manifest">
  2. cache.manifest 文件中编写需要离线存储的资源:
CACHE:
  js/app.js
  css/style.css
NETWORK:
  resourse/logo.png
FALLBACK:
  / /offline.html
  • CACHE: 表示需要离线存储的资源列表。由于包含 .manifest 文件的页面将被自动离线存储,所以不需要把页面自身也列出来。
  • NETWORK: 表示在它下面列出来的资源只有在在线的情况下才能访问,他们不会被离线存储。不过,如果在 CACHE 和 NETWORK 中有一个相同的资源,那么这个资源还是会被离线存储,也就是说 CACHE 的优先级更高。
  • FALLBACK: 表示如果访问第一个资源失败,那么就使用第二个资源来替换他。比如上面这个文件表示的就是如果访问根目录下任何一个资源失败了,那么就去访问 offline.html 。
  1. 在离线状态时,操作 window.applicationCache 进行离线缓存的操作。

更新缓存的方案:理所当然的就是更新 .manifest 文件

管理和加载

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

注意事项
(1)浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。
(2)如果 .manifest 文件,或者内部列举的某一个文件不能正常下载,整个更新过程都将失败,浏览器继续全部使用老的缓存。
(3)引用 .manifest 的 html 必须与 .manifest 文件同源,在同一个域下。
(4)FALLBACK 中的资源必须和 .manifest 文件同源。
(5)当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。
(6)站点中的其他页面即使没有设置 manifest 属性,请求的资源如果在缓存中也从缓存中访问。
(7)当 .manifest 文件发生改变时,资源请求本身也会触发更新。

六、DOCTYPE(文档类型)的作用?严格模式和混杂模式的区别?

!DOCTYPE 是用来告诉浏览器要以 HTML5 标准解析页面,如果不写,则进入混杂模式

  • 严格模式(标准模式):以 w3c 标准解析代码
  • 混杂模式(怪异模式):浏览器用自己的方式解析代码。混杂模式通常模拟老式浏览器的行为,以防止老站点无法工作

七、常⽤的 meta 标签有哪些

meta 标签由 name 和 content 属性定义,用来描述网页文档的属性。

属性描述例子
charsetHTML文档的编码类型utf-8
gbk
<meta charset="UTF-8" >
keywords页面关键词自定义<meta name="keywords" content="关键词" />
description页面描述自定义<meta name="description" content="页面描述内容" />
refresh页面重定向和刷新自定义<meta http-equiv="refresh" content="0;url=" />
viewport适配移动端,可以控制视口的大小和比例width viewport :宽度
height viewport :高度
initial-scale :初始缩放比例
maximum-scale :最大缩放比例
minimum-scale :最小缩放比例
user-scalable :是否允许用户缩放(yes/no)
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
robots搜索引擎索引方式all:文件将被检索,且页面上的链接可以被查询;
none:文件将不被检索,且页面上的链接不可以被查询;
index:文件将被检索;
follow:页面上的链接可以被查询;
noindex:文件将不被检索;
nofollow:页面上的链接不可以被查询。
<meta name="robots" content="index,follow" />

八、iframe 有那些优点和缺点

iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。
优点:

  • 用来加载速度较慢的内容(如广告)
  • 可以使脚本可以并行下载
  • 可以实现跨子域通信

缺点:

  • iframe 会阻塞主页面的 onload 事件
  • 无法被一些搜索引擎索识别
  • 会产生很多页面,不容易管理

九、defer 和 async 的区别

deferasync 都是 <script> 标签的属性。

从下图可以得知:
image.png
defer:

  • 在 script 标签添加 defer 属性,就可以让这个 script 外联的 js 变成异步加载。当 html 解析过程中碰到这个 script ,就会开辟一个新线程来下载脚本(这个脚本的下载和 html 的解析是同步的),当脚本下载完毕后不会立即执行,而是等待 html 解析完毕后才开始执行。
  • 所有 defer 的 js 代码都保证按顺序执行。

async:

  • 在 script 标签添加 async 属性后,html 解析过程中碰到这个 script ,也会开辟新线程来同步下载脚本,但下载完毕后会立即执行脚本,并中断 html 解析流程,等到脚本执行完之后再接着解析 html 。
  • async 的 js 代码不能保证按顺序执行,而是谁先下载完就先执行哪个脚本。

十、src 和 href 的区别

  • src 会将其指向的资源下载并应用到文档内,这时候它会暂停其他资源的下载,直到该资源加载、编译、执行完毕。
  • href 会与指向的网络资源建立链接关系,它会与其他资源并行下载,不会停止对当前文档的处理。

十一、行内元素、块级元素,以及两者的区别

  1. 行内元素有:abrciteemiimginputlabelselectspanstrongsubsuptextarea
  2. 块级元素有:divpformuloldlhhrtablemenu
  3. 区别:
  • 块级元素独占一行,行内元素不会
  • 块级元素可以设置宽高,行内元素不能
  • 块级元素可以包含行内元素和块级元素,行内元素不能包含块级元素。
  • 块级元素可以设置 marginpadding ,行内元素的水平方向的 padding-leftpadding-rightmargin-leftmargin-right 都产生边距效果,但是竖直方向的 padding-toppadding-bottommargin-topmargin-bottom 都不会产生边距效果。(水平方向有效,竖直方向无效)

若是设置为行内块级元素,它也不能独占一行,但能设置宽高

十二、title 与 h1 的区别、b 与 strong 的区别、i 与 em 的区别

title 属性没有明确意义只表示是个标题,h1 则表示层次明确的标题。
strong 标签有语义,是起到加重语气的效果,而 b 标签是没有的。虽然都能加粗字体,但搜索引擎更侧重 strong 标签。
i 内容展示为斜体,em 表示强调的文本

十三、label 的作用

<label> 标签是用来定义故意表单控件的关系。

作用:用于绑定一个表单元素,当点击 label 标签的时候,被绑定的表单元素就会获得输入焦点。

  • 使用方法1:
<label for="mobile">Number:</label>
<input type="text" id="mobile"/>
  • 使用方法2:
<label>Date:<input type="text"/></label>

十四、canvas 和 svg 的区别

  • canvas 是画布,适合图形密集型的游戏,不支持事件处理
  • svg 是矢量图,不依赖分辨率,不适合游戏,适合大型渲染区域(地图),支持事件处理

十五、渐进增强、优雅降级,以及两者的区别

  1. 渐进增强:针对低版本浏览器也能保证基础功能,然后对高级浏览器改进追加功能(向上兼容)。
  2. 优雅降级:一开始就构建站点的完整功能,然后针对浏览器进行测试和修复(向下兼容)。
  3. 区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值