前端面试题(1)

137 阅读3分钟

1. CSS的盒模型

两种盒模型区别,

一种是W3C的标准盒子模型,称为标准盒模型;
另一种是IE标准的盒子模型,称为怪异盒模型
在标准盒子模型中,width和height指的都是内容区域,盒子大小为:content+border+padding+margin
在怪异盒子模型中,width和height指的是除了margin之外的内容,盒子大小与标准盒模型一样。

解决方法:

通过属性box-sizing进行解析盒模型
(1) content-box可以理解为标准盒模型
(2) border-box可以理解为怪异盒模型

2. CSS 权重问题

继承或者*(通配符)< 标签选择器 < 类选择器和伪类选择器 < ID选择器 < 行内样式< !important 继承或者*(通配符)【0,0,0,0】
标签选择器 【0,0,0,1】
类选择器和伪类选择器 【0,0,1,0】
ID选择器 【0,1,0,0】
行内样式 【1,0,0,0】
!important 无穷大

3. 元素的隐藏问题

display:none占据的空间会消失 visibility:hidden占据的空间不会消失 overflow:hidden 防止溢出的用来
opacity:0 通过设置透明度显示的 position:通过设置定位,可以把元素定在可视区域的外面 display:none每次修改都会引起回流以及重绘,visibility:hidden仅仅会引起重绘,所以使用上display:none在性能上不是很占优势。

4. position定位

静态定位:static

默认值,不会脱离文档流,top,right,bottom,left属性使用不生效

绝对定位:absolute

脱离了文档流,绝对定位的关键是找同样是定位的参照物,如果找不到就是相对浏览器进行定位,不可以使用margin:auto,但是可以使用:top,right,bottom,left属性

相对定位:relative

移动参照的是元素偏移之前的位置,margin:auto有效,不会脱离文档流

固定定位:fixed

参照的是浏览器的窗口,会脱离文档流。页面滚动时,定位元素也不会进行移动

5. 清除浮动的原因

浮动元素脱离了文档流,不占据空间。

清除浮动的原因:

元素浮动之后,父元素的高度无法被撑开,影响了布局。 与浮动父子同级的非浮动盒子会跑到该浮动盒子的下面

清除浮动的方法:

给父盒子设置clear:both 给父盒子添加clearfix样式 给父盒子设置双伪元素法 给父盒子设置overflow:hidden

6. JavaScript的类型

基本类型:Number,String, Boolean, Null, undefined 引用类型:Function,Object,Array undefined:表示声明但没有初始化 出现情况:
1.访问声明,但是没有初始化 2.访问不存在的属性 3.访问函数的参数没有被显示的传递值 4.访问任何被设置为undefined值的变量 5.没有定义return的函数隐式返回 6.函数return没有显示的返回任何内容 null:表示准备用来保存对象,但还没有真正的保存对象,可以认为是一个空指针。 是原型链的终点

7. 判断数据类型

typeof
判断原始数据类型,除了null不可以识别,剩下的都可以,想要判断是否为null,可以通过===判断
instanceof
一般用来判断引用数据类型 Object.prototype.toString.call() 这个方法没有办法区别数字类型和数字对象类型,字符串和字符串对象类型,布尔类型和布尔对象类型

8. 伪数组和真数组的比较

伪数组:具有length属性,也可以按照索引存储数据,但是不具有数组的一系列方法。 可以使用Array.from()把伪数组转化成真数组

9. 作用域链

当代码在一个环境中执行时,就会产生变量对象的一个作用域链,由子级作用域返回父级作用域寻找变量,就叫做作用域链。可以一直寻找到最后一个对象。

10.事件的三要素

(1)事件源 (2)事件类型 (3)事件处理函数