`Promise` 有哪些状态?

2019-01-06 回答 Promise 对象用于表示一个异步操作的最终状态(完成或失败)及其返回值。他有以下几种状态:pending:初始状态,完成或失败状态的前一个状态 fulfilled:操作成功完成 rejected:操作失败 pending 状态的 Promise 对象会触发 fulfilled/rejected 状态,在其状态处理方法中可以传入参数/失败信息。当操作成功完成时,Promise 对象的 then 方

等于操作符 `==` 和 `===` 有什么区别

2019-01-04 回答三个等号===表示严格相等,也就是说类型和值都必须相同。两个等号==会使其中一边的类型进行强制转换,使等号两边的类型都相等后再对数值进行比较。加分回答尽量使用全等操作符。因为其没有隐式转换,这样结果会比较容易预测、计算也会比较快除了等于操作符,还可以使用 Object.is 进行同值比较。他有着自己的特殊用途,不应说他更宽松或更严格于其他等于操作符附表一张 xy=====Objec

`+` 和 `~` 选择器有什么区别?

2019-01-02 回答毗邻兄弟选择器 + 可以选择紧随元素后的所有同级元素。如:div~p 可以选择紧随 div 元素后且与其同级的 p 元素。一般兄弟选择器~可选择元素后的所有同级元素。如:p~span 将会匹配同一父元素下,p 元素后的所有 span 元素。加分回答基本元素选择器*:通用元素选择器,匹配任何元素.footer:匹配 class="footer"的所有元素#comments:匹配 id="comments

CSS sprites 的优点及如何使用?

2019-01-01 回答 CSSsprites 将多张图片合并为一张图片,从而减少浏览器对 HTTP 的请求数量,进而减少网页的加载时间。即使在 HTTP/2 协议下,这依旧可以减少网页的加载时间。在 HTTP/1.1 中,每个 TCP 连接只允许一个请求。现代浏览器虽然可以打开多个(2-8)并行的 TCP 连接,但连接数量依旧有限。HTTP/2 允许浏览器和服务器之间的多个请求在一个 TCP 连接上进行复用。这意味着 TCP 连接

focus 有什么效果?应该怎么正确处理他们?

2018-12-30 回答像按钮或锚点标记等元素被选中时,该元素的外围就会出现轮廓。不同浏览器会呈现不同的效果,但一般是在元素周围显示蓝色的轮廓来表示他已经被选中。过去,很多人使用 outline:0 来移除元素被选中的效果。但是,这会让键盘侠们感到很不友好,因为选中效果被移除了。但是如果不移除的话,元素外围的蓝色轮廓有时候会让大多数人感觉不够舒适美观。Bootstrap 等 UI 框架一般采用更加美观的 box

简述一下 `@media` 的媒体类型

2018-12-28 回答@media 是可根据一个或多个基于媒体特征、媒体类型等条件来使用样式的规则。其包含以下四种媒体类型:all:适用于所有设备,默认选项 print:仅适用于打印设备 screen:仅适用于台式机、平板电脑、手机等屏幕 speech:仅适用于屏幕阅读器加分回答其余的媒体类型:tty,tv,projection,handheld,braille,embossed,aural 在 MediaQ

CSS 预处理器有什么优势?

2018-12-26 回答 CSS 预处理器添加了一些实用的原生 CSS 没有的的功能,并且他通过使用 DRY(Don'tRepeatYourself)原则使生成的 CSS 更加整洁和易于维护。他通过简洁的嵌套选择器语法减少了大量重复代码。变量、颜色函数(lighten,darken,transparentize 等)等附属工具,mixins 及循环使得 CSS 更像一个真正的编程语言,这使开发者编写复杂的 CSS 更加容易了

什么是 HTML5 存储?解释一下 `localStorage` 和 `sessionStorage`

2018-12-24 回答在 HTML5 中,页面可以在用户的浏览器中存储本地数据。这些数据以 name/value 的格式进行存储,且只能被存储该数据的网页访问。在 localStorage 和 sessionStorage 中存在生命周期的差异。通过 localStorage 存储的数据是持久化的:他不会过期,可以一直存储在用户的电脑上,除非 web 应用程序删除他或用户使用了浏览器中相关的缓存清除功能。sessionS

`rel="noopener"` 应在什么场景下使用,为什么?

2018-12-23 回答 rel="noopener"是 <a> 超链接标签的一个属性。他可以禁止打开的新页面中使用 window.opener 属性,这样一来打开的新页面就不能通过 window.opener 去操作你的页面。因此 rel="noopener"应在打开新页面的场景下使用,否则就会导致严重的安全漏洞。如新页面可以通过 window.opener.location=newURL 将你的页面导航至任何网址。

HTML 规范和浏览器实现存在什么区别?

2018-12-20 回答 HTML5 等 HTML 规范定义了一系列文档必须遵循的规则,以便规范能够“有效”的执行。此外,规范提供了浏览器必须如何去解析和渲染文档等诸如此类的说明。如果一个浏览器在处理文档上和规范中的规则保持一直,就可以说他已经支持了规范。到目前为止,还没有浏览器能够支持所有的 HTML5 规范(主流浏览器已经支持了绝大部分),这样一来,开发人员就必须考虑他们的产品或项目需要支持哪些浏览器,他们