前端面试题总结三

一 以下哪些属性脱离了文档流

  A. static  B. relative  C. absolute D. fixed  E. float

答案是:  B.D.E

  • static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。
  •  relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
  •  absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。
  •  fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性定义。
  • 可以说是float是部分脱离文档流,而absolute是完全脱离文档流。也就是说,使用float属性时,其他元素会无视这个float元素,但是其他元素内的文本依然会为这个元素让出位置,环绕在周围(感觉类似于word文字环绕功能),所以称为部分无视。而使用absolute脱离文档流的元素,其他盒子无论是本身还是盒子内的文本都会无视这个元素,也就是完全脱离文档流。

二 以下的输出结果

 function fn(){
      var a=b=5
   }
  fn()
  console.log(a,b)

答案是:报错Uncaught ReferenceError: a is not defined

如果改为如下输出结果是什么呢
  function fn(){
     a=b=5
  }
  fn()
  alert(a)
  alert(b)

答案是:5,5 

   因为没有声明默认变量a和b是全局的

扫描二维码关注公众号,回复: 1271700 查看本文章

   var a
   function fn(){
     a=b=5
  }
  fn()
  alert(a)
  alert(b)
答案是:5,5   

    第一个a的输出是5很正常,但是为什么b的输出也是5呢,因为赋值是从右往左进行的,也就是说这一行先执行b=1,这时候b就是全局变量了,没有被var过。然后是var a = b;

    a被声明了,是局部变量。或者说var a=b=1;计算优先级 创建全局变量b=1,再在函数中定义一个变量a,a=b

三 以下的输出顺序

  console.log('one')
  setTimeout(function(){
    console.log('two')
  },0)
  console.log('three')

答案是:one three two

四 css常见的水平居中问题

 这个答案就不做介绍了,方法太多了,有知道宽高的,有不知道宽高的,如用translate等,还有flex布局方法的table布局方法的等等

猜你喜欢

转载自www.cnblogs.com/hongsusu/p/9118209.html