持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
1. HTML5中新增了哪些内容?
广义上的html5指的是最新一代前端开发技术的总称,包括html5,CSS3,新增的webAPI。
Html中新增了header,footer,main,nav等语义化标签,新增了video,audio媒体标签,新增了canvas画布。新增了一些标签属性,例如input的placeholder。
Css3中新增了:圆角,阴影,滤镜,vwvh单位,flex布局,媒体查询,过度和动画,伪类。
webAPI,新增了localStorage和sessionStorage,querySelector,webSocket,requestAnimationFrame,Worker(类似分线程),地理位置。
2. Css中Position定位都有哪些方式,分别是什么效果。
Static(默认), 静态定位,流式布局
Relative,相对定位,参与流式布局,可以使用left等在原有位置上进行位置调整。
Absolute,绝对定位,脱离文档流,相对于另一个元素进行定位。
Fixed,固定定位,脱离文档流,相对于浏览器窗口定位,不随页面滚动而改变位置。
3. Absolute定位的元素相对于哪个元素进行定位。
相对于离自己最近的、position为非static的祖先元素进行定位。
4. 前端页面中动画都有哪些实现方式,各自分别适用于哪些场景?
Transition:简单的动画,只需要在两个状态之间变化的动画。
keyframeAnimation:适合需要在多个状态连续进行的动画。
js动画:功能最强的动画,但是效率最低。
5. 怎么隐藏页面中的某个元素?
Display:none; 隐藏且不占用位置。
Visibility:hidden; 隐藏但保留位置。
6. 怎样实现在动画结束之后执行一段代码?
过度动画:监听transitionend事件。
关键帧动画:监听animationend事件。
Js动画:1,手写js动画时,直接在停止动画的代码之后添加要执行的代码,如果使用js动画工具库(velocity),则把要执行的代码写在动画结束时的回调函数中。
7.怎样得到浏览器窗口的宽度和高度?
clientHeight和clientWidth获取浏览器的可是窗口的高度,不包括滚动条
获取元素在浏览器中的位置:offsetTop和offsetLeft
8. 怎样解决js中回调函数多层嵌套问题 和 多异步任务并发执行问题。
多层嵌套问题:使用promise,使用*函数,使用async+await。
多异步任务并发执行问题:合并promise。
9. Js函数中的this究竟指向谁?怎样改变函数中this的指向。
谁调用,指向谁。构造函数中,this是正在创建的对象。
函数中的this是可以通过方法改变的。
Call ,call是函数对象的方法,作用是指定this,调用这个函数。
apply,和call基本一样,唯一的区别是,传参方式不同,aplly需要提供一个数组。
Bind,bind也是函数对象的方法,作用是生成一个新的函数,新的函数和原函数代码一样,但是里面的this是绑定过的。
10. 浏览器中事件传播的流程是什么?怎样阻止事件的传播?怎样阻止事件的默认行为。
事件触发后,先从根元素到叶子元素逐层捕获,然后再从叶子元素到根元素逐层冒泡。 e.stopPropergation , e.preventDefault
11. 怎样判断一个变量是什么类型的,怎么判断一个对象是属于哪个类的。
Typeof instanceof
12. 数组有哪些常用处理方法,字符串、数字有哪些常用处理方法。
数组:join,splice,push,slice,indexof,sort,concat,reverse,map,reduce,some,every,filter,foreach。
字符串:split,indexof,substr,substring,replace,trim,toUppercase,startsWith,
数字:tofixed。
Math: floor,ceil,round,random,abs,sqrt,pow,max,sin,
13. 怎样实现元素上下左右都居中?
1,实现元素本身内容居中:text-align:center+行高。或flex布局。
2,实现子元素在父元素中居中:绝对定位+上下左右设置0+margin:auto。绝对定位+left,top:50%+transform:translate:-50%。Flex布局。
14. 怎样在不使用新元素的情况下清除浮动?
在浮动元素的父元素上添加一个class,为这个class添加后缀.after样式,其中写content:””;display:block;clear:both
15. 什么是响应式页面,是依赖什么技术实现的。
能够根据不同的浏览器尺寸,显示不同的布局方式。依赖媒体查询实现。
16. 什么是元素盒模型,包含哪几部分?计算元素尺寸时从哪部分开始计算?
元素从结构上分为4层,内容,内间距,边框,外间距。
通过box-sizing设置计算方式,默认为content-box,及计算内容盒,可以设置为border-box,计算到边框盒。
17. 什么是原型和原型链?
Js中的对象都有一个属性叫做__ptoto__(也是一个对象),表示对象的原型。当访问对象中的属性或方法时,首先在对象本身中寻找,如果找不到则会在原型中寻找,原型中也找不到时会在原型的原型中寻找,直到最顶层为止。
js中的类(构造函数)都有一个prototype的属性,表示本类的原型类型,通过这个类实例化的对象(这个构造函数创建的对象), proto__都指向本类的prototype,从而实现了类方法的共享。一个类的prototype也是一个对象,它也有__proto,把它的__proto__指向另一个类的prototype时,那么这个类的对象就能访问另一个类中的方法,从而实现了方法的继承。
A类的prototype.__proto__指向另一个类B,B的prototype.__proto__又可以指向C,这种结构叫做原型链。
18. 闭包是什么?有什么作用?
当一个函数A的作用域被内部的B函数引用时,A函数的作用域就会被B函数闭包,当A函数执行完毕时,A函数的作用域也不会释放。
闭包可以实现对象的私有属性和私有方法。
闭包可以封装变量,从简减少对全局作用域的污染。
19. ES6中新增加了哪些特性?
箭头函数,字符串模板,let块级作用域声明方式,const常量,class声明类,结构赋值,Promise,ES6模块化。
20. 什么是跨域请求,怎样实现跨域请求。
一个页面发送到非本身来源的请求叫做跨域请求,浏览器只禁止ajax跨域请求。
三种跨域请求的方式:
1,cors,服务器在响应头中添加access control allow origin字段,浏览器在收到请求之后就会认为本次请求时允许跨域的。
2,JSONP,浏览器使用创建script标签的形式发送请求,将一个函数名作为请求参数发给服务器,服务器将需要返回的数据封装在一段js代码中(把前端发来的函数名进行调用,把要发送的数据作为参数),然后把这段代码返回给前端,前端立刻执行这个函数。
3,代理服务器,将请求先发送给代理服务器,代理服务器装发给目标服务器。