+-
前端面试题和答案

HTML 5

简称H5,是最新的第五代HTML标准。

语义化

H5 新增的标签能够让你更恰当地描述你的内容是什么,新增的语义化标签有<section>,<artical>,<footer>等等。

input和textarea的区别

input 是单行文本框,不可以换行,
textarea 是多行文本框,无value 属性

用一个div模拟textarea的实现

.main{
    width: 400px;
    min-height: 50px;
    max-height: 100px;
    _height: 100px; //IE6
    margin-left: auto;
    margin-right: auto;
    padding: 3px;
    outline: 0;
    border: 1px solid #a0b3d6;
    font-size: 12px;
    word-wrap: break-word;
    overflow-x: hidden;
    overflow-y: auto; //超过最大高度就出现滚动条
    _overflow-y: visible;
}
<div contenteditable="true" class="main">
    .....此处省略.....
</div>

CSS

盒模型

所有HTML元素都可以被看作一个盒子,它包括:边距,边框,填充,和实际内容。
image.png

flex 布局

弹性布局,任何一个容器都可以使用flex 布局,Webkit 内核的浏览器,必须加上-webkit前缀。

.box{
  display: -webkit-flex; /* Safari */
  display: flex;
}

css单位

单位有很多,举例:绝对长度和相对单位,绝对长度有px、cm等,相对单位rem,em,vh,vw 等等
菜鸟教程--CSS单位

css选择器

类选择器,id选择器,属性选择器,*选择器,标签选择器以及其他各种复杂选择器查看下面的链接。
菜鸟教程--所有选择器

层叠上下文

z-index 的理解

常见页面布局

浮动布局,定位布局,flex布局,grid布局,表格布局

响应式布局

@media 媒体查询
可以在css样式里直接写

@media 类型 and (条件1) and (条件二)
{

css样式

}

也可以使用@import 导入

@import url("css/moxie.css") all and (max-width:980px);

也可以在link里

<link rel="stylesheet" type="text/css" href="css/moxie.css" media="all and (max-width=980px)"/>

css预处理器,后处理器

预处理器:可以被转换为CSS文件,但是它们灵活性比CSS好许多
SassLESSStylus 是目前最主流的 CSS 预处理器。
CSS 后处理器 是对 CSS 进行处理,并最终生成 CSS 的 预处理器

css3新特性

太多了。
transition, animation, transform以及新选择器等等
之前记录的CSS3 新特性 :css3 新特性

display哪些取值

常见的 none,inline,inline-block,block以及更多

相邻的两个inline-block节点出现间隔

给父级盒子加上 font-size:0,然后给子元素加上相应的font-size 即可

meta viewport 移动端适配

viewport 是浏览器显示视图的区域,meta viewport标签可以让开发者控制显示页面内容的区域。

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

画三角形

通过设置宽高为0,设置border相关属性就可以实现三角形
border-color: transparent transparent #000 transparent;

1像素边框问题

百度一下

JS

原型/原型链/构造函数/实例/继承

有几种方式可以实现继承

五种:
对象冒充,call()方法方式,apply() 方法方式,原型链方式,混合方式
参考:五种实现继承的方式

arguments对象

JavaScript 没有重载,使用arguments 对象可以模拟重载,通过数组下标的方式访问实参。
arguments.length为函数实参个数,arguments.callee引用函数自身

数据类型判断

typeof 操作符可以判断数据类型,它返回表示数据类型的字符串(返回结果只能包number,boolean,string,function,object,undefined,symbol)
toString.call(testObj)
instanceof
更多方法

作用域链、闭包、作用域

原生Ajax 写法

IE7 以上以及其他浏览器都支持XMLHttpRequest 对象
XHR的用法
open()启动一个请求以备发送,接受三个参数,请求类型,请求的URL和是否异步发送的布尔值。
xhr.open('get','example.php',false)
调用send() 方法,接收一个参数,即请求体要发送的数据,如果不需要发送数据就传入null
xhr.send(null)
由于这次的请求是同步的,接下来的代码会等请求完成之后才会执行,在收到响应后,响应的数据会填充xhr对象的属性,相关属性的简介如下:
responseText:作为相应主体被返回的文本;
responseXML:如果响应的内容类型是“text/xml”或“application/xml”,这个属性一般将保存包含着响应数据的XML DOM文档;
status:响应的HTTP状态;
statusText:HTTP状态的说明;

完整的请求示例:(xhr 使用封装好的createXHR函数,高程三的572页)

xhr.open('get','example.txt',false);
xhr.send(null);
if((xhr.status>=200&&xhr.status<300)||xhr.status==304){
    alert(xhr.responseText)
}else{
    alert("Request was unsuccessfult:"+xhr.status);
}