放个假,就断了。习惯,坚持才能成自然。
**1.移动端你是怎么布局的?**
首先移动端网页需要加入viewport <meta name="viewport" content="width=device-width,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
一、
1>百分比自适应。将长度单位转换为百分比来表示
2>rem,em自适应。用媒体查询的方法,确定在不同屏幕宽度下,改变fontsize,再用rem,em替代px作为单位实现自适应。
3>用js获取屏幕宽度后,按照固定比例缩小后作为rem的单位长度实现自适应
Zepto(function($){
var win = window, doc = document;
function setFontSize() {
var winWidth = $(window).width();
// 640宽度以上进行限制
var size = (winWidth / 640) * 100;
doc.documentElement.style.fontSize = (size < 100 ? size : 100) + 'px' ; };
//防止在html未加载完毕时执行,保证获取正确的页宽
setTimeout(function(){
// 初始化
setFontSize();
}, 200);});
二、利用bootastrap框架进行栅格布局
在不同的宽度区间内(响应式断点)提供宽度限制。当宽度变化时,采用不同的样式和布局。
**2.说说面向对象里的继承、原型链、作用域**
继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。另外,为子类追加新的属性和方法也是常见的做法。
原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为null的话,我们就称之为原型链。原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链。
最外层函数和在最外层函数外的变量拥有全局作用域,所有没有声明变量都自动声明拥有全局作用域,局部作用域只作用某些代码段内,只在内部可用。
在JavaScript中,函数也是对象,实际上,JavaScript里一切都是对象。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是[[Scope]],由ECMA-262标准第三版定义,该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。
**3.有没有封装过框架,在什么地方封装的?举个例子**
原理就是给jq的原型添加功能函数。例如ajax封装
**4.你知道jQuery里的ajax封装原理吗?**
function ajax(url, param, type) {
// 利用了jquery延迟对象回调的方式对ajax封装,使用done(),fail(),always()等方法进行链式回调操作 // 如果需要的参数更多,比如有跨域dataType需要设置为'jsonp'等等,可以考虑参数设置为对象
return $.ajax({
url: url,
data: param || {},
type: type || 'GET'
});
}