前端基础知识(看一眼就好)

63 阅读2分钟

前端基础知识点

1.事件委托

事件捕获

  • 事件捕获中,父级元素先触发,子集元素后触发
  • 事件会从最外层开始,直到具体的元素,比如click的捕获过程document->html->body->div->p

事件冒泡

  • 事件冒泡时,子元素先出发,父级元素后触发
  • 元素自身事件被触发后,如果父元素有相同的事件,那么元素本身的触发状态就会传递,就是冒到父元素,父元素相同事件也会一级级向外触发

事件代理

  • 事件委托,通俗地来讲,就是把一个元素响应事件(click、keydown......)的函数委托到另一个元素
  • 一般来讲,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数

优点

  • 减少了事件注册,节省了内存,如在 table 上代理所有 tr 的 click 事件
  • 简化了 dom 更新时的事件操作,如现在 table 内增加了一行 tr,不用再为这个 tr 添加事件了

缺点

  • 事件委托基于冒泡,不冒泡的事件无法委托,如 blur、focus、mouseenter、mouseleave、input、keydown、keyup
  • 可能被中间层阻止
  • 事件会频繁的被调用,比如 tr 的事件被代理到 body 上
  • 如果把所有事件都用事件委托,可能会出现事件误判,即不该触发事件的被绑定了

2.BFC(Block Formatting Context,块格式化上下文)

BFC的触发条件

  1. 根元素(<html>
  2. float值非none
  3. overflow值非visible
  4. display值为inline-block、table-cell、table-caption、flex、inline-flex
  5. position值为absolute、fixed

BFC的特性

  1. 属于同一个BFC的两个相邻容器的上下margin会重叠(重点)
  2. 计算BFC高度时浮动元素也参与计算(重点)
  3. BFC的区域不会与浮动容器发生重叠(重点)
  4. BFC内的容器在垂直方向依次排列
  5. 元素的margin-left与其包含块的border-left相接触
  6. BFC是独立容器,容器内部元素不会影响容器外部元素