一、盒模型
1.标准盒子模型:范围包括 margin、border、padding、content;
width = content ; 所占位置 margin*2+border*2+padding*2+content; 实际大小 border*2+padding*2+content;
2.IE盒子模型:范围包括 margin、border、padding、content;
width = border + padding + content ; 所占位置 margin*2+content; 实际大小 content;
注:添加DOCTYPE声明,使包括IE的所有浏览器使用‘标准盒子模型’;否则IE678会使用怪异模式
注:margin叠加合并:两个上下相邻的div,margin会合并,取较大的那个margin。(除 行内、浮动、定位 外)
二、box-sizing (IE7不支持)
box-sizing: content-box(默认) | padding-box(只有firefox支持) | border-box | inherit(继承自父集)
应用:1.有边框的盒子正常使用百分比
2.全局设置border-box,省去加减计算
三、flex布局
1.display: flex | inline-flex; (则float、clear、vertical-align失效)
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
注:可使用‘flex’,定义伸缩项目的根据容器剩余空间来决定伸缩项目的宽度.
flex于对应的空间成正比,如果左边flex:1,右边flex:2,伸缩容器将剩余的空间按比例分配给左边和右边。
四、作用域
js的作用域仅存在于函数范围内。变量提升:所有的 函数 和 变量声明 会被提升到最前面,并且变量声明永远在最前面。赋值在声明变量之后。
例1:var x=10; function x (){}; console.log(x); -----> var x; function x(){}; x=10; console.log(x);
例2:foo();bar();var foo = function(){};function bar(){};---->var foo; var bar; bar = function(){};foo() !error!; bar();foo = function(){};
五、
instanceof 运算符用来测试一个对象object 在其 原型链 中是否存在一个 构造函数的prototype属性。
object(对象) instanceof constructor(构造函数)
例1:function C(){}; var o = new C(); o instanceof C;//true o instanceof Object; //true
hasOwnProperty(): 判断对象是否具有指定的属性作为自身(不继承)的属性。该方法会忽略掉继承自原型链的属性。
Obj.hasOwnProperty(prop)
例1:o = new Object(); o.prop = 'exists'; o.hasOwnProperty('prop') //true