记录_面试题_HTML篇

55 阅读2分钟

1. 什么是浮动,有哪些属性,怎么清除浮动?

浮动float常用属性是left、right、none,设置了浮动的元素会脱离文档流,会导致盒子塌陷。

清除浮动的方法:

  • 给父级元素设置overflow:hidden
<div class="parent">
  <div class="float-element">浮动元素</div>
</div>

<style>
 .parent {
    overflow: auto;
  }
 .float-element {
    float: left;
  }
</style>
  • 给父级元素定义after伪类,设置clear: both
<div class="clearfix">
  <div class="float-element">浮动元素</div>
</div>

<style>
 .clearfix:after {
    content: "";
    display: table;
    clear: both;
  }
 .float-element {
    float: left;
  }
</style>

2. 行内元素与块级元素

区别

(1)行内元素不会以新行开始,而块级元素会新起一行

(2)行内元素只能包含文本和其他行内元素;而块级元素可以包含行内元素和其他块级元素。

(3)行内元素与块级元素属性的不同,主要是盒模型属性上:行内元素设置 width 无效,height 无效 (可以设置 line-height),设置 margin 和 padding 的上下不会对其他元素产生影响。

3. 什么是重绘和重排?(浏览器绘制过程)

重绘: 当一个元素的外观发生改变,但没有改变布局,重新把元素外观绘制出来的过程,叫做重绘。

重排:当DOM的变化影响了元素的位置和尺寸大小,浏览器需要重新计算元素的几何属性,这个过程叫做重排。

常见引起重排属性和方法:

  • 添加或者删除可见的 DOM 元素;
  • 元素尺寸改变——边距、填充、边框、宽度和高度
  • 内容变化,比如用户在 input 框中输入文字
  • 设置 style 属性的值

为了避免重绘和重排,可以采用以下的最佳实践:

  • 避免使用 table 布局,因为 table 布局的重排成本相对较高。
  • 避免使用 CSS 表达式,因为 CSS 表达式会在每次计算时重新计算其值。
  • 避免使用 JavaScript 代码修改 DOM 元素的几何结构,因为这会触发重排。
  • 避免在循环中修改 DOM 元素的样式,因为这会触发重排和重绘。

重排必定会发生重绘,重绘不一定会引发重排。重排所需的成本比重绘高的多,改变父节点里的子节点很可能会导致父节点的一系列重排。

4. disabled 和 readonly 的区别?

  • disabled 指当 input 元素加载时禁用此元素。input 内容不会随着表单提交
  • readonly 规定输入字段为只读。input 内容会随着表单提交

无论设置 readonly 还是 disabled,通过 js 脚本都能更改 input 的 value。

5. HTML5 有哪些新特性?

  • 绘画 canvas;
  • 用于媒介回放的 video 和 audio 元素;
  • 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;sessionStorage 的数据在浏览器关闭后自动删除;
  • 语意化更好的内容元素,比如 article、footer、header、nav、section;
  • 新的技术 webworker, websocket;